コード例 #1
0
def test_creator_can_update_during_active_phase(client,
                                                phase_factory,
                                                idea_factory,
                                                category_factory):
    phase, module, project, idea = setup_phase(
        phase_factory, idea_factory, phases.IssuePhase)
    category = category_factory(module=module)
    user = idea.creator
    url = reverse(
        'meinberlin_ideas:idea-update',
        kwargs={
            'pk': idea.pk,
            'year': idea.created.year
        })
    with freeze_phase(phase):
        client.login(username=user.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'
コード例 #2
0
def test_maptopic_update_view(client, phase_factory, maptopic_factory,
                              category_factory, area_settings_factory):
    phase, module, project, item = setup_phase(phase_factory, maptopic_factory,
                                               PrioritizePhase)
    initiator = module.project.organisation.initiators.first()
    area_settings_factory(module=module)
    category = category_factory(module=module)
    url = reverse('a4dashboard:maptopic-update',
                  kwargs={
                      'pk': item.pk,
                      'year': item.created.year
                  })
    data = {
        'name': 'name',
        'description': 'desc',
        'category': category.pk,
        'point': '{ "type":"Feature", "geometry":{ "type":"Point",'
        '"coordinates":[ 13.0, 52.0 ] }, "properties":{}}',
        'point_label': 'test',
    }
    client.login(username=initiator.email, password='******')
    response = client.post(url, data)
    assert redirect_target(response) == 'maptopic-list'
    item.refresh_from_db()
    assert item.description == data.get('description')
    assert item.category.pk == data.get('category')
    assert item.point == json.loads(data.get('point'))
    assert item.point_label == data.get('point_label')
コード例 #3
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)
    area_settings_factory(module=module)
    category = category_factory(module=module)
    user = mapidea.creator
    moderator = project.moderators.first()
    assert moderator is not user
    url = reverse(
        'meinberlin_mapideas:mapidea-update',
        kwargs={
            'pk': mapidea.pk,
            'year': mapidea.created.year
        })
    with freeze_phase(phase):
        client.login(username=moderator.email, password='******')
        data = {
            'name': 'Another MapIdea',
            'description': 'changed description',
            'category': category.pk,
            'point': (0, 0),
            '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'
コード例 #4
0
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('meinberlin_budgeting:proposal-create',
                  kwargs={'module_slug': module.slug})
    with freeze_phase(phase):
        client.login(username=user.email, password='******')

        response = client.get(url)
        assert_template_response(
            response,
            'meinberlin_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'
コード例 #5
0
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,
                                 'meinberlin_documents/chapter_detail.html')
コード例 #6
0
def test_list_view(client, phase_factory, proposal_factory):
    phase, module, project, item = setup_phase(
        phase_factory, proposal_factory, phases.RequestPhase)
    url = project.get_absolute_url()
    with freeze_phase(phase):
        response = client.get(url)
        assert_template_response(
            response, 'meinberlin_kiezkasse/proposal_list.html')
コード例 #7
0
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, 'meinberlin_polls/poll_dashboard.html')
コード例 #8
0
def test_list_view(client, phase_factory, idea_factory):
    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, 'meinberlin_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
コード例 #9
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, 'meinberlin_ideas/idea_detail.html')
        assert response.status_code == 200
コード例 #10
0
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, 'meinberlin_budgeting/proposal_detail.html')
コード例 #11
0
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, 'meinberlin_topicprio/topic_detail.html')
        assert response.status_code == 200
コード例 #12
0
def test_edit_view(client, phase_factory):
    phase, module, project, item = setup_phase(
        phase_factory, None, CollectFeedbackPhase)
    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, 'meinberlin_adminlog/project_adminlog.html')
コード例 #13
0
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,
                                 'meinberlin_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)
