forked from DGNum/gestioCOF
cof -- Add tests for calendar views
This commit is contained in:
parent
7e0ecd8e0f
commit
2e6a54c7db
1 changed files with 151 additions and 0 deletions
151
gestioncof/tests/test_views.py
Normal file
151
gestioncof/tests/test_views.py
Normal file
|
@ -0,0 +1,151 @@
|
|||
import uuid
|
||||
from datetime import timedelta
|
||||
|
||||
from django.contrib import messages
|
||||
from django.contrib.messages.api import get_messages
|
||||
from django.contrib.messages.storage.base import Message
|
||||
from django.test import TestCase
|
||||
|
||||
from bda.models import Salle, Tirage
|
||||
from gestioncof.models import CalendarSubscription
|
||||
from gestioncof.tests.testcases import ViewTestCaseMixin
|
||||
|
||||
|
||||
class CalendarViewTests(ViewTestCaseMixin, TestCase):
|
||||
url_name = 'calendar'
|
||||
url_expected = '/calendar/subscription'
|
||||
|
||||
auth_user = 'member'
|
||||
auth_forbidden = [None, 'user']
|
||||
|
||||
post_expected_message = Message(
|
||||
messages.SUCCESS, "Calendrier mis à jour avec succès.")
|
||||
|
||||
def test_get(self):
|
||||
r = self.client.get(self.url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
|
||||
def test_post_new(self):
|
||||
r = self.client.post(self.url, {
|
||||
'subscribe_to_events': True,
|
||||
'subscribe_to_my_shows': True,
|
||||
'other_shows': [],
|
||||
})
|
||||
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertIn(self.post_expected_message, get_messages(r.wsgi_request))
|
||||
cs = self.users['member'].calendarsubscription
|
||||
self.assertTrue(cs.subscribe_to_events)
|
||||
self.assertTrue(cs.subscribe_to_my_shows)
|
||||
|
||||
def test_post_edit(self):
|
||||
u = self.users['member']
|
||||
token = uuid.uuid4()
|
||||
cs = CalendarSubscription.objects.create(token=token, user=u)
|
||||
|
||||
r = self.client.post(self.url, {
|
||||
'other_shows': [],
|
||||
})
|
||||
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertIn(self.post_expected_message, get_messages(r.wsgi_request))
|
||||
cs.refresh_from_db()
|
||||
self.assertEqual(cs.token, token)
|
||||
self.assertFalse(cs.subscribe_to_events)
|
||||
self.assertFalse(cs.subscribe_to_my_shows)
|
||||
|
||||
def test_post_other_shows(self):
|
||||
t = Tirage.objects.create(
|
||||
ouverture=self.now,
|
||||
fermeture=self.now,
|
||||
active=True,
|
||||
)
|
||||
l = Salle.objects.create()
|
||||
s = t.spectacle_set.create(
|
||||
date=self.now, price=3.5, slots=20, location=l, listing=True)
|
||||
|
||||
r = self.client.post(self.url, {'other_shows': [str(s.pk)]})
|
||||
|
||||
self.assertEqual(r.status_code, 200)
|
||||
|
||||
|
||||
class CalendarICSViewTests(ViewTestCaseMixin, TestCase):
|
||||
url_name = 'gestioncof.views.calendar_ics'
|
||||
|
||||
auth_user = None
|
||||
auth_forbidden = []
|
||||
|
||||
@property
|
||||
def url_kwargs(self):
|
||||
return {'token': self.token}
|
||||
|
||||
@property
|
||||
def url_expected(self):
|
||||
return '/calendar/{}/calendar.ics'.format(self.token)
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
|
||||
self.token = uuid.uuid4()
|
||||
|
||||
self.t = Tirage.objects.create(
|
||||
ouverture=self.now,
|
||||
fermeture=self.now,
|
||||
active=True,
|
||||
)
|
||||
l = Salle.objects.create(name='Location')
|
||||
self.s1 = self.t.spectacle_set.create(
|
||||
price=1, slots=10, location=l, listing=True,
|
||||
title='Spectacle 1', date=self.now + timedelta(days=1),
|
||||
)
|
||||
self.s2 = self.t.spectacle_set.create(
|
||||
price=2, slots=20, location=l, listing=True,
|
||||
title='Spectacle 2', date=self.now + timedelta(days=2),
|
||||
)
|
||||
self.s3 = self.t.spectacle_set.create(
|
||||
price=3, slots=30, location=l, listing=True,
|
||||
title='Spectacle 3', date=self.now + timedelta(days=3),
|
||||
)
|
||||
|
||||
def test(self):
|
||||
u = self.users['user']
|
||||
p = u.participant_set.create(tirage=self.t)
|
||||
p.attribution_set.create(spectacle=self.s1)
|
||||
|
||||
self.cs = CalendarSubscription.objects.create(
|
||||
user=u, token=self.token,
|
||||
subscribe_to_my_shows=True, subscribe_to_events=True,
|
||||
)
|
||||
self.cs.other_shows.add(self.s2)
|
||||
|
||||
r = self.client.get(self.url)
|
||||
|
||||
def get_dt_from_ical(v):
|
||||
return v.dt
|
||||
|
||||
self.assertCalEqual(r.content.decode('utf-8'), [
|
||||
{
|
||||
'summary': 'Spectacle 1',
|
||||
'dtstart': (get_dt_from_ical, (
|
||||
(self.now + timedelta(days=1)).replace(microsecond=0)
|
||||
)),
|
||||
'dtend': (get_dt_from_ical, (
|
||||
(self.now + timedelta(days=1, hours=2)).replace(
|
||||
microsecond=0)
|
||||
)),
|
||||
'location': 'Location',
|
||||
'uid': 'show-{}-{}@example.com'.format(self.s1.pk, self.t.pk),
|
||||
},
|
||||
{
|
||||
'summary': 'Spectacle 2',
|
||||
'dtstart': (get_dt_from_ical, (
|
||||
(self.now + timedelta(days=2)).replace(microsecond=0)
|
||||
)),
|
||||
'dtend': (get_dt_from_ical, (
|
||||
(self.now + timedelta(days=2, hours=2)).replace(
|
||||
microsecond=0)
|
||||
)),
|
||||
'location': 'Location',
|
||||
'uid': 'show-{}-{}@example.com'.format(self.s2.pk, self.t.pk),
|
||||
},
|
||||
])
|
Loading…
Reference in a new issue