aboutsummaryrefslogtreecommitdiff
path: root/tests/test-calendar-sync--parse-exception-event.el
Commit message (Collapse)AuthorAgeFilesLines
* fix(calendar-sync): drop singly-declined recurring occurrencesCraig Jennings4 days1-0/+22
| | | | | | Declining one occurrence of a recurring meeting left it on the agenda. Google emits that decline as a RECURRENCE-ID override carrying the user's PARTSTAT=DECLINED. But calendar-sync--parse-exception-event never read the override's attendee block, so the occurrence kept the series' inherited "accepted" status and the declined filter never dropped it. The apply side already re-derives status from an override's attendees. The parse side just wasn't supplying them. The fix parses the override's ATTENDEE lines into :attendees, the same way parse-event does. A unit test covers the extraction. An integration test runs the full parse/apply/filter chain on a declined week.
* refactor(calendar-sync): extract per-event recurrence-exception parserCraig Jennings14 days1-0/+64
Lift the 14-binding let* body out of calendar-sync--collect-recurrence-exceptions into calendar-sync--parse-exception-event, which returns the exception plist (or nil) for one VEVENT; the collector's dolist becomes a thin uid + puthash. Add Normal/Boundary/Error tests for the new pure helper.