From 523d9dfad8dc1b67bb8acc1cf221c74ebae2a052 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20Hermida?= Date: Thu, 15 Nov 2018 17:50:06 +0100 Subject: [PATCH] Add tests update invalid milestone in bulk --- taiga/projects/issues/api.py | 2 +- taiga/projects/issues/services.py | 3 ++- taiga/projects/issues/validators.py | 1 + taiga/projects/tasks/services.py | 1 + tests/integration/test_issues.py | 29 +++++++++++++++++++++++++++++ tests/integration/test_tasks.py | 29 +++++++++++++++++++++++++++++ 6 files changed, 63 insertions(+), 2 deletions(-) diff --git a/taiga/projects/issues/api.py b/taiga/projects/issues/api.py index 17d4acfe..ac3d26a7 100644 --- a/taiga/projects/issues/api.py +++ b/taiga/projects/issues/api.py @@ -265,7 +265,7 @@ class IssueViewSet(AssignedToSignalMixin, OCCResourceMixin, VotedResourceMixin, self.check_permissions(request, "bulk_update_milestone", project) - ret = services.update_tasks_milestone_in_bulk(data["bulk_issues"], milestone) + ret = services.update_issues_milestone_in_bulk(data["bulk_issues"], milestone) return response.Ok(ret) diff --git a/taiga/projects/issues/services.py b/taiga/projects/issues/services.py index c371e319..ea697da3 100644 --- a/taiga/projects/issues/services.py +++ b/taiga/projects/issues/services.py @@ -84,7 +84,7 @@ def snapshot_issues_in_bulk(bulk_data, user): pass -def update_tasks_milestone_in_bulk(bulk_data: list, milestone: object): +def update_issues_milestone_in_bulk(bulk_data: list, milestone: object): """ Update the milestone some issues adding `bulk_data` should be a list of dicts with the following format: @@ -106,6 +106,7 @@ def update_tasks_milestone_in_bulk(bulk_data: list, milestone: object): # CSV ##################################################### + def issues_to_csv(project, queryset): csv_data = io.StringIO() fieldnames = ["id", "ref", "subject", "description", "sprint_id", "sprint", diff --git a/taiga/projects/issues/validators.py b/taiga/projects/issues/validators.py index 8a3cd59e..a3bc20d9 100644 --- a/taiga/projects/issues/validators.py +++ b/taiga/projects/issues/validators.py @@ -15,6 +15,7 @@ # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +from django.utils.translation import ugettext as _ from taiga.base.api import serializers from taiga.base.api import validators diff --git a/taiga/projects/tasks/services.py b/taiga/projects/tasks/services.py index cea16a42..780e12cc 100644 --- a/taiga/projects/tasks/services.py +++ b/taiga/projects/tasks/services.py @@ -144,6 +144,7 @@ def update_tasks_milestone_in_bulk(bulk_data: list, milestone: object): return task_milestones + ##################################################### # CSV ##################################################### diff --git a/tests/integration/test_issues.py b/tests/integration/test_issues.py index 53213d28..fb803b04 100644 --- a/tests/integration/test_issues.py +++ b/tests/integration/test_issues.py @@ -792,6 +792,35 @@ def test_api_update_milestone_in_bulk(client): assert response.data[i3.id] == milestone2.id +def test_api_update_milestone_in_bulk_invalid_milestone(client): + project = f.create_project() + f.MembershipFactory.create(project=project, user=project.owner, is_admin=True) + + milestone1 = f.MilestoneFactory(project=project) + milestone2 = f.MilestoneFactory() + + i1 = f.create_issue(project=project, milestone=milestone1) + i2 = f.create_issue(project=project, milestone=milestone1) + i3 = f.create_issue(project=project, milestone=milestone1) + + url = reverse("issues-bulk-update-milestone") + data = { + "project_id": project.id, + "milestone_id": milestone2.id, + "bulk_issues": [ + {"issue_id": i1.id}, + {"issue_id": i2.id}, + {"issue_id": i3.id} + ] + } + + client.login(project.owner) + response = client.json.post(url, json.dumps(data)) + + assert response.status_code == 400 + assert "milestone_id" in response.data + + def test_get_issues(client): user = f.UserFactory.create() project = f.ProjectFactory.create(owner=user) diff --git a/tests/integration/test_tasks.py b/tests/integration/test_tasks.py index 9c980b54..7143ef30 100644 --- a/tests/integration/test_tasks.py +++ b/tests/integration/test_tasks.py @@ -575,6 +575,35 @@ def test_api_update_milestone_in_bulk(client): assert response.data[task3.id] == milestone2.id +def test_api_update_milestone_in_bulk_invalid_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) + + milestone1 = f.MilestoneFactory(project=project) + milestone2 = f.MilestoneFactory() + task1 = f.create_task(project=project, milestone=milestone1) + task2 = f.create_task(project=project, milestone=milestone1) + task3 = f.create_task(project=project, milestone=milestone1) + + url = reverse("tasks-bulk-update-milestone") + + data = { + "project_id": project.id, + "milestone_id": milestone2.id, + "bulk_tasks": [{"task_id": task1.id, "order": 1}, + {"task_id": task2.id, "order": 2}, + {"task_id": task3.id, "order": 3}] + } + + client.login(project.owner) + + response = client.json.post(url, json.dumps(data)) + + assert response.status_code == 400 + assert "milestone_id" in response.data + + def test_get_invalid_csv(client): url = reverse("tasks-csv")