|
@@ -1,14 +1,18 @@
|
|
|
+import copy
|
|
|
+import pathlib
|
|
|
+
|
|
|
import icalendar.cal
|
|
|
import pytest
|
|
|
|
|
|
import ics2vdir
|
|
|
|
|
|
|
|
|
-@pytest.mark.parametrize(
|
|
|
- ("event_ical", "expected_filename"),
|
|
|
- [
|
|
|
- (
|
|
|
- b"""BEGIN:VEVENT
|
|
|
+def _normalize_ical(ical: bytes) -> bytes:
|
|
|
+ return ical.replace(b"\n", b"\r\n")
|
|
|
+
|
|
|
+
|
|
|
+_SINGLE_EVENT_ICAL = _normalize_ical(
|
|
|
+ b"""BEGIN:VEVENT
|
|
|
SUMMARY:party
|
|
|
DTSTART:20201024T100000Z
|
|
|
DTEND:20201026T120000Z
|
|
@@ -22,9 +26,16 @@ LOCATION:
|
|
|
STATUS:CONFIRMED
|
|
|
TRANSP:OPAQUE
|
|
|
END:VEVENT
|
|
|
-""",
|
|
|
- "1qa2ws3ed4rf5tg@google.com.ics",
|
|
|
- ),
|
|
|
+"""
|
|
|
+)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ ("event_ical", "expected_filename"),
|
|
|
+ [
|
|
|
+ (_SINGLE_EVENT_ICAL, "1qa2ws3ed4rf5tg@google.com.ics",),
|
|
|
(
|
|
|
b"""BEGIN:VEVENT
|
|
|
SUMMARY:work
|
|
@@ -48,5 +59,40 @@ END:VEVENT
|
|
|
)
|
|
|
def test__event_vdir_filename(event_ical, expected_filename):
|
|
|
event = icalendar.cal.Event.from_ical(event_ical)
|
|
|
-
|
|
|
assert ics2vdir._event_vdir_filename(event) == expected_filename
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.parametrize("event_ical", [_SINGLE_EVENT_ICAL])
|
|
|
+def test__export_event_create(tmpdir, event_ical):
|
|
|
+ temp_path = pathlib.Path(tmpdir)
|
|
|
+ event = icalendar.cal.Event.from_ical(event_ical)
|
|
|
+ ics2vdir._export_event(event, temp_path)
|
|
|
+ (ics_path,) = temp_path.iterdir()
|
|
|
+ assert ics_path.name == "1qa2ws3ed4rf5tg@google.com.ics"
|
|
|
+ assert ics_path.read_bytes() == _SINGLE_EVENT_ICAL
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.parametrize("event_ical", [_SINGLE_EVENT_ICAL])
|
|
|
+def test__export_event_update(tmpdir, event_ical):
|
|
|
+ temp_path = pathlib.Path(tmpdir)
|
|
|
+ event = icalendar.cal.Event.from_ical(event_ical)
|
|
|
+ ics2vdir._export_event(event, temp_path)
|
|
|
+ event["SUMMARY"] += " suffix"
|
|
|
+ ics2vdir._export_event(event, temp_path)
|
|
|
+ (ics_path,) = temp_path.iterdir()
|
|
|
+ assert ics_path.name == event["UID"] + ".ics"
|
|
|
+ assert ics_path.read_bytes() == _SINGLE_EVENT_ICAL.replace(
|
|
|
+ b"party", b"party suffix"
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.parametrize("event_ical", [_SINGLE_EVENT_ICAL])
|
|
|
+def test__export_event_unchanged(tmpdir, event_ical):
|
|
|
+ temp_path = pathlib.Path(tmpdir)
|
|
|
+ event = icalendar.cal.Event.from_ical(event_ical)
|
|
|
+ ics2vdir._export_event(event, temp_path)
|
|
|
+ (ics_path,) = temp_path.iterdir()
|
|
|
+ old_stat = copy.deepcopy(ics_path.stat())
|
|
|
+ ics2vdir._export_event(event, temp_path)
|
|
|
+ assert ics_path.stat() == old_stat
|
|
|
+ assert ics_path.read_bytes() == _SINGLE_EVENT_ICAL
|