tests: restore full coverage of agenda/models.py (#19071)
This commit is contained in:
parent
c4df05a490
commit
427a4e25d9
|
@ -35,6 +35,27 @@ SUMMARY:Event 2
|
|||
END:VEVENT
|
||||
END:VCALENDAR"""
|
||||
|
||||
ICS_SAMPLE_WITH_DURATION = """BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//foo.bar//EN
|
||||
BEGIN:VEVENT
|
||||
DTSTAMP:20170824T082855Z
|
||||
UID:8c4c219889d244232c0a565f4950c3ff65dd5d64
|
||||
DTSTART:20170831T170800Z
|
||||
DURATION:PT3H26M
|
||||
SEQUENCE:1
|
||||
SUMMARY:Event 1
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
DTSTAMP:20170824T092855Z
|
||||
UID:950c3ff889d2465dd5d648c4c2194232c0a565f4
|
||||
DTSTART:20170830T180800Z
|
||||
DURATION:P1D4H26M
|
||||
SEQUENCE:2
|
||||
SUMMARY:Event 2
|
||||
END:VEVENT
|
||||
END:VCALENDAR"""
|
||||
|
||||
ICS_SAMPLE_WITH_RECURRENT_EVENT = """BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//foo.bar//EN
|
||||
|
@ -73,6 +94,18 @@ RRULE:FREQ=YEARLY;COUNT=1
|
|||
END:VEVENT
|
||||
END:VCALENDAR"""
|
||||
|
||||
ICS_SAMPLE_WITH_RECURRENT_EVENT_IN_THE_PAST = """BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//foo.bar//EN
|
||||
BEGIN:VEVENT
|
||||
DTSTAMP:20180824T082855Z
|
||||
DTSTART:20120101
|
||||
DURATION:PT24H
|
||||
SUMMARY:New Year's Eve
|
||||
RRULE:FREQ=YEARLY
|
||||
END:VEVENT
|
||||
END:VCALENDAR"""
|
||||
|
||||
ICS_SAMPLE_WITH_NO_EVENTS = """BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//foo.bar//EN
|
||||
|
@ -376,3 +409,38 @@ def test_base_meeting_duration():
|
|||
meeting_type = MeetingType(agenda=agenda, label='Bar', duration=45)
|
||||
meeting_type.save()
|
||||
assert agenda.get_base_meeting_duration() == 15
|
||||
|
||||
|
||||
def test_timeperiodexception_creation_from_ics_with_duration():
|
||||
# test that event defined using duration works and give the same start and
|
||||
# end dates
|
||||
agenda = Agenda(label=u'Test 1 agenda')
|
||||
agenda.save()
|
||||
desk = Desk(label='Test 1 desk', agenda=agenda)
|
||||
desk.save()
|
||||
exceptions_count = desk.create_timeperiod_exceptions_from_ics(ICS_SAMPLE_WITH_DURATION)
|
||||
assert exceptions_count == 2
|
||||
assert TimePeriodException.objects.filter(desk=desk).count() == 2
|
||||
assert set(TimePeriodException.objects.values_list('start_datetime', flat=True)) == set([
|
||||
make_aware(datetime.datetime(2017, 8, 31, 19, 8, 0)),
|
||||
make_aware(datetime.datetime(2017, 8, 30, 20, 8, 0)),
|
||||
])
|
||||
assert set(TimePeriodException.objects.values_list('end_datetime', flat=True)) == set([
|
||||
make_aware(datetime.datetime(2017, 8, 31, 22, 34, 0)),
|
||||
make_aware(datetime.datetime(2017, 9, 1, 0, 34, 0)),
|
||||
])
|
||||
|
||||
|
||||
@pytest.mark.freeze_time('2017-12-01')
|
||||
def test_timeperiodexception_creation_from_ics_with_recurrences_in_the_past():
|
||||
# test that recurrent events before today are not created
|
||||
# also test that duration + recurrent events works
|
||||
agenda = Agenda(label=u'Test 4 agenda')
|
||||
agenda.save()
|
||||
desk = Desk(label='Test 4 desk', agenda=agenda)
|
||||
desk.save()
|
||||
assert desk.create_timeperiod_exceptions_from_ics(ICS_SAMPLE_WITH_RECURRENT_EVENT_IN_THE_PAST) == 2
|
||||
assert TimePeriodException.objects.filter(desk=desk).count() == 2
|
||||
assert set(TimePeriodException.objects.values_list('start_datetime', flat=True)) == set([
|
||||
make_aware(datetime.datetime(2018, 1, 1)), make_aware(datetime.datetime(2019, 1, 1))])
|
||||
assert desk.create_timeperiod_exceptions_from_ics(ICS_SAMPLE_WITH_RECURRENT_EVENT_IN_THE_PAST) == 0
|
||||
|
|
Loading…
Reference in New Issue