Example #1
0
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
Example #2
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
Example #3
0
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
Example #4
0
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
Example #5
0
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"] != ""
Example #6
0
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
Example #7
0
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
Example #8
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
Example #9
0
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
Example #10
0
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