test_ical_helper.py (2444B)
1 import os 2 import unittest 3 from datetime import datetime, timedelta, timezone 4 from icalendar import Calendar, Event 5 from ungana.ical.ical_helper import ICalHelper 6 7 8 class TestICalHelper(unittest.TestCase): 9 10 def setUp(self): 11 self.cal = Calendar() 12 self.event = Event() 13 self.event.add("UID", "12345") 14 self.event.add("DTSTART", datetime(2025, 9, 6, 10, 0, tzinfo=timezone.utc)) 15 self.event.add("DTEND", datetime(2025, 9, 6, 11, 0, tzinfo=timezone.utc)) 16 self.event.add("SUMMARY", "Gophers Meetup") 17 self.cal.add_component(self.event) 18 19 def test_update_event_summary(self): 20 updates = {"SUMMARY": "Gophers Weekly Meetup"} 21 updated = ICalHelper.update_event(self.cal, updates) 22 ev = ICalHelper.get_first_event(updated) 23 self.assertEqual(str(ev["SUMMARY"]), "Gophers Weekly Meetup") 24 25 def test_update_event_with_url_role(self): 26 updates = {"URL;ROLE=HOST": "http://gophers.org"} 27 updated = ICalHelper.update_event(self.cal, updates) 28 ev = ICalHelper.get_first_event(updated) 29 urls = ev.get("URL") 30 self.assertIn("HOST", urls.params["ROLE"]) 31 32 def test_get_first_event_and_all_events(self): 33 first = ICalHelper.get_first_event(self.cal) 34 self.assertEqual(str(first["SUMMARY"]), "Gophers Meetup") 35 all_events = ICalHelper.get_all_events(self.cal) 36 self.assertEqual(len(all_events), 1) 37 38 def test_normalize_ical_field_datetime_with_tzid(self): 39 dt = datetime(2025, 9, 6, 10, 0) # naive 40 #normalized = ICalHelper.normalize_ical_field(dt, "UTC") 41 normalized = ICalHelper.normalize_ical_field(dt, "Africa/Nairobi") 42 self.assertIsNotNone(normalized.tzinfo) 43 44 def test_check_existing_event_true(self): 45 exists = ICalHelper.check_existing_event(self.cal, self.event) 46 self.assertTrue(exists) 47 48 def test_check_existing_event_false(self): 49 ev = Event() 50 ev.add("DTSTART", datetime(2025, 9, 7, 10, 0, tzinfo=timezone.utc)) 51 ev.add("DTEND", datetime(2025, 9, 7, 11, 0, tzinfo=timezone.utc)) 52 ev.add("SUMMARY", "Gophers meetup") 53 exists = ICalHelper.check_existing_event(self.cal, ev) 54 self.assertFalse(exists) 55 56 def test_update_event_invalid_calendar(self): 57 with self.assertRaises(ValueError): 58 ICalHelper.update_event(None, {"SUMMARY": "x"}) 59 60 61 if __name__ == "__main__": 62 unittest.main()