robot-u-site/tests/test_calendar_feeds.py

42 lines
1.3 KiB
Python

from __future__ import annotations
import unittest
from datetime import datetime, timedelta
from zoneinfo import ZoneInfo
from calendar_feeds import _parse_ics
class CalendarFeedTestCase(unittest.TestCase):
def test_weekly_recurrence_returns_future_occurrences(self) -> None:
timezone = ZoneInfo("America/New_York")
starts_at = datetime.now(timezone).replace(
hour=13,
minute=0,
second=0,
microsecond=0,
) - timedelta(days=7)
ends_at = starts_at.replace(hour=16)
raw_calendar = f"""BEGIN:VCALENDAR
X-WR-CALNAME:Robot-U
BEGIN:VEVENT
SUMMARY:Robotics Club
DTSTART;TZID=America/New_York:{starts_at.strftime("%Y%m%dT%H%M%S")}
DTEND;TZID=America/New_York:{ends_at.strftime("%Y%m%dT%H%M%S")}
RRULE:FREQ=WEEKLY
LOCATION:44 Portland Street
END:VEVENT
END:VCALENDAR
"""
_calendar_name, events = _parse_ics(raw_calendar, "https://example.com/calendar.ics")
self.assertGreaterEqual(len(events), 1)
self.assertEqual(events[0].title, "Robotics Club")
self.assertGreaterEqual(events[0].starts_at, datetime.now(ZoneInfo("UTC")))
self.assertEqual(events[0].starts_at.tzinfo, timezone)
self.assertEqual(events[0].mode, "44 Portland Street")
if __name__ == "__main__":
unittest.main()