diff --git a/radicale/tests/test_base.py b/radicale/tests/test_base.py index d2b26949..eb25bd1f 100644 --- a/radicale/tests/test_base.py +++ b/radicale/tests/test_base.py @@ -1214,6 +1214,90 @@ permissions: RrWw""") """], items=(9,)) assert "/calendar.ics/event9.ics" not in answer + def test_time_range_filter_without_comp_filter(self) -> None: + """Report request with time-range filter without comp-filter on events.""" + answer = self._test_filter(["""\ + + +"""], "event", items=range(1, 6)) + assert "/calendar.ics/event1.ics" in answer + assert "/calendar.ics/event2.ics" in answer + assert "/calendar.ics/event3.ics" in answer + assert "/calendar.ics/event4.ics" in answer + assert "/calendar.ics/event5.ics" in answer + answer = self._test_filter(["""\ + + +"""], items=range(1, 6)) + assert "/calendar.ics/event1.ics" not in answer + assert "/calendar.ics/event2.ics" in answer + assert "/calendar.ics/event3.ics" in answer + assert "/calendar.ics/event4.ics" in answer + assert "/calendar.ics/event5.ics" in answer + answer = self._test_filter(["""\ + + +"""], items=range(1, 6)) + assert "/calendar.ics/event1.ics" not in answer + assert "/calendar.ics/event2.ics" not in answer + assert "/calendar.ics/event3.ics" in answer + assert "/calendar.ics/event4.ics" in answer + assert "/calendar.ics/event5.ics" in answer + answer = self._test_filter(["""\ + + +"""], items=range(1, 6)) + assert "/calendar.ics/event1.ics" not in answer + assert "/calendar.ics/event2.ics" not in answer + assert "/calendar.ics/event3.ics" in answer + assert "/calendar.ics/event4.ics" not in answer + assert "/calendar.ics/event5.ics" not in answer + answer = self._test_filter(["""\ + + +"""], items=range(1, 6)) + assert "/calendar.ics/event1.ics" not in answer + assert "/calendar.ics/event2.ics" not in answer + assert "/calendar.ics/event3.ics" not in answer + assert "/calendar.ics/event4.ics" not in answer + assert "/calendar.ics/event5.ics" not in answer + # HACK: VObject doesn't match RECURRENCE-ID to recurrences, the + # overwritten recurrence is still used for filtering. + answer = self._test_filter(["""\ + + +"""], items=(6, 7, 8, 9)) + assert "/calendar.ics/event6.ics" in answer + assert "/calendar.ics/event7.ics" in answer + assert "/calendar.ics/event8.ics" in answer + assert "/calendar.ics/event9.ics" in answer + answer = self._test_filter(["""\ + + +"""], items=(6, 7, 8, 9)) + assert "/calendar.ics/event6.ics" in answer + assert "/calendar.ics/event7.ics" in answer + assert "/calendar.ics/event8.ics" in answer + assert "/calendar.ics/event9.ics" not in answer + answer = self._test_filter(["""\ + + +"""], items=(6, 7, 8, 9)) + assert "/calendar.ics/event6.ics" not in answer + assert "/calendar.ics/event7.ics" not in answer + assert "/calendar.ics/event8.ics" not in answer + assert "/calendar.ics/event9.ics" not in answer + answer = self._test_filter(["""\ + + +"""], items=(9,)) + assert "/calendar.ics/event9.ics" in answer + answer = self._test_filter(["""\ + + +"""], items=(9,)) + assert "/calendar.ics/event9.ics" not in answer + def test_time_range_filter_events_rrule(self) -> None: """Report request with time-range filter on events with rrules.""" answer = self._test_filter(["""\