- 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
12 lines
259 B
Plaintext
12 lines
259 B
Plaintext
BEGIN:VCALENDAR
|
|
VERSION:2.0
|
|
PRODID:-//FamilySync//Test//EN
|
|
BEGIN:VEVENT
|
|
UID:birthday-annual@familysync.test
|
|
DTSTART;VALUE=DATE:20260615
|
|
RRULE:FREQ=YEARLY
|
|
SUMMARY:Birthday
|
|
DESCRIPTION:Annual birthday event - all-day, no time component
|
|
END:VEVENT
|
|
END:VCALENDAR
|