- Add calendarEvents.hasRrule boolean + idx_calendar_events_has_rrule index (Phase 2 pre-filter) - Add calendars.isShared boolean for shared-family calendar identification - Create apps/pwa/vitest.config.ts with jsdom environment - Add vitest, @testing-library/react, jsdom, @testing-library/jest-dom to PWA devDependencies - Add "test": "vitest run" script to apps/pwa/package.json - Create three ICS fixtures: weekly-dst.ics (DST spanning), allday-birthday.ics, exdate-series.ics - Create RED test stub expand.test.ts with concrete DST wall-clock assertions (10:00 local both sides of March 2026 boundary) - Create RED test stub events.test.ts with 400 validation and color/isShared field contracts - Create RED test stub hydrateEvents.test.ts with Temporal type and calendarId routing contracts (shared→"shared", personal→String(ownerUserId)) - Create RED test stub calendarConfig.test.ts with firstDayOfWeek 0→7 translation contract
30 lines
663 B
Plaintext
30 lines
663 B
Plaintext
BEGIN:VCALENDAR
|
|
VERSION:2.0
|
|
PRODID:-//FamilySync//Test//EN
|
|
BEGIN:VTIMEZONE
|
|
TZID:America/New_York
|
|
BEGIN:STANDARD
|
|
DTSTART:19701101T020000
|
|
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
|
|
TZOFFSETFROM:-0400
|
|
TZOFFSETTO:-0500
|
|
TZNAME:EST
|
|
END:STANDARD
|
|
BEGIN:DAYLIGHT
|
|
DTSTART:19700308T020000
|
|
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
|
|
TZOFFSETFROM:-0500
|
|
TZOFFSETTO:-0400
|
|
TZNAME:EDT
|
|
END:DAYLIGHT
|
|
END:VTIMEZONE
|
|
BEGIN:VEVENT
|
|
UID:weekly-meeting-dst@familysync.test
|
|
DTSTART;TZID=America/New_York:20260301T100000
|
|
RRULE:FREQ=WEEKLY
|
|
SUMMARY:Weekly Meeting DST Test
|
|
DESCRIPTION:Weekly meeting spanning the March 2026 America/New_York EST to EDT transition
|
|
DURATION:PT1H
|
|
END:VEVENT
|
|
END:VCALENDAR
|