From ba816db322c97ec1ec16e995a7c5ec004e8e6e74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yves=20M=C3=BCller?= Date: Thu, 1 Sep 2016 17:39:00 +0200 Subject: [PATCH] Refactor tests for idea views --- tests/ideas/conftest.py | 6 -- tests/ideas/test_idea_views.py | 110 ++++++++++++++++++--------------- tests/utils.py | 8 --- 3 files changed, 61 insertions(+), 63 deletions(-) diff --git a/tests/ideas/conftest.py b/tests/ideas/conftest.py index a96f5367d..115edf294 100644 --- a/tests/ideas/conftest.py +++ b/tests/ideas/conftest.py @@ -1,14 +1,8 @@ from pytest_factoryboy import register from tests.comments import factories as comment_factories from tests.ideas import factories as idea_fatories -from tests.modules import factories as module_factories -from tests.organisations import factories as organisation_factories -from tests.projects import factories as project_factories from tests.rates import factories as rate_factories register(rate_factories.RateFactory) register(comment_factories.CommentFactory) -register(organisation_factories.OrganisationFactory) -register(project_factories.ProjectFactory) -register(module_factories.ModuleFactory) register(idea_fatories.IdeaFactory) diff --git a/tests/ideas/test_idea_views.py b/tests/ideas/test_idea_views.py index 6a6bb0603..864ab6267 100644 --- a/tests/ideas/test_idea_views.py +++ b/tests/ideas/test_idea_views.py @@ -1,6 +1,7 @@ import pytest from django.core.urlresolvers import reverse -from tests.utils import add_phase_to_project +from freezegun import freeze_time +from tests.helpers import redirect_target from euth.ideas import models, phases @@ -13,60 +14,71 @@ def test_detail_view(client, idea): @pytest.mark.django_db -def test_create_view(client, module, user): - add_phase_to_project(module.project, phases.CollectPhase().identifier) - count = models.Idea.objects.all().count() - assert count == 0 - url = reverse('idea-create', kwargs={'slug': module.slug}) - response = client.get(url) - assert response.status_code == 302 - login_url = reverse('login') - client.post(login_url, {'email': user.email, 'password': 'password'}) - response = client.get(url) - assert response.status_code == 200 - idea = {'name': 'Idea', 'description': 'description'} - client.post(url, idea) - assert response.status_code == 200 - count = models.Idea.objects.all().count() - assert count == 1 +@pytest.mark.parametrize('active_phase__type', + [phases.CollectPhase().identifier]) +def test_create_view(client, active_phase, user): + module = active_phase.module + with freeze_time(active_phase.start_date): + count = models.Idea.objects.all().count() + assert count == 0 + url = reverse('idea-create', kwargs={'slug': module.slug}) + response = client.get(url) + assert response.status_code == 302 + assert redirect_target(response) == 'login' + client.login(username=user.email, password='password') + response = client.get(url) + assert response.status_code == 200 + idea = {'name': 'Idea', 'description': 'description'} + 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 @pytest.mark.django_db -def test_create_view_wrong_phase(client, module, user): - add_phase_to_project(module.project, phases.RatePhase().identifier) - url = reverse('idea-create', kwargs={'slug': module.slug}) - response = client.get(url) - assert response.status_code == 302 - client.login(username=user.email, password='password') - response = client.get(url) - assert response.status_code == 403 +@pytest.mark.parametrize('active_phase__type', + [phases.RatePhase().identifier]) +def test_create_view_wrong_phase(client, active_phase, user): + module = active_phase.module + with freeze_time(active_phase.start_date): + url = reverse('idea-create', kwargs={'slug': module.slug}) + response = client.get(url) + assert response.status_code == 302 + client.login(username=user.email, password='password') + response = client.get(url) + assert response.status_code == 403 @pytest.mark.django_db -def test_update_view(client, idea, user): - add_phase_to_project(idea.project, phases.CollectPhase().identifier) - url = reverse('idea-update', kwargs={'slug': idea.slug}) - response = client.get(url) - assert response.status_code == 302 - login_url = reverse('login') - client.post(login_url, {'email': user.email, 'password': 'password'}) - response = client.get(url) - assert response.status_code == 200 - data = {'description': 'description', 'name': idea.name} - response = client.post(url, data) - id = idea.pk - updated_idea = models.Idea.objects.get(id=id) - assert updated_idea.description == 'description' - assert response.status_code == 302 +@pytest.mark.parametrize('active_phase__type', + [phases.CollectPhase().identifier]) +def test_update_view(client, active_phase, idea): + idea.module = active_phase.module + idea.save() + user = idea.creator + with freeze_time(active_phase.start_date): + url = reverse('idea-update', kwargs={'slug': idea.slug}) + response = client.get(url) + assert response.status_code == 302 + client.login(username=user.email, password='password') + response = client.get(url) + assert response.status_code == 200 + data = {'description': 'description', 'name': idea.name} + response = client.post(url, data) + id = idea.pk + updated_idea = models.Idea.objects.get(id=id) + assert updated_idea.description == 'description' + assert response.status_code == 302 @pytest.mark.django_db -def test_delete_view(client, idea, user): - client.login(username=user.email, password='password') - url = reverse('idea-delete', kwargs={'slug': idea.slug}) - response = client.post(url) - assert response.status_code == 403 - - add_phase_to_project(idea.project, phases.CollectPhase().identifier) - response = client.post(url) - assert response.status_code == 302 +@pytest.mark.parametrize('active_phase__type', + [phases.CollectPhase().identifier]) +def test_delete_view_wrong_user(client, active_phase, idea, user): + idea.module = active_phase.module + with freeze_time(active_phase.start_date): + client.login(username=user.email, password='password') + url = reverse('idea-delete', kwargs={'slug': idea.slug}) + response = client.post(url) + assert response.status_code == 403 diff --git a/tests/utils.py b/tests/utils.py index 51635ae71..e69de29bb 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -1,8 +0,0 @@ -def add_phase_to_project(project, type): - from euth.phases import models - phase = models.Phase.objects.create( - name='Phase name', - description='lorem ipsum', - type=type, - module=project.module_set.first()) - return phase