Merge branch 'master' into aureplop/cof-tests_registration

This commit is contained in:
Martin Pépin 2018-04-07 13:20:33 +02:00
commit 7512454825
36 changed files with 2855 additions and 74 deletions

View file

@ -1,3 +1,4 @@
import csv
from unittest import mock
from urllib.parse import parse_qs, urlparse
@ -8,6 +9,8 @@ from django.test import Client
from django.utils import timezone
from django.utils.functional import cached_property
import icalendar
User = get_user_model()
@ -124,6 +127,44 @@ class TestCaseMixin:
return mock_connection
def load_from_csv_response(self, r):
decoded = r.content.decode('utf-8')
return list(csv.reader(decoded.split('\n')[:-1]))
def _test_event_equal(self, event, exp):
for k, v_desc in exp.items():
if isinstance(v_desc, tuple):
v_getter = v_desc[0]
v = v_desc[1]
else:
v_getter = lambda v: v
v = v_desc
if v_getter(event[k.upper()]) != v:
return False
return True
def _find_event(self, ev, l):
for i, elt in enumerate(l):
if self._test_event_equal(ev, elt):
return elt, i
return False, -1
def assertCalEqual(self, ical_content, expected):
remaining = expected.copy()
unexpected = []
cal = icalendar.Calendar.from_ical(ical_content)
for ev in cal.walk('vevent'):
found, i_found = self._find_event(ev, remaining)
if found:
remaining.pop(i_found)
else:
unexpected.append(ev)
self.assertListEqual(unexpected, [])
self.assertListEqual(remaining, [])
class ViewTestCaseMixin(TestCaseMixin):
"""