From 7678da7926e71bff8266ea4ecb990b2fdb12b26a Mon Sep 17 00:00:00 2001 From: Unrud Date: Thu, 3 Aug 2017 19:47:00 +0200 Subject: [PATCH] Test unordered recurrences Time range matching stops early when the visited time range is behind the end date of the filter. Components are visited in the order, in which they are specified in the VCALENDAR. This can cause problems with overwritten recurrences. --- radicale/tests/static/event7.ics | 28 ++++++++++++++++++++++++++- radicale/tests/static/event8.ics | 33 ++++++++++++++++++++++++++++++++ radicale/tests/test_base.py | 21 +++++++++++++++----- 3 files changed, 76 insertions(+), 6 deletions(-) create mode 100644 radicale/tests/static/event8.ics diff --git a/radicale/tests/static/event7.ics b/radicale/tests/static/event7.ics index f9f98cd..8ae6114 100644 --- a/radicale/tests/static/event7.ics +++ b/radicale/tests/static/event7.ics @@ -20,12 +20,38 @@ END:DAYLIGHT END:VTIMEZONE BEGIN:VEVENT UID:event7 +DTSTART;TZID=Europe/Paris:20170701T080000 +DTEND;TZID=Europe/Paris:20170701T090000 +CREATED:20170601T060000Z +DTSTAMP:20170601T060000Z +LAST-MODIFIED:20170601T060000Z +RRULE:FREQ=DAILY +SUMMARY:event7 +TRANSP:OPAQUE +X-MOZ-GENERATION:1 +END:VEVENT +BEGIN:VEVENT +UID:event7 +RECURRENCE-ID;TZID=Europe/Paris:20170702T080000 +DTSTART;TZID=Europe/Paris:20170702T080000 +DTEND;TZID=Europe/Paris:20170702T080000 +CREATED:20170601T060000Z +DTSTAMP:20170601T060000Z +LAST-MODIFIED:20170601T060000Z +SEQUENCE:1 +SUMMARY:event7 +TRANSP:OPAQUE +X-MOZ-GENERATION:1 +END:VEVENT +BEGIN:VEVENT +UID:event7 +RECURRENCE-ID;TZID=Europe/Paris:20170703T080000 DTSTART;TZID=Europe/Paris:20170601T080000 DTEND;TZID=Europe/Paris:20170601T090000 CREATED:20170601T060000Z DTSTAMP:20170601T060000Z LAST-MODIFIED:20170601T060000Z -RDATE;TZID=Europe/Paris:20170701T080000 +SEQUENCE:1 SUMMARY:event7 TRANSP:OPAQUE X-MOZ-GENERATION:1 diff --git a/radicale/tests/static/event8.ics b/radicale/tests/static/event8.ics new file mode 100644 index 0000000..39136e1 --- /dev/null +++ b/radicale/tests/static/event8.ics @@ -0,0 +1,33 @@ +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN +BEGIN:VTIMEZONE +TZID:Europe/Paris +BEGIN:STANDARD +DTSTART:19701025T030000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZNAME:CET +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19700329T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3 +TZNAME:CEST +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +UID:event8 +DTSTART;TZID=Europe/Paris:20170601T080000 +DTEND;TZID=Europe/Paris:20170601T090000 +CREATED:20170601T060000Z +DTSTAMP:20170601T060000Z +LAST-MODIFIED:20170601T060000Z +RDATE;TZID=Europe/Paris:20170701T080000 +SUMMARY:event8 +TRANSP:OPAQUE +X-MOZ-GENERATION:1 +END:VEVENT +END:VCALENDAR diff --git a/radicale/tests/test_base.py b/radicale/tests/test_base.py index d9a5e26..a503127 100644 --- a/radicale/tests/test_base.py +++ b/radicale/tests/test_base.py @@ -687,24 +687,35 @@ class BaseRequestsMixIn: assert "href>/calendar.ics/event3.ics/calendar.ics/event4.ics/calendar.ics/event5.ics + + + + """], items=(6, 7, 8)) + assert "href>/calendar.ics/event6.ics/calendar.ics/event7.ics/calendar.ics/event8.ics - """], items=(6, 7)) - # HACK: VObject doesn't match RECURRENCE-ID to recurrences, the - # overwritten recurrence is still used for filtering. + """], items=(6, 7, 8)) assert "href>/calendar.ics/event6.ics/calendar.ics/event7.ics/calendar.ics/event8.ics - """], items=(6, 7)) + """], items=(6, 7, 8)) assert "href>/calendar.ics/event6.ics/calendar.ics/event7.ics/calendar.ics/event7.ics/calendar.ics/event8.ics