from datetime import datetime from app.core.datetime import unix_ms_utc, utc_now from app.schemas import EventCreate, EventResponse, EspTimeResponse def test_event_input_datetime_is_normalized_to_utc_naive() -> None: event = EventCreate( title="Evening briefing", event_date="2026-06-01T19:30:00+01:00", event_time=None, ) assert event.event_date == datetime(2026, 6, 1, 18, 30) assert event.event_date.tzinfo is None def test_response_datetimes_serialize_as_zulu() -> None: event = EventResponse( id=1, title="Evening briefing", description=None, event_date=datetime(2026, 6, 1, 18, 30), event_time=None, location=None, max_attendees=None, status="draft", created_by=1, created_at=datetime(2026, 5, 1, 10, 0), updated_at=datetime(2026, 5, 1, 10, 0), ) payload = event.model_dump_json() assert '"event_date":"2026-06-01T18:30:00Z"' in payload assert '"created_at":"2026-05-01T10:00:00Z"' in payload def test_esp_time_uses_same_utc_instant_for_iso_and_unix_ms() -> None: now = utc_now() response = EspTimeResponse( server_time_utc=now, unix_ms=unix_ms_utc(now), ) assert '"server_time_utc":"' in response.model_dump_json() assert response.unix_ms == unix_ms_utc(now)