Skip to content

Commit

Permalink
Merge cacdb89 into 1fdd45d
Browse files Browse the repository at this point in the history
  • Loading branch information
Rineee committed Jan 22, 2021
2 parents 1fdd45d + cacdb89 commit e5a5baa
Show file tree
Hide file tree
Showing 7 changed files with 192 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)
21 changes: 21 additions & 0 deletions tests/userdashboard/test_rule_view_moderation.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import pytest
import rules

from tests.helpers import setup_users

perm_name = 'a4_candy_userdashboard.view_moderation_dashboard'


def test_perm_exists():
assert rules.perm_exists(perm_name)


@pytest.mark.django_db
def test_rule(project, user, admin):
anonymous, moderator, initiator = setup_users(project)

assert not rules.has_perm(perm_name, anonymous)
assert not rules.has_perm(perm_name, user)
assert not rules.has_perm(perm_name, initiator)
assert not rules.has_perm(perm_name, admin)
assert rules.has_perm(perm_name, moderator)
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 e5a5baa

Please sign in to comment.