forked from DGNum/gestioCOF
test events.views.participants_csv
This commit is contained in:
parent
33bc3c5882
commit
a8fd04e4c0
3 changed files with 59 additions and 1 deletions
0
events/tests/__init__.py
Normal file
0
events/tests/__init__.py
Normal file
58
events/tests/test_views.py
Normal file
58
events/tests/test_views.py
Normal file
|
@ -0,0 +1,58 @@
|
|||
from unittest import mock
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth.models import Permission
|
||||
from django.test import Client, TestCase
|
||||
from django.urls import reverse
|
||||
from events.models import Event
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
def make_user(name):
|
||||
return User.objects.create_user(username=name, password=name)
|
||||
|
||||
|
||||
def make_staff_user(name):
|
||||
view_event_perm = Permission.objects.get_by_natural_key(
|
||||
codename="view_event", app_label="events", model="event"
|
||||
)
|
||||
user = make_user(name)
|
||||
user.user_permissions.add(view_event_perm)
|
||||
return user
|
||||
|
||||
|
||||
class CSVExportTest(TestCase):
|
||||
def setUp(self):
|
||||
# Signals handlers on login/logout send messages.
|
||||
# Due to the way the Django' test Client performs login, this raise an
|
||||
# error. As workaround, we mock the Django' messages module.
|
||||
patcher_messages = mock.patch("gestioncof.signals.messages")
|
||||
patcher_messages.start()
|
||||
self.addCleanup(patcher_messages.stop)
|
||||
|
||||
self.staff = make_staff_user("staff")
|
||||
self.u1 = make_user("toto")
|
||||
self.u2 = make_user("titi")
|
||||
self.event = Event.objects.create(title="test_event", location="somewhere")
|
||||
self.event.subscribers.set([self.u1, self.u2])
|
||||
self.url = reverse("events:csv-participants", args=[self.event.id])
|
||||
|
||||
def test_get(self):
|
||||
client = Client()
|
||||
client.force_login(self.staff)
|
||||
r = client.get(self.url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
|
||||
def test_anonymous(self):
|
||||
client = Client()
|
||||
r = client.get(self.url)
|
||||
self.assertRedirects(
|
||||
r, "/login?next={}".format(self.url), fetch_redirect_response=False
|
||||
)
|
||||
|
||||
def test_unauthorised(self):
|
||||
client = Client()
|
||||
client.force_login(self.u1)
|
||||
r = client.get(self.url)
|
||||
self.assertEqual(r.status_code, 403)
|
|
@ -8,7 +8,7 @@ from events.models import Event
|
|||
|
||||
|
||||
@login_required
|
||||
@permission_required("events.view_event")
|
||||
@permission_required("events.view_event", raise_exception=True)
|
||||
def participants_csv(request, event_id):
|
||||
event = get_object_or_404(Event, id=event_id)
|
||||
|
||||
|
|
Loading…
Reference in a new issue