From 8e01fbc97b419a612ab3efb9211472aacffa8aa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20Hermida?= Date: Tue, 3 Jul 2018 13:40:21 +0200 Subject: [PATCH] Update role filter data --- taiga/projects/userstories/services.py | 3 ++ tests/integration/test_userstories.py | 58 ++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/taiga/projects/userstories/services.py b/taiga/projects/userstories/services.py index a8aea950..aa333ee9 100644 --- a/taiga/projects/userstories/services.py +++ b/taiga/projects/userstories/services.py @@ -719,8 +719,11 @@ def _get_userstories_roles(project, queryset): ON ("userstories_userstory"."project_id" = "projects_project"."id") LEFT OUTER JOIN "epics_relateduserstory" ON "userstories_userstory"."id" = "epics_relateduserstory"."user_story_id" + LEFT OUTER JOIN "userstories_userstory_assigned_users" + ON "userstories_userstory_assigned_users"."userstory_id" = "userstories_userstory"."id" LEFT OUTER JOIN "projects_membership" ON "projects_membership"."user_id" = "userstories_userstory"."assigned_to_id" + OR "projects_membership"."user_id" = "userstories_userstory_assigned_users"."user_id" WHERE {where} ), "counters" AS ( diff --git a/tests/integration/test_userstories.py b/tests/integration/test_userstories.py index f79ca2fe..c33de815 100644 --- a/tests/integration/test_userstories.py +++ b/tests/integration/test_userstories.py @@ -1007,6 +1007,64 @@ def test_api_filters_data_with_assigned_users(client): response.data["assigned_users"]))["count"] == 1 +def test_api_filters_data_roles_with_assigned_users(client): + project = f.ProjectFactory.create() + + role1 = f.RoleFactory.create(project=project) + role2 = f.RoleFactory.create(project=project) + + user1 = f.UserFactory.create(is_superuser=True) + f.MembershipFactory.create(user=user1, project=project, role=role1) + user2 = f.UserFactory.create(is_superuser=True) + f.MembershipFactory.create(user=user2, project=project, role=role2) + user3 = f.UserFactory.create(is_superuser=True) + f.MembershipFactory.create(user=user3, project=project, role=role1) + + + # ---------------------------------------------------------------- + # | US | Owner | Assigned To | Assigned Users | Role | + # |-------#--------#-------------#----------------#--------------- + # | 0 | user2 | user2 | user2, user3 | role2, role1 | + # | 1 | user1 | None | None | None | + # | 2 | user1 | user1 | user1 | role1 | + # ---------------------------------------------------------------- + + us0 = f.UserStoryFactory.create(project=project, owner=user2, + assigned_to=user2, + assigned_users=[user2, user3],) + f.RelatedUserStory.create(user_story=us0) + us1 = f.UserStoryFactory.create(project=project, owner=user1, + assigned_to=None) + us2 = f.UserStoryFactory.create(project=project, owner=user1, + assigned_to=user1, + assigned_users=[user1],) + + url = reverse("userstories-filters-data") + "?project={}".format(project.id) + + client.login(user1) + + # No filter + response = client.get(url) + assert response.status_code == 200 + + assert next(filter(lambda i: i['id'] == user1.id, response.data["owners"]))["count"] == 2 + assert next(filter(lambda i: i['id'] == user2.id, response.data["owners"]))["count"] == 1 + + assert next(filter(lambda i: i['id'] is None, response.data["assigned_to"]))["count"] == 1 + assert next(filter(lambda i: i['id'] == user1.id, response.data["assigned_to"]))["count"] == 1 + assert next(filter(lambda i: i['id'] == user2.id, response.data["assigned_to"]))["count"] == 1 + + assert next(filter(lambda i: i['id'] == user1.id, + response.data["assigned_users"]))["count"] == 1 + assert next(filter(lambda i: i['id'] == user2.id, + response.data["assigned_users"]))["count"] == 1 + + assert next(filter(lambda i: i['id'] == role1.id, + response.data["roles"]))["count"] == 2 + assert next(filter(lambda i: i['id'] == role2.id, + response.data["roles"]))["count"] == 1 + + def test_get_invalid_csv(client): url = reverse("userstories-csv")