74 lines
2.6 KiB
Python
74 lines
2.6 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import importlib.machinery
|
|
import importlib.util
|
|
import pathlib
|
|
import sys
|
|
import unittest
|
|
from unittest.mock import Mock
|
|
|
|
|
|
ROOT = pathlib.Path(__file__).resolve().parents[2]
|
|
HELPER = ROOT / "config/dot/quickshell/scripts/calendar-agenda"
|
|
sys.dont_write_bytecode = True
|
|
|
|
loader = importlib.machinery.SourceFileLoader("calendar_agenda", str(HELPER))
|
|
spec = importlib.util.spec_from_loader(loader.name, loader)
|
|
calendar_agenda = importlib.util.module_from_spec(spec)
|
|
loader.exec_module(calendar_agenda)
|
|
|
|
|
|
class CalendarAgendaBridgeTest(unittest.TestCase):
|
|
def test_meeting_url_allowlist(self):
|
|
meeting_url = "https://meet.google.com/abc-defg-hij"
|
|
|
|
self.assertEqual(calendar_agenda.find_join_url([f"Planning: {meeting_url}"]), meeting_url)
|
|
self.assertEqual(calendar_agenda.find_join_url(["https://example.com/private"]), "")
|
|
self.assertEqual(calendar_agenda.find_join_url(["http://zoom.us/j/123"]), "")
|
|
|
|
def test_stable_instance_id_includes_recurrence(self):
|
|
self.assertEqual(
|
|
calendar_agenda.stable_event_id("source", "uid", "20260817T133000Z"),
|
|
"source:uid:20260817T133000Z",
|
|
)
|
|
|
|
def test_snapshot_sort_order(self):
|
|
events = [
|
|
{"id": "b", "start": 20, "end": 30, "allDay": False},
|
|
{"id": "a", "start": 10, "end": 20, "allDay": True},
|
|
]
|
|
|
|
self.assertEqual([event["id"] for event in calendar_agenda.sort_events(events)], ["a", "b"])
|
|
|
|
def test_normalizes_an_all_day_recurrence_instance(self):
|
|
recurrence_id = Mock()
|
|
recurrence_id.is_null_time.return_value = False
|
|
recurrence_id.as_ical_string.return_value = "20260817"
|
|
component = Mock()
|
|
component.get_uid.return_value = "uid"
|
|
component.get_recurrenceid.return_value = recurrence_id
|
|
component.get_summary.return_value = "Synthetic event"
|
|
component.get_location.return_value = ""
|
|
component.get_description.return_value = ""
|
|
component.get_first_property.return_value = None
|
|
start = Mock()
|
|
start.as_timet.return_value = 1786924800
|
|
start.is_date.return_value = True
|
|
end = Mock()
|
|
end.as_timet.return_value = 1787011200
|
|
end.is_date.return_value = True
|
|
|
|
event = calendar_agenda.normalize_instance(
|
|
{"id": "source", "name": "Synthetic", "color": "#82aaff"},
|
|
component,
|
|
start,
|
|
end,
|
|
)
|
|
|
|
self.assertTrue(event["allDay"])
|
|
self.assertEqual(event["id"], "source:uid:20260817")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|