Skip to content

Commit

Permalink
tests/userdashboard: add tests for views
Browse files Browse the repository at this point in the history
  • Loading branch information
Rine committed Jan 21, 2021
1 parent e9d2781 commit 9d55bc2
Show file tree
Hide file tree
Showing 6 changed files with 171 additions and 0 deletions.
Empty file added tests/userdashboard/__init__.py
Empty file.
5 changes: 5 additions & 0 deletions tests/userdashboard/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from pytest_factoryboy import register

from tests.ideas.factories import IdeaFactory

register(IdeaFactory)
39 changes: 39 additions & 0 deletions tests/userdashboard/test_userdashboard_activities_view.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import pytest
from django.urls import reverse


@pytest.mark.django_db
def test_login_required(client, login_url):

url = reverse('userdashboard-activities')
response = client.get(url)
assert response.status_code == 302
assert response.url == login_url + '?next=' + url


@pytest.mark.django_db
def test_normal_user_can_view_userdashboard_activities(client, user):
client.login(username=user.email, password='password')
url = reverse('userdashboard-activities')
response = client.get(url)
assert response.status_code == 200


@pytest.mark.django_db
def test_userdashboard_activities_context_data(client, user, idea_factory):
client.login(username=user.email, password='password')
url = reverse('userdashboard-activities')
response = client.get(url)
assert response.status_code == 200
assert response.template_name[0] == \
'a4_candy_userdashboard/userdashboard_activities.html'

context_data = response.context_data
assert len(context_data['view'].actions) == 0

idea = idea_factory(creator=user)
response2 = client.get(url)

context_data_new = response2.context_data
assert len(context_data_new['view'].actions) == 1
assert context_data_new['view'].actions[0].obj == idea
38 changes: 38 additions & 0 deletions tests/userdashboard/test_userdashboard_following_view.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import pytest
from django.urls import reverse


@pytest.mark.django_db
def test_login_required(client, login_url):

url = reverse('userdashboard-following')
response = client.get(url)
assert response.status_code == 302
assert response.url == login_url + '?next=' + url


@pytest.mark.django_db
def test_normal_user_can_view_userdashboard_following(client, user):
client.login(username=user.email, password='password')
url = reverse('userdashboard-following')
response = client.get(url)
assert response.status_code == 200


@pytest.mark.django_db
def test_userdashboard_following_context_data(client, user, idea_factory):
client.login(username=user.email, password='password')
url = reverse('userdashboard-following')
response = client.get(url)
assert response.status_code == 200
assert response.template_name[0] == \
'a4_candy_userdashboard/userdashboard_following.html'

context_data = response.context_data
assert len(context_data['view'].projects) == 0

idea = idea_factory(creator=user)
response2 = client.get(url)

context_data_new = response2.context_data
assert idea.project in context_data_new['view'].projects
46 changes: 46 additions & 0 deletions tests/userdashboard/test_userdashboard_moderation_view.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import pytest
from django.urls import reverse


@pytest.mark.django_db
def test_login_required(client, login_url):

url = reverse('userdashboard-moderation')
response = client.get(url)
assert response.status_code == 302
assert response.url == login_url + '?next=' + url


@pytest.mark.django_db
def test_moderator_can_view_moderation_dashboard(client, project_factory):
project = project_factory()
moderator = project.moderators.first()
client.login(username=moderator.email, password='password')
url = reverse('userdashboard-moderation')
response = client.get(url)
assert response.status_code == 200
assert response.template_name[0] == \
'a4_candy_userdashboard/userdashboard_moderation.html'


@pytest.mark.django_db
def test_normal_user_cannot_view_moderation_dashboard(client, user):
client.login(username=user.email, password='password')
url = reverse('userdashboard-moderation')
response = client.get(url)
assert response.status_code == 403


@pytest.mark.django_db
def test_moderation_dashboard_context_data(client, project_factory):
project = project_factory()
moderator = project.moderators.first()
client.login(username=moderator.email, password='password')
url = reverse('userdashboard-moderation')
response = client.get(url)
assert response.status_code == 200
assert response.template_name[0] == \
'a4_candy_userdashboard/userdashboard_moderation.html'

context_data = response.context_data
assert project.organisation in context_data['view'].organisations
43 changes: 43 additions & 0 deletions tests/userdashboard/test_userdashboard_overview_view.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import pytest
from django.urls import reverse


@pytest.mark.django_db
def test_login_required(client, login_url):

url = reverse('userdashboard-overview')
response = client.get(url)
assert response.status_code == 302
assert response.url == login_url + '?next=' + url


@pytest.mark.django_db
def test_normal_user_can_view_userdashboard_overview(client, user):
client.login(username=user.email, password='password')
url = reverse('userdashboard-overview')
response = client.get(url)
assert response.status_code == 200


@pytest.mark.django_db
def test_userdashboard_overview_context_data(client, user, idea_factory):
client.login(username=user.email, password='password')
url = reverse('userdashboard-overview')
response = client.get(url)
assert response.status_code == 200
assert response.template_name[0] == \
'a4_candy_userdashboard/userdashboard_overview.html'

context_data = response.context_data
assert len(context_data['view'].organisations) == 0
assert len(context_data['view'].projects) == 0
assert len(context_data['view'].actions) == 0

idea = idea_factory(creator=user)
response2 = client.get(url)

context_data_new = response2.context_data
assert idea.project in context_data_new['view'].projects
assert idea.project.organisation in context_data_new['view'].organisations
assert len(context_data_new['view'].actions) == 1
assert context_data_new['view'].actions[0].obj == idea

0 comments on commit 9d55bc2

Please sign in to comment.