# Calendar Entry Test Fixtures

## Purpose
Define canonical calendar entries used across admin UI, public UI, CalDAV, ICS, and API tests so scenarios are consistent end-to-end.

## Global Assumptions
- Timezone baseline: `Europe/London`
- Date format: ISO 8601 in docs, converted as needed by UI/API
- IDs/UIDs are stable in test environments

## Fixture Set

### CE-001 Single Timed Event
- Title: `Board Meeting`
- Location: `Room A`
- Category: `Governance`
- Start: `2026-04-01T10:00:00+01:00`
- End: `2026-04-01T11:30:00+01:00`
- Repeat: `none`
- Description: `Quarterly board review.`

### CE-002 All-Day Event
- Title: `Office Closed`
- Location: `HQ`
- Category: `Operations`
- Start: `2026-05-04` (all day)
- End: `2026-05-05` (exclusive end for all-day semantics)
- Repeat: `none`
- Description: `Public holiday closure.`

### CE-003 Daily Recurrence (Count-Limited)
- Title: `Daily Standup`
- Location: `Online`
- Category: `Team`
- Start: `2026-04-06T09:00:00+01:00`
- End: `2026-04-06T09:15:00+01:00`
- Repeat: `daily`
- Custom interval: `1`
- Range mode: `count`
- Count: `10`
- Description: `15 minute sync.`

### CE-004 Weekly Recurrence (No End)
- Title: `Community Lunch`
- Location: `Cafeteria`
- Category: `Community`
- Start: `2026-04-08T12:30:00+01:00`
- End: `2026-04-08T13:30:00+01:00`
- Repeat: `weekly`
- Custom interval: `1`
- Range mode: `no_end`
- Description: `Weekly community lunch.`

### CE-005 Monthly Recurrence (Until Date)
- Title: `Finance Close`
- Location: `Finance Office`
- Category: `Finance`
- Start: `2026-04-30T17:00:00+01:00`
- End: `2026-04-30T18:00:00+01:00`
- Repeat: `monthly`
- Custom interval: `1`
- Range mode: `until`
- Until: `2026-08-31`
- Description: `Month-end close process.`

### CE-006 Yearly Recurrence
- Title: `Annual Conference`
- Location: `Main Hall`
- Category: `Events`
- Start: `2026-06-15T10:00:00+01:00`
- End: `2026-06-15T17:00:00+01:00`
- Repeat: `yearly`
- Custom interval: `1`
- Range mode: `count`
- Count: `3`
- Description: `Annual community conference.`

### CE-007 Custom Every 2 Weeks (Until Date)
- Title: `Fortnightly Coaching`
- Location: `Online`
- Category: `Training`
- Start: `2026-04-07T15:00:00+01:00`
- End: `2026-04-07T16:00:00+01:00`
- Repeat: `custom`
- Base unit: `weekly`
- Interval: `2`
- Range mode: `until`
- Until: `2026-07-31`
- Description: `Coaching check-in.`

### CE-008 DST Boundary Event
- Title: `DST Validation Event`
- Location: `Lab`
- Category: `QA`
- Start: `2026-10-25T00:30:00+01:00`
- End: `2026-10-25T02:30:00+00:00`
- Repeat: `none`
- Description: `Validates DST transition rendering.`

### CE-009 Leap-Year Annual Event
- Title: `Leap Day Marker`
- Location: `Calendar`
- Category: `QA`
- Start: `2028-02-29T09:00:00+00:00`
- End: `2028-02-29T10:00:00+00:00`
- Repeat: `yearly`
- Custom interval: `1`
- Range mode: `count`
- Count: `3`
- Description: `Leap day recurrence behavior.`

### CE-010 Recurring Event with Exception Delete
- Title: `Therapy Session`
- Location: `Clinic`
- Category: `Health`
- Start: `2026-04-03T14:00:00+01:00`
- End: `2026-04-03T15:00:00+01:00`
- Repeat: `weekly`
- Custom interval: `1`
- Range mode: `count`
- Count: `8`
- Description: `Used for single-occurrence delete exception tests.`
- Exception target occurrence: `2026-04-17T14:00:00+01:00` (delete this occurrence only)

## Core Assertions by Fixture
- CE-001/CE-002 validate single-event CRUD, all-day handling, UI display.
- CE-003..CE-007 validate recurrence creation, expansion, update, and persistence.
- CE-008 validates DST render/sync behavior.
- CE-009 validates leap-year recurrence behavior.
- CE-010 validates recurrence exception behavior (no series split).
