From 0edd8b9d1903f63f145c612bf3cdf548b588105b Mon Sep 17 00:00:00 2001 From: Brian Hartvigsen Date: Sat, 30 Oct 2021 17:24:26 -0600 Subject: [PATCH] Add tests for status and url --- icalevents/icalparser.py | 5 ++-- test/test_data/status_and_url.ics | 41 +++++++++++++++++++++++++++++++ test/test_icalevents.py | 14 +++++++++++ 3 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 test/test_data/status_and_url.ics diff --git a/icalevents/icalparser.py b/icalevents/icalparser.py index 096021a..fcdf79c 100644 --- a/icalevents/icalparser.py +++ b/icalevents/icalparser.py @@ -143,6 +143,7 @@ class Event: ne.created = self.created ne.last_modified = self.last_modified ne.categories = self.categories + ne.status = self.status ne.url = self.url return ne @@ -231,10 +232,10 @@ def create_event(component, tz=UTC): event.categories = encoded_categories if component.get("status"): - event.status = component.get("status") + event.status = encode(component.get("status")) if component.get("url"): - event.url = component.get("url") + event.url = encode(component.get("url")) return event diff --git a/test/test_data/status_and_url.ics b/test/test_data/status_and_url.ics new file mode 100644 index 0000000..be26ade --- /dev/null +++ b/test/test_data/status_and_url.ics @@ -0,0 +1,41 @@ +BEGIN:VCALENDAR +BEGIN:VTIMEZONE +TZID:Europe/Berlin +END:VTIMEZONE +BEGIN:VEVENT +DESCRIPTION:Event with Status and URL +SUMMARY:Tentative Event w/ Recurrance to test copy +STATUS:TENTATIVE +DTSTART;VALUE=DATE:20181030 +DTEND;VALUE=DATE:20181031 +RRULE:FREQ=WEEKLY;BYDAY=TU +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Event with Status and URL +SUMMARY:Confirmed Event +STATUS:CONFIRMED +URL:https://example.com/ +DTSTART;VALUE=DATE:20181030 +DTEND;VALUE=DATE:20181031 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Event with Status +SUMMARY:Cancelled Event +STATUS:CANCELLED +DTSTART;VALUE=DATE:20181030 +DTEND;VALUE=DATE:20181031 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Event with Status +SUMMARY:XPARAM Event +STATUS;X-SOMETHING=IGNOREME:CANCELLED +DTSTART;VALUE=DATE:20181030 +DTEND;VALUE=DATE:20181031 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Event without Status +SUMMARY:Event +DTSTART;VALUE=DATE:20181030 +DTEND;VALUE=DATE:20181031 +END:VEVENT +END:VCALENDAR diff --git a/test/test_icalevents.py b/test/test_icalevents.py index f40d723..165d600 100644 --- a/test/test_icalevents.py +++ b/test/test_icalevents.py @@ -421,3 +421,17 @@ class ICalEventsTests(unittest.TestCase): self.assertEqual(e1.transparent, True, "respect transparency") self.assertEqual(e2.transparent, False, "respect opaqueness") + + def test_status_and_url(self): + ical = "test/test_data/status_and_url.ics" + start = date(2018, 10, 30) + end = date(2018, 10, 31) + + [ev1, ev2, ev3, ev4, ev5] = icalevents.events(file=ical, start=start, end=end) + self.assertEqual(ev1.status, "TENTATIVE") + self.assertEqual(ev1.url, None) + self.assertEqual(ev2.status, "CONFIRMED") + self.assertEqual(ev2.url, "https://example.com/") + self.assertEqual(ev3.status, "CANCELLED") + self.assertEqual(ev4.status, "CANCELLED") + self.assertEqual(ev5.status, None)