26 |
26 |
SUMMARY:Event 1
|
27 |
27 |
END:VEVENT
|
28 |
28 |
BEGIN:VEVENT
|
29 |
|
DTSTAMP:20170824T092855Z
|
30 |
|
UID:950c3ff889d2465dd5d648c4c2194232c0a565f4
|
31 |
|
DTSTART:20170830T180800Z
|
32 |
|
DTEND:20170831T223400Z
|
33 |
|
SEQUENCE:2
|
|
29 |
DTSTAMP:20180824T082855Z
|
|
30 |
UID:8c4c219889d244232c0a565f4950c3ff65dd5d64
|
|
31 |
DTSTART:20170831T170800Z
|
|
32 |
DTEND:20180831T203400Z
|
|
33 |
SEQUENCE:1
|
|
34 |
SUMMARY:Event 2
|
34 |
35 |
END:VEVENT
|
35 |
36 |
END:VCALENDAR"""
|
36 |
37 |
|
... | ... | |
198 |
199 |
exceptions_count = desk.create_timeperiod_exceptions_from_ics(ICS_SAMPLE)
|
199 |
200 |
assert exceptions_count == 2
|
200 |
201 |
assert TimePeriodException.objects.filter(desk=desk).count() == 2
|
|
202 |
exceptions_count = desk.create_timeperiod_exceptions_from_ics(ICS_SAMPLE)
|
|
203 |
assert exceptions_count == 0
|
|
204 |
assert TimePeriodException.objects.filter(desk=desk).count() == 2
|
|
205 |
assert set(TimePeriodException.objects.values_list('label', flat=True)) == set(['Event 1', 'Event 2'])
|
|
206 |
exceptions_count = desk.create_timeperiod_exceptions_from_ics(ICS_SAMPLE.replace('Event 2', 'Event 3'))
|
|
207 |
assert exceptions_count == 0
|
|
208 |
assert TimePeriodException.objects.filter(desk=desk).count() == 2
|
|
209 |
assert set(TimePeriodException.objects.values_list('label', flat=True)) == set(['Event 1', 'Event 3'])
|
201 |
210 |
|
202 |
211 |
def test_timeperiodexception_creation_from_ics_without_startdt():
|
203 |
212 |
agenda = Agenda(label=u'Test 2 agenda')
|
... | ... | |
239 |
248 |
agenda.save()
|
240 |
249 |
desk = Desk(label='Test 4 desk', agenda=agenda)
|
241 |
250 |
desk.save()
|
242 |
|
assert desk.create_timeperiod_exceptions_from_ics(ICS_SAMPLE_WITH_RECURRENT_EVENT) == 3
|
243 |
|
assert TimePeriodException.objects.filter(desk=desk).count() == 3
|
|
251 |
assert desk.create_timeperiod_exceptions_from_ics(ICS_SAMPLE_WITH_RECURRENT_EVENT) == 2
|
|
252 |
assert TimePeriodException.objects.filter(desk=desk).count() == 2
|
|
253 |
assert set(TimePeriodException.objects.values_list('label', 'recurrence_id')) == set([('New Year\'s Eve', 0), ('New Year\'s Eve', 1)])
|
244 |
254 |
assert set(TimePeriodException.objects.values_list('start_datetime', flat=True)) == set([
|
245 |
255 |
make_aware(datetime.datetime(2018, 1, 1)), make_aware(datetime.datetime(2019, 1, 1))])
|
246 |
|
assert desk.create_timeperiod_exceptions_from_ics(ICS_SAMPLE_WITH_RECURRENT_EVENT) == 0
|
|
256 |
assert desk.create_timeperiod_exceptions_from_ics(ICS_SAMPLE_WITH_RECURRENT_EVENT.replace('SUMMARY:New Year\'s Eve', 'SUMMARY:Nouvel An')) == 0
|
|
257 |
assert set(TimePeriodException.objects.values_list('label', flat=True)) == set(['Nouvel An'])
|
247 |
258 |
# verify occurences are cleaned when count changed
|
248 |
|
assert desk.create_timeperiod_exceptions_from_ics(ICS_SAMPLE_WITH_RECURRENT_EVENT_2) == 0
|
249 |
|
assert TimePeriodException.objects.filter(desk=desk).count() == 2
|
|
259 |
assert desk.create_timeperiod_exceptions_from_ics(ICS_SAMPLE_WITH_RECURRENT_EVENT_2) == 1
|
|
260 |
assert TimePeriodException.objects.filter(desk=desk).count() == 3
|
250 |
261 |
assert set(TimePeriodException.objects.values_list('start_datetime', flat=True)) == set([
|
251 |
|
make_aware(datetime.datetime(2018, 1, 1)), make_aware(datetime.datetime(2018, 1, 2))])
|
252 |
|
|
253 |
|
def test_timeexception_creation_from_ics_with_dates():
|
254 |
|
agenda = Agenda(label=u'Test 5 agenda')
|
255 |
|
agenda.save()
|
256 |
|
desk = Desk(label='Test 5 desk', agenda=agenda)
|
257 |
|
desk.save()
|
258 |
|
lines = []
|
259 |
|
# remove end datetimes from ics
|
260 |
|
for line in ICS_SAMPLE_WITH_RECURRENT_EVENT.splitlines():
|
261 |
|
if line.startswith('RRULE:'):
|
262 |
|
continue
|
263 |
|
lines.append(line)
|
264 |
|
ics_sample = "\n".join(lines)
|
265 |
|
exceptions_count = desk.create_timeperiod_exceptions_from_ics(ics_sample)
|
266 |
|
assert exceptions_count == 2
|
267 |
|
for exception in TimePeriodException.objects.filter(desk=desk):
|
268 |
|
assert localtime(exception.start_datetime) == make_aware(datetime.datetime(2018, 1, 1, 0, 0))
|
269 |
|
assert localtime(exception.end_datetime) == make_aware(datetime.datetime(2018, 1, 1, 0, 0))
|
|
262 |
make_aware(datetime.datetime(2018, 1, 1)), make_aware(datetime.datetime(2018, 1, 2)), make_aware(datetime.datetime(2019, 1, 1))])
|
270 |
263 |
|
271 |
264 |
def test_timeexception_create_from_invalid_ics():
|
272 |
265 |
agenda = Agenda(label=u'Test 6 agenda')
|