def test_detail_view_private_visible_to_initiator(client, phase_factory, idea_factory): phase, module, project, idea = setup_phase(phase_factory, idea_factory, phases.FeedbackPhase) idea.module.project.is_public = False idea.module.project.save() url = idea.get_absolute_url() user = idea.project.organisation.initiators.first() client.login(username=user.email, password='******') response = client.get(url) assert response.status_code == 200
def test_pre_phase(phase_factory, poll_factory, question, choice, vote, user): phase, module, project, _ = setup_phase(phase_factory, poll_factory, phases.VotingPhase) anonymous, moderator, initiator = setup_users(project) assert project.is_public with freeze_pre_phase(phase): assert not rules.has_perm(perm_name, anonymous, module) assert not rules.has_perm(perm_name, user, module) assert rules.has_perm(perm_name, moderator, module) assert rules.has_perm(perm_name, initiator, module)
def test_phase_active(phase_factory, live_question_factory, user): phase, _, project, item = setup_phase(phase_factory, live_question_factory, phases.IssuePhase) anonymous, moderator, initiator = setup_users(project) assert project.is_public with freeze_phase(phase): assert not rules.has_perm(perm_name, anonymous, item) assert not rules.has_perm(perm_name, user, item) assert rules.has_perm(perm_name, moderator, item) assert rules.has_perm(perm_name, initiator, item)
def test_detail_view_private_not_visible_anonymous(client, phase_factory, subject_factory): phase, module, project, subject = setup_phase(phase_factory, subject_factory, phases.DebatePhase) subject.module.project.access = Access.PRIVATE subject.module.project.save() url = subject.get_absolute_url() response = client.get(url) assert response.status_code == 302 assert redirect_target(response) == 'account_login'
def test_edit_view(client, phase_factory): phase, module, project, item = setup_phase(phase_factory, None, CommentPhase) initiator = module.project.organisation.initiators.first() url = component.get_base_url(module) client.login(username=initiator.email, password='******') response = client.get(url) assert_template_response( response, '{{ cookiecutter.project_app_prefix }}_documents/document_dashboard.html' )
def test_phase_active(phase_factory, user): phase, module, project, _ = setup_phase(phase_factory, None, phases.CollectPhase) anonymous, moderator, initiator = setup_users(project) assert project.is_public with freeze_phase(phase): assert not rules.has_perm(perm_name, anonymous, module) assert rules.has_perm(perm_name, user, module) assert rules.has_perm(perm_name, moderator, module) assert rules.has_perm(perm_name, initiator, module)
def test_phase_active(phase_factory, map_idea_factory, user): phase, _, project, item = setup_phase(phase_factory, map_idea_factory, phases.CollectPhase) anonymous, moderator, initiator = setup_users(project) assert project.is_public with freeze_phase(phase): assert rules.has_perm(perm_name, anonymous, item) assert rules.has_perm(perm_name, user, item) assert rules.has_perm(perm_name, moderator, item) assert rules.has_perm(perm_name, initiator, item)
def test_list_view(client, phase_factory, map_idea_factory, organisation): phase, module, project, mapidea = setup_phase(phase_factory, map_idea_factory, phases.FeedbackPhase) phase_2, module_2, project_2, mapidea_2 = setup_phase( phase_factory, map_idea_factory, phases.FeedbackPhase) url = project.get_absolute_url() with freeze_phase(phase): response = client.get(url) assert_template_response(response, 'a4_candy_mapideas/mapidea_list.html') assert response.status_code == 200 assert mapidea in response.context_data['mapidea_list'] assert mapidea_2 not in response.context_data['mapidea_list'] assert response.context_data['mapidea_list'][0].comment_count == 0 assert (response.context_data['mapidea_list'][0].positive_rating_count == 0) assert (response.context_data['mapidea_list'][0].negative_rating_count == 0)
def test_chapter_detail_view(client, phase_factory, chapter_factory, organisation): phase, module, project, item = setup_phase( phase_factory, None, phases.CommentPhase) chapter_factory(module=module, weight=0) chapter = chapter_factory(module=module, weight=1) url = chapter.get_absolute_url() with freeze_phase(phase): response = client.get(url) assert_template_response( response, 'a4_candy_documents/chapter_detail.html')
def test_detail_view_private_visible_to_initiator(client, phase_factory, topic_factory): phase, module, project, topic = setup_phase(phase_factory, topic_factory, phases.PrioritizePhase) topic.module.project.access = Access.PRIVATE topic.module.project.save() url = topic.get_absolute_url() user = topic.project.organisation.initiators.first() client.login(username=user.email, password='******') response = client.get(url) assert response.status_code == 200
def test_detail_view_private_not_visible_anonymous(client, phase_factory, map_idea_factory): phase, module, project, mapidea = setup_phase(phase_factory, map_idea_factory, phases.FeedbackPhase) mapidea.module.project.is_public = False mapidea.module.project.save() url = mapidea.get_absolute_url() response = client.get(url) assert response.status_code == 302 assert redirect_target(response) == 'account_login'
def test_pre_phase(phase_factory, chapter_factory, user): phase, _, project, item = setup_phase(phase_factory, chapter_factory, phases.CommentPhase) anonymous, moderator, initiator = setup_users(project) assert project.is_public with freeze_pre_phase(phase): assert not rules.has_perm(perm_name, anonymous, item) assert not rules.has_perm(perm_name, user, item) assert rules.has_perm(perm_name, moderator, item) assert rules.has_perm(perm_name, initiator, item)
def test_pre_phase(phase_factory, topic_factory, user): phase, _, project, item = setup_phase(phase_factory, topic_factory, phases.PrioritizePhase) anonymous, moderator, initiator = setup_users(project) assert project.is_public with freeze_pre_phase(phase): assert rules.has_perm(perm_name, anonymous, item) assert rules.has_perm(perm_name, user, item) assert rules.has_perm(perm_name, moderator, item) assert rules.has_perm(perm_name, initiator, item)
def test_paragraph_detail_view(client, phase_factory, chapter_factory, paragraph_factory): phase, module, project, item = setup_phase(phase_factory, chapter_factory, phases.CommentPhase) paragraph = paragraph_factory(chapter=item) url = paragraph.get_absolute_url() with freeze_phase(phase): response = client.get(url) assert_template_response( response, '{{ cookiecutter.project_app_prefix }}_documents/paragraph_detail.html' )
def test_chapter_detail_view(client, phase_factory, chapter_factory): phase, module, project, item = setup_phase(phase_factory, None, phases.CommentPhase) chapter_factory(module=module, weight=0) chapter = chapter_factory(module=module, weight=1) url = chapter.get_absolute_url() with freeze_phase(phase): response = client.get(url) assert_template_response( response, '{{ cookiecutter.project_app_prefix }}_documents/chapter_detail.html' )
def test_post_phase_project_archived(phase_factory, map_idea_factory, user): phase, _, project, item = setup_phase(phase_factory, map_idea_factory, phases.RatingPhase, module__project__is_archived=True) anonymous, moderator, initiator = setup_users(project) assert project.is_archived with freeze_post_phase(phase): assert not rules.has_perm(perm_name, anonymous, item) assert not rules.has_perm(perm_name, user, item) assert rules.has_perm(perm_name, moderator, item) assert rules.has_perm(perm_name, initiator, item)
def test_phase_active_project_draft(phase_factory, idea_factory, user): phase, _, project, item = setup_phase(phase_factory, idea_factory, phases.CollectPhase, module__project__is_draft=True) anonymous, moderator, initiator = setup_users(project) assert project.is_draft with freeze_phase(phase): assert not rules.has_perm(perm_name, anonymous, item) assert not rules.has_perm(perm_name, user, item) assert rules.has_perm(perm_name, moderator, item) assert rules.has_perm(perm_name, initiator, item)
def test_detail_view_private_visible_to_moderator(client, phase_factory, map_idea_factory): phase, module, project, mapidea = setup_phase(phase_factory, map_idea_factory, phases.FeedbackPhase) mapidea.module.project.access = Access.PRIVATE mapidea.module.project.save() url = mapidea.get_absolute_url() user = mapidea.project.moderators.first() client.login(username=user.email, password='******') response = client.get(url) assert response.status_code == 200
def test_detail_view_private_visible_to_moderator(client, phase_factory, subject_factory): phase, module, project, subject = setup_phase(phase_factory, subject_factory, phases.DebatePhase) subject.module.project.access = Access.PRIVATE subject.module.project.save() url = subject.get_absolute_url() user = subject.project.moderators.first() client.login(username=user.email, password='******') response = client.get(url) assert response.status_code == 200
def test_detail_view(client, phase_factory, map_idea_factory): phase, module, project, mapidea = setup_phase(phase_factory, map_idea_factory, phases.FeedbackPhase) url = mapidea.get_absolute_url() with freeze_phase(phase): response = client.get(url) assert_template_response( response, '{{ cookiecutter.project_app_prefix }}_mapideas/mapidea_detail.html' ) assert response.status_code == 200
def test_post_phase_project_archived(phase_factory, user): phase, module, project, _ = setup_phase(phase_factory, None, phases.CollectPhase, module__project__is_archived=True) anonymous, moderator, initiator = setup_users(project) assert project.is_archived with freeze_post_phase(phase): assert not rules.has_perm(perm_name, anonymous, module) assert not rules.has_perm(perm_name, user, module) assert rules.has_perm(perm_name, moderator, module) assert rules.has_perm(perm_name, initiator, module)
def test_detail_view_private_not_visible_normal_user(client, user, phase_factory, topic_factory): phase, module, project, topic = setup_phase(phase_factory, topic_factory, phases.PrioritizePhase) topic.module.project.is_public = False topic.module.project.save() assert user not in topic.module.project.participants.all() client.login(username=user.email, password='******') url = topic.get_absolute_url() response = client.get(url) assert response.status_code == 403
def test_phase_active(phase_factory, idea_factory, user, member_factory): phase, _, project, item = setup_phase(phase_factory, idea_factory, phases.CollectPhase) anonymous, moderator, initiator = setup_users(project) member = member_factory(organisation=project.organisation) assert project.is_public with freeze_phase(phase): assert not rules.has_perm(perm_name, anonymous, item) assert rules.has_perm(perm_name, user, item) assert rules.has_perm(perm_name, member.member, item) assert rules.has_perm(perm_name, moderator, item) assert rules.has_perm(perm_name, initiator, item)
def test_pre_phase(phase_factory, user, member_factory): phase, module, project, _ = setup_phase(phase_factory, None, phases.CommentPhase) anonymous, moderator, initiator = setup_users(project) member = member_factory(organisation=project.organisation) assert project.is_public with freeze_pre_phase(phase): assert not rules.has_perm(perm_name, anonymous, module) assert not rules.has_perm(perm_name, user, module) assert not rules.has_perm(perm_name, member.member, module) assert rules.has_perm(perm_name, moderator, module) assert rules.has_perm(perm_name, initiator, module)
def test_phase_active(phase_factory, poll_factory, user): phase, _, project, item = setup_phase(phase_factory, poll_factory, phases.VotingPhase) anonymous, moderator, initiator = setup_users(project) creator = item.creator assert project.is_public with freeze_phase(phase): assert not rules.has_perm(perm_name, anonymous, item) assert not rules.has_perm(perm_name, user, item) assert not rules.has_perm(perm_name, creator, item) assert rules.has_perm(perm_name, moderator, item) assert rules.has_perm(perm_name, initiator, item)
def test_phase_active_project_draft(phase_factory, user): phase, module, project, _ = setup_phase(phase_factory, None, phases.PrioritizePhase, module__project__is_draft=True) anonymous, moderator, initiator = setup_users(project) assert project.is_draft with freeze_phase(phase): assert not rules.has_perm(perm_name, anonymous, module) assert not rules.has_perm(perm_name, user, module) assert rules.has_perm(perm_name, moderator, module) assert rules.has_perm(perm_name, initiator, module)
def test_creator_cannot_delete_in_wrong_phase(client, phase_factory, map_idea_factory): phase, module, project, mapidea = setup_phase(phase_factory, map_idea_factory, phases.RatingPhase) url = reverse('mapidea-delete', kwargs={'slug': mapidea.slug}) with freeze_phase(phase): count = models.MapIdea.objects.all().count() assert count == 1 client.login(username=mapidea.creator.email, password='******') response = client.post(url) assert response.status_code == 403
def test_detail_view_private_not_visible_normal_user(client, user, phase_factory, map_idea_factory): phase, module, project, mapidea = setup_phase(phase_factory, map_idea_factory, phases.FeedbackPhase) mapidea.module.project.is_public = False mapidea.module.project.save() assert user not in mapidea.module.project.participants.all() client.login(username=user.email, password='******') url = mapidea.get_absolute_url() response = client.get(url) assert response.status_code == 403
def test_detail_view_private_visible_to_participant(client, user, phase_factory, topic_factory): phase, module, project, topic = setup_phase(phase_factory, topic_factory, phases.PrioritizePhase) topic.module.project.access = Access.PRIVATE topic.module.project.save() url = topic.get_absolute_url() assert user not in topic.module.project.participants.all() topic.module.project.participants.add(user) client.login(username=user.email, password='******') response = client.get(url) assert response.status_code == 200
def test_detail_view_private_visible_to_participant(client, user, phase_factory, idea_factory): phase, module, project, idea = setup_phase(phase_factory, idea_factory, phases.FeedbackPhase) idea.module.project.is_public = False idea.module.project.save() url = idea.get_absolute_url() assert user not in idea.module.project.participants.all() idea.module.project.participants.add(user) client.login(username=user.email, password='******') response = client.get(url) assert response.status_code == 200