def test_admin_can_create_mapidea_in_wrong_phase(client, phase_factory, category_factory, admin, area_settings_factory): phase = phase_factory(phase_content=phases.RatingPhase()) module = phase.module area_settings_factory(module=module) category = category_factory(module=module) url = reverse('mapidea-create', kwargs={'slug': module.slug}) with freeze_phase(phase): client.login(username=admin.email, password='******') response = client.get(url) assert_template_response( response, '{{ cookiecutter.project_app_prefix }}_mapideas/mapidea_form.html') assert response.status_code == 200 mapidea = { 'name': 'MapIdea', 'description': 'description', 'category': category.pk, 'point': (0, 0), 'point_label': 'somewhere' } response = client.post(url, mapidea) assert response.status_code == 302 assert redirect_target(response) == 'mapidea-detail' count = models.MapIdea.objects.all().count() assert count == 1
def test_user_can_create_mapidea_during_active_phase(client, phase_factory, user, category_factory, area_settings_factory): phase = phase_factory(phase_content=phases.IssuePhase()) module = phase.module area_settings_factory(module=module) category = category_factory(module=module) url = reverse('a4_candy_mapideas:mapidea-create', kwargs={ 'organisation_slug': module.project.organisation.slug, 'module_slug': module.slug }) with freeze_phase(phase): count = models.MapIdea.objects.all().count() assert count == 0 client.login(username=user.email, password='******') response = client.get(url) assert_template_response(response, 'a4_candy_mapideas/mapidea_create_form.html') assert response.status_code == 200 mapidea = { 'name': 'MapIdea', 'description': 'description', 'category': category.pk, 'point': (0, 0), 'point_label': 'somewhere' } response = client.post(url, mapidea) assert response.status_code == 302 assert redirect_target(response) == 'mapidea-detail' count = models.MapIdea.objects.all().count() assert count == 1
def test_admin_can_create_idea_in_wrong_phase(client, phase_factory, category_factory, admin): phase = phase_factory(phase_content=phases.RatingPhase()) module = phase.module category = category_factory(module=module) url = reverse('a4_candy_ideas:idea-create', kwargs={ 'organisation_slug': module.project.organisation.slug, 'module_slug': module.slug }) with freeze_phase(phase): client.login(username=admin.email, password='******') response = client.get(url) assert_template_response(response, 'a4_candy_ideas/idea_create_form.html') assert response.status_code == 200 idea = { 'name': 'Idea', 'description': 'description', 'category': category.pk, } response = client.post(url, idea) assert response.status_code == 302 assert redirect_target(response) == 'idea-detail' count = models.Idea.objects.all().count() assert count == 1
def test_moderate_view(client, phase_factory, proposal_factory, user, area_settings_factory): phase, module, project, item = setup_phase(phase_factory, proposal_factory, phases.RequestPhase) area_settings_factory(module=module) url = reverse('a4_candy_budgeting:proposal-moderate', kwargs={ 'organisation_slug': project.organisation.slug, 'pk': item.pk, 'year': item.created.year }) project.moderators.set([user]) with freeze_phase(phase): client.login(username=user.email, password='******') response = client.get(url) assert_template_response( response, 'a4_candy_budgeting/proposal_moderate_form.html') data = { 'moderator_feedback': 'test', 'is_archived': False, 'statement': 'its a statement' } response = client.post(url, data) assert redirect_target(response) == 'proposal-detail'
def test_participant_can_only_be_invited_once( client, phase_factory, user): phase, module, project, idea = setup_phase( phase_factory, None, CollectFeedbackPhase) assert user not in module.project.participants.all() module.project.participants.add(user) url = component.get_base_url(project) initiator = module.project.organisation.initiators.first() client.login(username=initiator.email, password='******') response = client.get(url) assert_template_response( response, 'a4_candy_projects/project_participants.html') data = { 'add_users': '[email protected], [email protected], ' + user.email, } response = client.post(url, data) assert redirect_target(response) == \ 'dashboard-{}-edit'.format(component.identifier) assert ParticipantInvite.objects.get(email='*****@*****.**') assert ParticipantInvite.objects.get(email='*****@*****.**') messages = list(get_messages(response.wsgi_request)) assert len(messages) == 2 assert str(messages[0]) == ( 'Following users already accepted an invitation: ' + user.email) assert str(messages[1]) == ('2 participants invited.') data = { 'add_users': '*****@*****.**', } response = client.post(url, data) messages = list(get_messages(response.wsgi_request)) assert len(messages) == 4 assert str(messages[2]) == ( 'Following users are already invited: [email protected]') assert str(messages[3]) == ('0 participants invited.')
def test_detail_view(client, phase_factory, idea_factory, organisation): phase, module, project, idea = setup_phase(phase_factory, idea_factory, phases.FeedbackPhase) url = idea.get_absolute_url() with freeze_phase(phase): response = client.get(url) assert_template_response(response, 'a4_candy_ideas/idea_detail.html')
def test_initiator_can_delete_invitation(client, phase_factory): phase, module, project, idea = setup_phase( phase_factory, None, CollectFeedbackPhase) url = component.get_base_url(project) initiator = module.project.organisation.initiators.first() client.login(username=initiator.email, password='******') response = client.get(url) assert_template_response( response, 'a4_candy_projects/project_participants.html') data = { 'add_users': '[email protected],[email protected]', } response = client.post(url, data) assert redirect_target(response) == \ 'dashboard-{}-edit'.format(component.identifier) assert ParticipantInvite.objects.get(email='*****@*****.**') invite_pk = int(ParticipantInvite.objects.get(email='*****@*****.**').pk) data = { 'submit_action': 'remove_invite', 'invite_pk': invite_pk } response = client.post(url, data) assert redirect_target(response) == \ 'dashboard-{}-edit'.format(component.identifier) assert response.status_code == 302 assert not ParticipantInvite.objects.filter(email='*****@*****.**').exists() response = client.post(url, data) assert redirect_target(response) == \ 'dashboard-{}-edit'.format(component.identifier) assert response.status_code == 302
def test_user_can_create_idea_during_active_phase(client, phase_factory, user, category_factory): phase = phase_factory(phase_content=phases.IssuePhase()) module = phase.module category = category_factory(module=module) url = reverse('idea-create', kwargs={'slug': module.slug}) with freeze_phase(phase): count = models.Idea.objects.all().count() assert count == 0 client.login(username=user.email, password='******') response = client.get(url) assert_template_response( response, '{{ cookiecutter.project_app_prefix }}_ideas/idea_form.html') assert response.status_code == 200 idea = { 'name': 'Idea', 'description': 'description', 'category': category.pk, } response = client.post(url, idea) assert response.status_code == 302 assert redirect_target(response) == 'idea-detail' count = models.Idea.objects.all().count() assert count == 1
def test_moderator_can_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('a4_candy_mapideas:mapidea-delete', kwargs={ 'organisation_slug': mapidea.project.organisation.slug, 'pk': mapidea.pk, 'year': mapidea.created.year }) with freeze_phase(phase): count = models.MapIdea.objects.all().count() assert count == 1 moderator = mapidea.module.project.moderators.first() client.login(username=moderator.email, password='******') response = client.get(url) assert response.status_code == 200 assert_template_response( response, 'a4_candy_mapideas/mapidea_confirm_delete.html') response = client.post(url) assert redirect_target(response) == 'project-detail' assert response.status_code == 302 count = models.MapIdea.objects.all().count() assert count == 0
def test_moderator_can_create_topic_before_phase(client, phase_factory, category_factory, admin): phase = phase_factory(phase_content=phases.PrioritizePhase()) module = phase.module project = module.project category = category_factory(module=module) moderator = project.moderators.first() url = reverse('a4dashboard:topic-create', kwargs={ 'organisation_slug': module.project.organisation.slug, 'module_slug': module.slug }) with freeze_pre_phase(phase): client.login(username=moderator.email, password='******') response = client.get(url) assert_template_response(response, 'a4_candy_topicprio/topic_create_form.html') assert response.status_code == 200 topic = { 'name': 'Topic', 'description': 'description', 'category': category.pk, } response = client.post(url, topic) assert response.status_code == 302 assert redirect_target(response) == 'topic-list' count = models.Topic.objects.all().count() assert count == 1
def test_create_view(client, phase_factory, proposal_factory, user, category_factory, area_settings_factory): phase, module, project, item = setup_phase(phase_factory, proposal_factory, phases.RequestPhase) area_settings_factory(module=module) category = category_factory(module=module) url = reverse('a4_candy_budgeting:proposal-create', kwargs={ 'organisation_slug': project.organisation.slug, 'module_slug': module.slug }) with freeze_phase(phase): client.login(username=user.email, password='******') response = client.get(url) assert_template_response( response, 'a4_candy_budgeting/proposal_create_form.html') data = { 'name': 'Idea', 'description': 'description', 'category': category.pk, 'budget': 123, 'point': (0, 0), 'point_label': 'somewhere' } response = client.post(url, data) assert redirect_target(response) == 'proposal-detail'
def test_detail_view(client, phase_factory, proposal_factory): phase, module, project, item = setup_phase(phase_factory, proposal_factory, phases.RequestPhase) url = item.get_absolute_url() with freeze_phase(phase): response = client.get(url) assert_template_response(response, 'a4_candy_budgeting/proposal_detail.html')
def test_list_view_0(client, phase_factory, map_idea_factory, organisation): phase, module, project, item = 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')
def test_edit_view(client, phase_factory): phase, module, project, item = setup_phase(phase_factory, None, VotingPhase) 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, 'a4_candy_polls/poll_dashboard.html')
def test_initiator_has_access(client): anonymous, moderator, initiator, url = setup_mapidea_moderation() assert client.login(username=initiator.email, password='******') resp = client.get(url) assert_template_response( resp, 'a4_candy_mapideas/mapidea_moderate_form.html' )
def test_detail_view(client, phase_factory, topic_factory): phase, module, project, topic = setup_phase(phase_factory, topic_factory, phases.PrioritizePhase) url = topic.get_absolute_url() with freeze_phase(phase): response = client.get(url) assert_template_response(response, 'a4_candy_topicprio/topic_detail.html') assert response.status_code == 200
def test_detail_view(client, phase_factory, subject_factory): phase, module, project, subject = setup_phase( phase_factory, subject_factory, phases.DebatePhase) url = subject.get_absolute_url() with freeze_phase(phase): response = client.get(url) assert_template_response( response, 'a4_candy_debate/subject_detail.html') assert response.status_code == 200
def test_document_detail_view(client, phase_factory, chapter_factory, organisation): phase, module, project, item = setup_phase( phase_factory, chapter_factory, phases.CommentPhase) url = project.get_absolute_url() with freeze_phase(phase): response = client.get(url) assert_template_response( response, 'a4_candy_documents/chapter_detail.html')
def test_document_detail_view(client, phase_factory, chapter_factory): phase, module, project, item = setup_phase(phase_factory, chapter_factory, phases.CommentPhase) url = project.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_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, 'a4_candy_mapideas/mapidea_detail.html') assert response.status_code == 200
def test_detail_view(client, phase_factory, idea_factory): phase, module, project, idea = setup_phase(phase_factory, idea_factory, phases.FeedbackPhase) url = idea.get_absolute_url() with freeze_phase(phase): response = client.get(url) assert_template_response( response, '{{ cookiecutter.project_app_prefix }}_ideas/idea_detail.html') assert response.status_code == 200
def test_edit_view(client, phase_factory, offline_event_factory): phase, module, project, item = setup_phase( phase_factory, None, CollectFeedbackPhase) offline_event_factory(project=project) initiator = module.project.organisation.initiators.first() url = component.get_base_url(project) client.login(username=initiator.email, password='******') response = client.get(url) assert_template_response( response, 'a4_candy_offlineevents/offlineevent_list.html')
def test_detail_view(client, phase_factory, poll_factory, question_factory, choice_factory, organisation): phase, module, project, item = setup_phase(phase_factory, poll_factory, phases.VotingPhase) question = question_factory(poll=item) choice_factory(question=question) url = project.get_absolute_url() with freeze_phase(phase): response = client.get(url) assert_template_response(response, 'a4_candy_polls/poll_detail.html')
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_list_view(client, phase_factory, subject_factory): phase, module, project, subject = setup_phase(phase_factory, subject_factory, phases.DebatePhase) phase_2, module_2, project_2, subject_2 = setup_phase( phase_factory, subject_factory, phases.DebatePhase) url = project.get_absolute_url() with freeze_phase(phase): response = client.get(url) assert_template_response(response, 'a4_candy_debate/subject_list.html') assert response.status_code == 200 assert subject in response.context_data['subject_list'] assert subject_2 not in response.context_data['subject_list'] assert response.context_data['subject_list'][0].comment_count == 0
def test_list_view(client, phase_factory, idea_factory, organisation): phase, module, project, idea = setup_phase(phase_factory, idea_factory, phases.FeedbackPhase) phase_2, module_2, project_2, idea_2 = setup_phase(phase_factory, idea_factory, phases.FeedbackPhase) url = project.get_absolute_url() with freeze_phase(phase): response = client.get(url) assert_template_response(response, 'a4_candy_ideas/idea_list.html') assert response.status_code == 200 assert idea in response.context_data['idea_list'] assert idea_2 not in response.context_data['idea_list'] assert response.context_data['idea_list'][0].comment_count == 0 assert response.context_data['idea_list'][0].positive_rating_count == 0 assert response.context_data['idea_list'][0].negative_rating_count == 0
def test_moderator_can_edit(client, phase_factory): phase, module, project, idea = setup_phase(phase_factory, None, CollectFeedbackPhase) url = component.get_base_url(project) moderator = project.moderators.first() client.login(username=moderator.email, password='******') response = client.get(url) assert_template_response(response, 'a4_candy_projects/project_moderators.html') data = { 'add_users': '[email protected],[email protected]', } response = client.post(url, data) assert redirect_target(response) == \ 'dashboard-{}-edit'.format(component.identifier) assert ModeratorInvite.objects.get(email='*****@*****.**') assert ModeratorInvite.objects.get(email='*****@*****.**')
def test_list_view(client, phase_factory, topic_factory): phase, module, project, topic = setup_phase(phase_factory, topic_factory, phases.PrioritizePhase) phase_2, module_2, project_2, topic_2 = setup_phase( phase_factory, topic_factory, phases.PrioritizePhase) url = project.get_absolute_url() with freeze_phase(phase): response = client.get(url) assert_template_response(response, 'a4_candy_topicprio/topic_list.html') assert response.status_code == 200 assert topic in response.context_data['topic_list'] assert topic_2 not in response.context_data['topic_list'] assert response.context_data['topic_list'][0].comment_count == 0 assert ( response.context_data['topic_list'][0].positive_rating_count == 0) assert ( response.context_data['topic_list'][0].negative_rating_count == 0)
def test_admin_can_create_topic(client, phase_factory, category_factory, admin): phase = phase_factory(phase_content=phases.DebatePhase()) module = phase.module url = reverse('a4dashboard:subject-create', kwargs={ 'organisation_slug': module.project.organisation.slug, 'module_slug': module.slug }) with freeze_phase(phase): client.login(username=admin.email, password='******') response = client.get(url) assert_template_response(response, 'a4_candy_debate/subject_create_form.html') assert response.status_code == 200 subject = {'name': 'Subject'} response = client.post(url, subject) assert response.status_code == 302 assert redirect_target(response) == 'subject-list' count = models.Subject.objects.all().count() assert count == 1
def test_list_view(client, phase_factory, map_idea_factory): 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, '{{ cookiecutter.project_app_prefix }}_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)