test_ical_feeds.py 882 B

123456789101112131415161718192021222324252627
  1. import pytest
  2. from room_cal._utils import CalendarEntry
  3. from room_cal.ical_feeds import fetch_calendar
  4. from room_cal.cal._backend import EventRecord
  5. _FIRE_ENTRY = CalendarEntry(name='Fire', url='webcal://cal.4114.us/fire.ics')
  6. _HOUSE_ENTRY = CalendarEntry(name='House', caldav='House')
  7. def _assert_events(events: list[EventRecord], expected_calendar: str):
  8. assert isinstance(events, list), "fetch_calendar should return a list"
  9. for e in events:
  10. assert isinstance(e, EventRecord), f"Expected EventRecord, got {type(e)}"
  11. assert e._meta.get('calendar') == expected_calendar
  12. assert e.end >= e.start
  13. @pytest.mark.asyncio
  14. async def test_fire_http_ical():
  15. events = await fetch_calendar(_FIRE_ENTRY)
  16. _assert_events(events, 'Fire')
  17. @pytest.mark.asyncio
  18. async def test_house_caldav():
  19. events = await fetch_calendar(_HOUSE_ENTRY)
  20. _assert_events(events, 'House')