Update role filter data

remotes/origin/3.4.0rc
Álex Hermida 2018-07-03 13:40:21 +02:00 committed by Alex Hermida
parent 610938c026
commit 8e01fbc97b
2 changed files with 61 additions and 0 deletions

View File

@ -719,8 +719,11 @@ def _get_userstories_roles(project, queryset):
ON ("userstories_userstory"."project_id" = "projects_project"."id") ON ("userstories_userstory"."project_id" = "projects_project"."id")
LEFT OUTER JOIN "epics_relateduserstory" LEFT OUTER JOIN "epics_relateduserstory"
ON "userstories_userstory"."id" = "epics_relateduserstory"."user_story_id" 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" LEFT OUTER JOIN "projects_membership"
ON "projects_membership"."user_id" = "userstories_userstory"."assigned_to_id" ON "projects_membership"."user_id" = "userstories_userstory"."assigned_to_id"
OR "projects_membership"."user_id" = "userstories_userstory_assigned_users"."user_id"
WHERE {where} WHERE {where}
), ),
"counters" AS ( "counters" AS (

View File

@ -1007,6 +1007,64 @@ def test_api_filters_data_with_assigned_users(client):
response.data["assigned_users"]))["count"] == 1 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): def test_get_invalid_csv(client):
url = reverse("userstories-csv") url = reverse("userstories-csv")