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
Esempio n. 2
0
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_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'
Esempio n. 4
0
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
Esempio n. 5
0
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
Esempio n. 6
0
def test_moderator_can_update_during_wrong_phase(client, phase_factory,
                                                 idea_factory,
                                                 category_factory):
    phase, module, project, idea = setup_phase(phase_factory, idea_factory,
                                               phases.RatingPhase)
    category = category_factory(module=module)
    user = idea.creator
    moderator = project.moderators.first()
    assert moderator is not user
    url = reverse('a4_candy_ideas:idea-update',
                  kwargs={
                      'organisation_slug': idea.project.organisation.slug,
                      'pk': idea.pk,
                      'year': idea.created.year
                  })
    with freeze_phase(phase):
        client.login(username=moderator.email, password='******')
        data = {
            'name': 'Another Idea',
            'description': 'changed description',
            'category': category.pk,
        }
        response = client.post(url, data)
        assert redirect_target(response) == 'idea-detail'
        assert response.status_code == 302
        updated_idea = models.Idea.objects.get(id=idea.pk)
        assert updated_idea.description == 'changed description'
Esempio n. 7
0
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')
Esempio n. 8
0
def test_admin_can_create_topic(client, phase_factory, category_factory,
                                admin):
    phase = phase_factory(phase_content=phases.PrioritizePhase())
    module = phase.module
    category = category_factory(module=module)
    url = reverse('a4dashboard:topic-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_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
Esempio n. 9
0
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
Esempio n. 10
0
def test_moderator_can_update_during_wrong_phase(client, phase_factory,
                                                 map_idea_factory,
                                                 category_factory,
                                                 area_settings_factory):
    phase, module, project, mapidea = setup_phase(phase_factory,
                                                  map_idea_factory,
                                                  phases.RatingPhase)
    category = category_factory(module=module)
    area_settings_factory(module=module)
    user = mapidea.creator
    moderator = project.moderators.first()
    assert moderator is not user
    url = reverse('mapidea-update', kwargs={'slug': mapidea.slug})
    with freeze_phase(phase):
        client.login(username=moderator.email, password='******')
        data = {
            'name': 'Another MapIdea',
            'description': 'changed description',
            'category': category.pk,
            'point': (0, 1),
            'point_label': 'somewhere else'
        }
        response = client.post(url, data)
        assert redirect_target(response) == 'mapidea-detail'
        assert response.status_code == 302
        updated_mapidea = models.MapIdea.objects.get(id=mapidea.pk)
        assert updated_mapidea.description == 'changed description'
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'
Esempio n. 12
0
def test_creator_can_update_during_active_phase(client, phase_factory,
                                                map_idea_factory,
                                                category_factory,
                                                area_settings_factory):
    phase, module, project, mapidea = setup_phase(phase_factory,
                                                  map_idea_factory,
                                                  phases.IssuePhase)
    area_settings_factory(module=module)
    category = category_factory(module=module)
    user = mapidea.creator
    url = reverse('a4_candy_mapideas:mapidea-update',
                  kwargs={
                      'organisation_slug': mapidea.project.organisation.slug,
                      'pk': mapidea.pk,
                      'year': mapidea.created.year
                  })
    with freeze_phase(phase):
        client.login(username=user.email, password='******')
        data = {
            'name': 'Another MapIdea',
            'description': 'changed description',
            'category': category.pk,
            'point': (0, 0),
            'point_label': 'somewhere'
        }
        response = client.post(url, data)
        assert redirect_target(response) == 'mapidea-detail'
        assert response.status_code == 302
        updated_mapidea = models.MapIdea.objects.get(id=mapidea.pk)
        assert updated_mapidea.description == 'changed description'
Esempio n. 13
0
def test_initiator_can_export_subject_comments(client, phase_factory):
    phase = phase_factory(phase_content=phases.DebatePhase())
    module = phase.module
    initiator = module.project.organisation.initiators.first()
    client.login(username=initiator.email, password='******')
    url = reverse(
        'a4dashboard:subject-export-module',
        kwargs={
            'organisation_slug': module.project.organisation.slug,
            'module_slug': module.slug
        })
    with freeze_phase(phase):
        response = client.get(url)
        assert response.status_code == 200
        export_url = reverse(
            'a4dashboard:subject-comment-export',
            kwargs={
                'organisation_slug': module.project.organisation.slug,
                'module_slug': module.slug
            })
        assert response.context['comment_export'] == export_url
        response = client.get(export_url)
        assert response.status_code == 200
        assert 'application/vnd.openxmlformats-officedocument.'\
            'spreadsheetml.sheet' == response['Content-Type']
Esempio n. 14
0
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_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_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_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
Esempio n. 18
0
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
Esempio n. 19
0
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_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'
        )
Esempio n. 21
0
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
Esempio n. 22
0
def test_anonymous_cannot_create_idea(client, phase_factory):
    phase = phase_factory(phase_content=phases.IssuePhase())
    module = phase.module
    url = reverse('idea-create', kwargs={'slug': module.slug})
    with freeze_phase(phase):
        count = models.Idea.objects.all().count()
        assert count == 0
        response = client.get(url)
        assert response.status_code == 302
        assert redirect_target(response) == 'account_login'
Esempio n. 23
0
def test_user_cannot_create_idea_in_wrong_phase(client, phase_factory, user):
    phase = phase_factory(phase_content=phases.RatingPhase())
    module = phase.module
    url = reverse('idea-create', kwargs={'slug': module.slug})
    with freeze_phase(phase):
        response = client.get(url)
        assert response.status_code == 302
        client.login(username=user.email, password='******')
        response = client.get(url)
        assert response.status_code == 403
Esempio n. 24
0
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')
Esempio n. 25
0
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)
Esempio n. 26
0
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)
Esempio n. 27
0
def test_phase_active(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_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)
Esempio n. 28
0
def test_phase_active(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_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)
Esempio n. 29
0
def test_phase_active_project_draft(phase_factory, user):
    phase, module, project, _ = setup_phase(phase_factory, None,
                                            phases.CommentPhase,
                                            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)
Esempio n. 30
0
def test_phase_active_project_draft(phase_factory, map_idea_factory, user):
    phase, _, project, item = setup_phase(phase_factory, map_idea_factory,
                                          phases.RatingPhase,
                                          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)