From ab59782103e643ef01b3bf2e1c8d1e6a4ecc5e98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20Hermida?= Date: Mon, 2 Jul 2018 12:55:13 +0200 Subject: [PATCH] Add tests & milestone to Issues bulk-create --- taiga/projects/issues/api.py | 9 ++++-- taiga/projects/issues/validators.py | 1 + tests/integration/test_issues.py | 45 +++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 3 deletions(-) diff --git a/taiga/projects/issues/api.py b/taiga/projects/issues/api.py index af8368a7..f16d234f 100644 --- a/taiga/projects/issues/api.py +++ b/taiga/projects/issues/api.py @@ -228,9 +228,12 @@ class IssueViewSet(OCCResourceMixin, VotedResourceMixin, HistoryResourceMixin, W raise exc.Blocked(_("Blocked element")) issues = services.create_issues_in_bulk( - data["bulk_issues"], project=project, owner=request.user, - status=project.default_issue_status, severity=project.default_severity, - priority=project.default_priority, type=project.default_issue_type, + data["bulk_issues"], milestone_id=data["milestone_id"], + project=project, owner=request.user, + status=project.default_issue_status, + severity=project.default_severity, + priority=project.default_priority, + type=project.default_issue_type, callback=self.post_save, precall=self.pre_save) issues = self.get_queryset().filter(id__in=[i.id for i in issues]) diff --git a/taiga/projects/issues/validators.py b/taiga/projects/issues/validators.py index 7523fa0b..3a8ff5d0 100644 --- a/taiga/projects/issues/validators.py +++ b/taiga/projects/issues/validators.py @@ -41,4 +41,5 @@ class IssueValidator(AssignedToValidator, WatchersValidator, EditableWatchedReso class IssuesBulkValidator(ProjectExistsValidator, validators.Validator): project_id = serializers.IntegerField() + milestone_id = serializers.IntegerField() bulk_issues = serializers.CharField() diff --git a/tests/integration/test_issues.py b/tests/integration/test_issues.py index 5495dd81..64190da7 100644 --- a/tests/integration/test_issues.py +++ b/tests/integration/test_issues.py @@ -710,3 +710,48 @@ def test_api_validator_assigned_to_when_create_issues(client): response = client.json.post(url, json.dumps(data)) assert response.status_code == 400, response.data + + +def test_create_issue_in_milestone(client): + user = f.UserFactory.create() + project = f.ProjectFactory.create(owner=user, default_task_status=None) + project.default_issue_status = f.IssueStatusFactory.create(project=project) + f.MembershipFactory.create(project=project, user=user, is_admin=True) + milestone = f.MilestoneFactory(project=project) + project.save() + + url = reverse("issues-list") + + data = {"subject": "Test issue with milestone", "project": project.id, + "milestone": milestone.id} + client.login(user) + response = client.json.post(url, json.dumps(data)) + assert response.status_code == 201 + assert response.data['status'] == project.default_issue_status.id + assert response.data['project'] == project.id + assert response.data['milestone'] == milestone.id + + +def test_api_create_in_bulk_with_status_milestone(client): + user = f.UserFactory.create() + project = f.ProjectFactory.create(owner=user, default_task_status=None) + f.MembershipFactory.create(project=project, user=user, is_admin=True) + + project.default_issue_status = f.IssueStatusFactory.create(project=project) + project.save() + milestone = f.MilestoneFactory(project=project) + + url = reverse("issues-bulk-create") + data = { + "bulk_issues": "Issue #1\nIssue #2", + "project_id": project.id, + "milestone_id": milestone.id, + "status_id": project.default_issue_status.id + } + + client.login(user) + response = client.json.post(url, json.dumps(data)) + + assert response.status_code == 200 + assert response.data[0]["status"] == project.default_issue_status.id + assert response.data[0]["milestone"] == milestone.id