48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
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)
|