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'
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')
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'
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'
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')
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')
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')
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
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
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')
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
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')
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)
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'
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')
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')
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)
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)
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'
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
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_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_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)
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_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_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)
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)
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)
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
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()