From fe4cddac305fa194e8f7e838af95e015b8f84a5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20Hermida?= Date: Thu, 27 Dec 2018 13:15:04 +0100 Subject: [PATCH] Test move and close oprevious sprint --- taiga/projects/milestones/validators.py | 11 +--- tests/integration/test_milestones.py | 79 ++++++++++++++++++++++--- 2 files changed, 71 insertions(+), 19 deletions(-) diff --git a/taiga/projects/milestones/validators.py b/taiga/projects/milestones/validators.py index 3e90ecf4..8036628d 100644 --- a/taiga/projects/milestones/validators.py +++ b/taiga/projects/milestones/validators.py @@ -29,7 +29,7 @@ from . import models class MilestoneExistsValidator: - def validate_sprint_id(self, attrs, source): + def validate_milestone_id(self, attrs, source): value = attrs[source] if not models.Milestone.objects.filter(pk=value).exists(): msg = _("There's no milestone with that id") @@ -56,15 +56,6 @@ class UpdateMilestoneBulkValidator(MilestoneExistsValidator, milestone_id = serializers.IntegerField() bulk_stories = _UserStoryMilestoneBulkValidator(many=True) - # def validate_milestone_id(self, attrs, source): - # filters = { - # "project__id": attrs["project_id"], - # "id": attrs[source] - # } - # if not Milestone.objects.filter(**filters).exists(): - # raise ValidationError(_("The milestone isn't valid for the project")) - # return attrs - def validate_bulk_stories(self, attrs, source): filters = { "project__id": attrs["project_id"], diff --git a/tests/integration/test_milestones.py b/tests/integration/test_milestones.py index d4072877..3e488f70 100644 --- a/tests/integration/test_milestones.py +++ b/tests/integration/test_milestones.py @@ -188,24 +188,85 @@ def test_api_update_milestone_in_bulk_userstories(client): is_admin=True) milestone1 = f.MilestoneFactory.create(project=project) milestone2 = f.MilestoneFactory.create(project=project) + us1 = f.create_userstory(project=project, milestone=milestone1, sprint_order=1) us2 = f.create_userstory(project=project, milestone=milestone1, sprint_order=2) - url = reverse("milestones-bulk-update-items", kwargs={"pk": milestone1.pk}) - - data = { - "project_id": project.id, - "sprint_id": milestone2.id, - "bulk_stories": [{"us_id": us2.id, "order": 2}] - } - - client.login(project.owner) assert project.milestones.get(id=milestone1.id).user_stories.count() == 2 + url = reverse("milestones-bulk-update-userstories", kwargs={"pk": milestone1.pk}) + data = { + "project_id": project.id, + "milestone_id": milestone2.id, + "bulk_stories": [{"us_id": us2.id, "order": 2}] + } + client.login(project.owner) + response = client.json.post(url, json.dumps(data)) + assert response.status_code == 204, response.data assert project.milestones.get(id=milestone1.id).user_stories.count() == 1 assert project.milestones.get(id=milestone2.id).user_stories.count() == 1 + +def test_api_move_userstories_to_another_sprint(client): + project = f.create_project() + f.MembershipFactory.create(project=project, user=project.owner, + is_admin=True) + milestone1 = f.MilestoneFactory.create(project=project) + milestone2 = f.MilestoneFactory.create(project=project) + + us1 = f.create_userstory(project=project, milestone=milestone1, + sprint_order=1) + us2 = f.create_userstory(project=project, milestone=milestone1, + sprint_order=2) + + assert project.milestones.get(id=milestone1.id).user_stories.count() == 2 + + url = reverse("milestones-move-userstories-to-sprint", kwargs={"pk": milestone1.pk}) + data = { + "project_id": project.id, + "milestone_id": milestone2.id, + "bulk_stories": [{"us_id": us2.id, "order": 2}] + } + client.login(project.owner) + + response = client.json.post(url, json.dumps(data)) + + assert response.status_code == 204, response.data + assert project.milestones.get(id=milestone1.id).user_stories.count() == 1 + assert project.milestones.get(id=milestone2.id).user_stories.count() == 1 + + +def test_api_move_userstories_to_another_sprint_close_previous(client): + project = f.create_project() + f.MembershipFactory.create(project=project, user=project.owner, + is_admin=True) + milestone1 = f.MilestoneFactory.create(project=project) + milestone2 = f.MilestoneFactory.create(project=project) + + closed_status = f.UserStoryStatusFactory.create(is_closed=True) + us1 = f.create_userstory(project=project, milestone=milestone1, + sprint_order=1, status=closed_status) + us2 = f.create_userstory(project=project, milestone=milestone1, + sprint_order=2) + + assert milestone1.user_stories.count() == 2 + assert not milestone1.closed + + url = reverse("milestones-move-userstories-to-sprint", kwargs={"pk": milestone1.pk}) + data = { + "project_id": project.id, + "milestone_id": milestone2.id, + "bulk_stories": [{"us_id": us2.id, "order": 2}] + } + client.login(project.owner) + + response = client.json.post(url, json.dumps(data)) + + assert response.status_code == 204, response.data + assert project.milestones.get(id=milestone1.id).user_stories.count() == 1 + assert project.milestones.get(id=milestone2.id).user_stories.count() == 1 + assert project.milestones.get(id=milestone1.id).closed