コード例 #14
0
def test_detail_view_private_not_visible_anonymous(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()
    response = client.get(url)
    assert response.status_code == 302
    assert redirect_target(response) == 'account_login'
コード例 #15
0
def test_detail_view(client, phase_factory, poll_factory, question_factory,
                     choice_factory):
    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, 'meinberlin_polls/poll_detail.html')
コード例 #16
0
def test_edit_view(client, phase_factory, maptopic_factory,
                   area_settings_factory):
    phase, module, project, item = setup_phase(phase_factory, maptopic_factory,
                                               PrioritizePhase)
    initiator = module.project.organisation.initiators.first()
    area_settings_factory(module=module)
    url = component.get_base_url(module)
    client.login(username=initiator.email, password='******')
    response = client.get(url)
    assert_template_response(
        response, 'meinberlin_maptopicprio/maptopic_dashboard_list.html')
コード例 #17
0
def test_phase_active(phase_factory, user):
    phase, module, project, _ = setup_phase(phase_factory, None,
                                            phases.RequestPhase)
    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)
コード例 #18
0
def test_pre_phase(phase_factory, maptopic_factory, user):
    phase, _, project, item = setup_phase(phase_factory, maptopic_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)
コード例 #19
0
def test_detail_view_private_not_visible_anonymous(client,
                                                   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()
    url = topic.get_absolute_url()
    response = client.get(url)
    assert response.status_code == 302
    assert redirect_target(response) == 'account_login'
コード例 #20
0
def setup_mapidea_moderation():
    phase, module, project, item = setup_phase(PhaseFactory, MapIdeaFactory,
                                               phases.FeedbackPhase)
    anonymous, moderator, initiator = setup_users(project)
    with freeze_phase(phase):
        url = reverse('meinberlin_mapideas:mapidea-moderate',
                      kwargs={
                          'pk': item.pk,
                          'year': item.created.year
                      })
        return anonymous, moderator, initiator, url
コード例 #21
0
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)
コード例 #22
0
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)
コード例 #23
0
def test_pre_phase(phase_factory, proposal_factory, user):
    phase, _, project, item = setup_phase(phase_factory, proposal_factory,
                                          phases.RequestPhase)
    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)
コード例 #24
0
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
コード例 #25
0
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)
コード例 #26
0
def test_phase_active(phase_factory, chapter_factory, paragraph_factory, user):
    phase, _, project, item = setup_phase(phase_factory, chapter_factory,
                                          phases.CommentPhase)
    anonymous, moderator, initiator = setup_users(project)
    paragraph = paragraph_factory(chapter=item)

    assert project.is_public
    with freeze_phase(phase):
        assert rules.has_perm(perm_name, anonymous, paragraph)
        assert rules.has_perm(perm_name, user, paragraph)
        assert rules.has_perm(perm_name, moderator, paragraph)
        assert rules.has_perm(perm_name, initiator, paragraph)
コード例 #27
0
def test_phase_active_project_draft(phase_factory, maptopic_factory, user):
    phase, _, project, item = setup_phase(phase_factory, maptopic_factory,
                                          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, 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)
コード例 #28
0
def test_post_phase_project_archived(phase_factory, idea_factory, user):
    phase, _, project, item = setup_phase(phase_factory, 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)
コード例 #29
0
def test_detail_view_private_not_visible_normal_user(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()
    assert user not in idea.module.project.participants.all()
    client.login(username=user.email, password='******')
    url = idea.get_absolute_url()
    response = client.get(url)
    assert response.status_code == 403
コード例 #30
0
def test_offlineevent_delete_view(client, phase_factory,
                                  offline_event_factory):
    phase, module, project, item = setup_phase(phase_factory, None,
                                               CollectFeedbackPhase)
    initiator = module.project.organisation.initiators.first()
    event = offline_event_factory(project=project)
    url = reverse('a4dashboard:offlineevent-delete',
                  kwargs={'slug': event.slug})
    client.login(username=initiator.email, password='******')
    response = client.delete(url)
    assert redirect_target(response) == 'offlineevent-list'
    assert not OfflineEvent.objects.exists()