def test_get_favourites_list(): fav_user = f.UserFactory() viewer_user = f.UserFactory() project = f.ProjectFactory(is_private=False, name="Testing project") role = f.RoleFactory( project=project, permissions=["view_project", "view_us", "view_tasks", "view_issues"]) membership = f.MembershipFactory(project=project, role=role, user=fav_user) project.add_watcher(fav_user) content_type = ContentType.objects.get_for_model(project) f.VoteFactory(content_type=content_type, object_id=project.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=project.id, count=1) user_story = f.UserStoryFactory(project=project, subject="Testing user story") user_story.add_watcher(fav_user) content_type = ContentType.objects.get_for_model(user_story) f.VoteFactory(content_type=content_type, object_id=user_story.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=user_story.id, count=1) task = f.TaskFactory(project=project, subject="Testing task") task.add_watcher(fav_user) content_type = ContentType.objects.get_for_model(task) f.VoteFactory(content_type=content_type, object_id=task.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=task.id, count=1) issue = f.IssueFactory(project=project, subject="Testing issue") issue.add_watcher(fav_user) content_type = ContentType.objects.get_for_model(issue) f.VoteFactory(content_type=content_type, object_id=issue.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=issue.id, count=1) assert len(get_favourites_list(fav_user, viewer_user)) == 8 assert len(get_favourites_list(fav_user, viewer_user, type="project")) == 2 assert len(get_favourites_list(fav_user, viewer_user, type="userstory")) == 2 assert len(get_favourites_list(fav_user, viewer_user, type="task")) == 2 assert len(get_favourites_list(fav_user, viewer_user, type="issue")) == 2 assert len(get_favourites_list(fav_user, viewer_user, type="unknown")) == 0 assert len(get_favourites_list(fav_user, viewer_user, action="watch")) == 4 assert len(get_favourites_list(fav_user, viewer_user, action="vote")) == 4 assert len(get_favourites_list(fav_user, viewer_user, q="issue")) == 2 assert len(get_favourites_list(fav_user, viewer_user, q="unexisting text")) == 0
def test_get_favourites_list_permissions(): fav_user = f.UserFactory() viewer_unpriviliged_user = f.UserFactory() viewer_priviliged_user = f.UserFactory() project = f.ProjectFactory(is_private=True, name="Testing project") role = f.RoleFactory( project=project, permissions=["view_project", "view_us", "view_tasks", "view_issues"]) membership = f.MembershipFactory(project=project, role=role, user=viewer_priviliged_user) content_type = ContentType.objects.get_for_model(project) f.VoteFactory(content_type=content_type, object_id=project.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=project.id, count=1) user_story = f.UserStoryFactory(project=project, subject="Testing user story") content_type = ContentType.objects.get_for_model(user_story) f.VoteFactory(content_type=content_type, object_id=user_story.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=user_story.id, count=1) task = f.TaskFactory(project=project, subject="Testing task") content_type = ContentType.objects.get_for_model(task) f.VoteFactory(content_type=content_type, object_id=task.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=task.id, count=1) issue = f.IssueFactory(project=project, subject="Testing issue") content_type = ContentType.objects.get_for_model(issue) f.VoteFactory(content_type=content_type, object_id=issue.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=issue.id, count=1) #If the project is private a viewer user without any permission shouldn' see any vote assert len(get_favourites_list(fav_user, viewer_unpriviliged_user)) == 0 #If the project is private but the viewer user has permissions the votes should be accesible assert len(get_favourites_list(fav_user, viewer_priviliged_user)) == 4 #If the project is private but has the required anon permissions the votes should be accesible by any user too project.anon_permissions = [ "view_project", "view_us", "view_tasks", "view_issues" ] project.save() assert len(get_favourites_list(fav_user, viewer_unpriviliged_user)) == 4
def test_get_favourites_list_valid_info_for_project(): fav_user = f.UserFactory() viewer_user = f.UserFactory() watcher_user = f.UserFactory() project = f.ProjectFactory(is_private=False, name="Testing project") project.add_watcher(watcher_user) content_type = ContentType.objects.get_for_model(project) vote = f.VoteFactory(content_type=content_type, object_id=project.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=project.id, count=1) project_vote_info = get_favourites_list(fav_user, viewer_user)[0] assert project_vote_info["type"] == "project" assert project_vote_info["action"] == "vote" assert project_vote_info["id"] == project.id assert project_vote_info["ref"] == None assert project_vote_info["slug"] == project.slug assert project_vote_info["subject"] == project.name assert project_vote_info["tags"] == project.tags assert project_vote_info["project"] == project.id assert project_vote_info["assigned_to"] == None assert project_vote_info["total_watchers"] == 1 assert project_vote_info["created_date"] == vote.created_date assert project_vote_info["project_name"] == project.name assert project_vote_info["project_slug"] == project.slug assert project_vote_info["project_is_private"] == project.is_private assert project_vote_info["assigned_to_username"] == None assert project_vote_info["assigned_to_full_name"] == None assert project_vote_info["assigned_to_photo"] == None assert project_vote_info["assigned_to_email"] == None assert project_vote_info["total_votes"] == 1
def test_get_favourites_list_valid_info_for_not_project_types(): fav_user = f.UserFactory() viewer_user = f.UserFactory() watcher_user = f.UserFactory() assigned_to_user = f.UserFactory() project = f.ProjectFactory(is_private=False, name="Testing project") factories = { "userstory": f.UserStoryFactory, "task": f.TaskFactory, "issue": f.IssueFactory } for object_type in factories: instance = factories[object_type](project=project, subject="Testing", tags=["test1", "test2"], assigned_to=assigned_to_user) instance.add_watcher(watcher_user) content_type = ContentType.objects.get_for_model(instance) vote = f.VoteFactory(content_type=content_type, object_id=instance.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=instance.id, count=3) raw_instance_vote_info = get_favourites_list(fav_user, viewer_user, type=object_type)[0] instance_vote_info = FavouriteSerializer(raw_instance_vote_info).data assert instance_vote_info["type"] == object_type assert instance_vote_info["action"] == "vote" assert instance_vote_info["id"] == instance.id assert instance_vote_info["ref"] == instance.ref assert instance_vote_info["slug"] == None assert instance_vote_info["name"] == None assert instance_vote_info["subject"] == instance.subject assert instance_vote_info["description"] == None assert instance_vote_info["assigned_to"] == instance.assigned_to.id assert instance_vote_info["status"] == instance.status.name assert instance_vote_info["status_color"] == instance.status.color tags_colors = {tc["name"]:tc["color"] for tc in instance_vote_info["tags_colors"]} assert "test1" in tags_colors assert "test2" in tags_colors assert instance_vote_info["is_private"] == None assert instance_vote_info["is_voted"] == False assert instance_vote_info["is_watched"] == False assert instance_vote_info["total_watchers"] == 1 assert instance_vote_info["total_votes"] == 3 assert instance_vote_info["project"] == instance.project.id assert instance_vote_info["project_name"] == instance.project.name assert instance_vote_info["project_slug"] == instance.project.slug assert instance_vote_info["project_is_private"] == instance.project.is_private assert instance_vote_info["assigned_to_username"] == instance.assigned_to.username assert instance_vote_info["assigned_to_full_name"] == instance.assigned_to.full_name assert instance_vote_info["assigned_to_photo"] != ""
def test_get_favourites_list_valid_info_for_not_project_types(): fav_user = f.UserFactory() viewer_user = f.UserFactory() watcher_user = f.UserFactory() assigned_to_user = f.UserFactory() project = f.ProjectFactory(is_private=False, name="Testing project") factories = { "userstory": f.UserStoryFactory, "task": f.TaskFactory, "issue": f.IssueFactory } for object_type in factories: instance = factories[object_type](project=project, subject="Testing", tags=["test1", "test2"], assigned_to=assigned_to_user) instance.add_watcher(watcher_user) content_type = ContentType.objects.get_for_model(instance) vote = f.VoteFactory(content_type=content_type, object_id=instance.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=instance.id, count=3) instance_vote_info = get_favourites_list(fav_user, viewer_user, type=object_type)[0] assert instance_vote_info["type"] == object_type assert instance_vote_info["action"] == "vote" assert instance_vote_info["id"] == instance.id assert instance_vote_info["ref"] == instance.ref assert instance_vote_info["slug"] == None assert instance_vote_info["subject"] == instance.subject assert instance_vote_info["tags"] == instance.tags assert instance_vote_info["project"] == instance.project.id assert instance_vote_info["assigned_to"] == assigned_to_user.id assert instance_vote_info["total_watchers"] == 1 assert instance_vote_info["created_date"] == vote.created_date assert instance_vote_info["project_name"] == instance.project.name assert instance_vote_info["project_slug"] == instance.project.slug assert instance_vote_info[ "project_is_private"] == instance.project.is_private assert instance_vote_info[ "assigned_to_username"] == assigned_to_user.username assert instance_vote_info[ "assigned_to_full_name"] == assigned_to_user.full_name assert instance_vote_info["assigned_to_photo"] == '' assert instance_vote_info[ "assigned_to_email"] == assigned_to_user.email assert instance_vote_info["total_votes"] == 3
def test_get_favourites_list(): fav_user = f.UserFactory() viewer_user = f.UserFactory() project = f.ProjectFactory(is_private=False, name="Testing project") role = f.RoleFactory(project=project, permissions=["view_project", "view_us", "view_tasks", "view_issues"]) membership = f.MembershipFactory(project=project, role=role, user=fav_user) project.add_watcher(fav_user) content_type = ContentType.objects.get_for_model(project) f.VoteFactory(content_type=content_type, object_id=project.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=project.id, count=1) user_story = f.UserStoryFactory(project=project, subject="Testing user story") user_story.add_watcher(fav_user) content_type = ContentType.objects.get_for_model(user_story) f.VoteFactory(content_type=content_type, object_id=user_story.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=user_story.id, count=1) task = f.TaskFactory(project=project, subject="Testing task") task.add_watcher(fav_user) content_type = ContentType.objects.get_for_model(task) f.VoteFactory(content_type=content_type, object_id=task.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=task.id, count=1) issue = f.IssueFactory(project=project, subject="Testing issue") issue.add_watcher(fav_user) content_type = ContentType.objects.get_for_model(issue) f.VoteFactory(content_type=content_type, object_id=issue.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=issue.id, count=1) assert len(get_favourites_list(fav_user, viewer_user)) == 8 assert len(get_favourites_list(fav_user, viewer_user, type="project")) == 2 assert len(get_favourites_list(fav_user, viewer_user, type="userstory")) == 2 assert len(get_favourites_list(fav_user, viewer_user, type="task")) == 2 assert len(get_favourites_list(fav_user, viewer_user, type="issue")) == 2 assert len(get_favourites_list(fav_user, viewer_user, type="unknown")) == 0 assert len(get_favourites_list(fav_user, viewer_user, action="watch")) == 4 assert len(get_favourites_list(fav_user, viewer_user, action="vote")) == 4 assert len(get_favourites_list(fav_user, viewer_user, q="issue")) == 2 assert len(get_favourites_list(fav_user, viewer_user, q="unexisting text")) == 0
def test_get_favourites_list_permissions(): fav_user = f.UserFactory() viewer_unpriviliged_user = f.UserFactory() viewer_priviliged_user = f.UserFactory() project = f.ProjectFactory(is_private=True, name="Testing project") role = f.RoleFactory(project=project, permissions=["view_project", "view_us", "view_tasks", "view_issues"]) membership = f.MembershipFactory(project=project, role=role, user=viewer_priviliged_user) content_type = ContentType.objects.get_for_model(project) f.VoteFactory(content_type=content_type, object_id=project.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=project.id, count=1) user_story = f.UserStoryFactory(project=project, subject="Testing user story") content_type = ContentType.objects.get_for_model(user_story) f.VoteFactory(content_type=content_type, object_id=user_story.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=user_story.id, count=1) task = f.TaskFactory(project=project, subject="Testing task") content_type = ContentType.objects.get_for_model(task) f.VoteFactory(content_type=content_type, object_id=task.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=task.id, count=1) issue = f.IssueFactory(project=project, subject="Testing issue") content_type = ContentType.objects.get_for_model(issue) f.VoteFactory(content_type=content_type, object_id=issue.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=issue.id, count=1) #If the project is private a viewer user without any permission shouldn' see # any vote assert len(get_favourites_list(fav_user, viewer_unpriviliged_user)) == 0 #If the project is private but the viewer user has permissions the votes should # be accesible assert len(get_favourites_list(fav_user, viewer_priviliged_user)) == 4 #If the project is private but has the required anon permissions the votes should # be accesible by any user too project.anon_permissions = ["view_project", "view_us", "view_tasks", "view_issues"] project.save() assert len(get_favourites_list(fav_user, viewer_unpriviliged_user)) == 4
def test_get_favourites_list_valid_info_for_not_project_types(): fav_user = f.UserFactory() viewer_user = f.UserFactory() watcher_user = f.UserFactory() assigned_to_user = f.UserFactory() project = f.ProjectFactory(is_private=False, name="Testing project") factories = { "userstory": f.UserStoryFactory, "task": f.TaskFactory, "issue": f.IssueFactory } for object_type in factories: instance = factories[object_type](project=project, subject="Testing", tags=["test1", "test2"], assigned_to=assigned_to_user) instance.add_watcher(watcher_user) content_type = ContentType.objects.get_for_model(instance) vote = f.VoteFactory(content_type=content_type, object_id=instance.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=instance.id, count=3) instance_vote_info = get_favourites_list(fav_user, viewer_user, type=object_type)[0] assert instance_vote_info["type"] == object_type assert instance_vote_info["action"] == "vote" assert instance_vote_info["id"] == instance.id assert instance_vote_info["ref"] == instance.ref assert instance_vote_info["slug"] == None assert instance_vote_info["subject"] == instance.subject assert instance_vote_info["tags"] == instance.tags assert instance_vote_info["project"] == instance.project.id assert instance_vote_info["assigned_to"] == assigned_to_user.id assert instance_vote_info["total_watchers"] == 1 assert instance_vote_info["created_date"] == vote.created_date assert instance_vote_info["project_name"] == instance.project.name assert instance_vote_info["project_slug"] == instance.project.slug assert instance_vote_info["project_is_private"] == instance.project.is_private assert instance_vote_info["assigned_to_username"] == assigned_to_user.username assert instance_vote_info["assigned_to_full_name"] == assigned_to_user.full_name assert instance_vote_info["assigned_to_photo"] == '' assert instance_vote_info["assigned_to_email"] == assigned_to_user.email assert instance_vote_info["total_votes"] == 3
def test_get_favourites_list_valid_info_for_project(): fav_user = f.UserFactory() viewer_user = f.UserFactory() watcher_user = f.UserFactory() project = f.ProjectFactory(is_private=False, name="Testing project", tags=['test', 'tag']) project.add_watcher(watcher_user) content_type = ContentType.objects.get_for_model(project) vote = f.VoteFactory(content_type=content_type, object_id=project.id, user=fav_user) f.VotesFactory(content_type=content_type, object_id=project.id, count=1) raw_project_vote_info = get_favourites_list(fav_user, viewer_user)[0] project_vote_info = FavouriteSerializer(raw_project_vote_info).data assert project_vote_info["type"] == "project" assert project_vote_info["action"] == "vote" assert project_vote_info["id"] == project.id assert project_vote_info["ref"] == None assert project_vote_info["slug"] == project.slug assert project_vote_info["name"] == project.name assert project_vote_info["subject"] == None assert project_vote_info["description"] == project.description assert project_vote_info["assigned_to"] == None assert project_vote_info["status"] == None assert project_vote_info["status_color"] == None tags_colors = {tc["name"]:tc["color"] for tc in project_vote_info["tags_colors"]} assert "test" in tags_colors assert "tag" in tags_colors assert project_vote_info["is_private"] == project.is_private assert project_vote_info["is_voted"] == False assert project_vote_info["is_watched"] == False assert project_vote_info["total_watchers"] == 1 assert project_vote_info["total_votes"] == 1 assert project_vote_info["project"] == None assert project_vote_info["project_name"] == None assert project_vote_info["project_slug"] == None assert project_vote_info["project_is_private"] == None assert project_vote_info["assigned_to_username"] == None assert project_vote_info["assigned_to_full_name"] == None assert project_vote_info["assigned_to_photo"] == None