G7 증명과 G8 clean-head 승격 준비

This commit is contained in:
Yun Chan 2026-08-09 18:22:03 +09:00
parent 94c681d450
commit 5221f79e3f
52 changed files with 6876 additions and 506 deletions

View file

@ -0,0 +1,49 @@
"""회기 읽기 모델의 시간 직렬화 계약 테스트."""
from __future__ import annotations
import unittest
from datetime import datetime, timezone
from .session_read_model import iso, session_calendar_date
from .services.session_metrics import iso_datetime
class SessionReadModelIsoTest(unittest.TestCase):
def test_none_remains_none(self) -> None:
self.assertIsNone(iso(None))
def test_epoch_is_serialized_as_utc_with_offset(self) -> None:
self.assertEqual(iso(0), "1970-01-01T00:00:00+00:00")
def test_timestamp_round_trips_without_local_timezone_drift(self) -> None:
timestamp = 1_800_000_120.0
rendered = iso(timestamp)
self.assertIsNotNone(rendered)
assert rendered is not None
parsed = datetime.fromisoformat(rendered)
self.assertEqual(parsed.tzinfo, timezone.utc)
self.assertEqual(parsed.timestamp(), timestamp)
def test_serialized_timestamp_has_explicit_utc_suffix(self) -> None:
rendered = iso(1_800_000_120.0)
self.assertIsNotNone(rendered)
assert rendered is not None
self.assertTrue(rendered.endswith("+00:00"))
def test_dashboard_metrics_use_the_same_utc_contract(self) -> None:
timestamp = 1_800_000_120.0
self.assertEqual(iso_datetime(timestamp), iso(timestamp))
def test_review_calendar_date_uses_korea_standard_time(self) -> None:
utc_late_afternoon = datetime(2026, 8, 8, 15, 30, tzinfo=timezone.utc)
self.assertEqual(session_calendar_date(utc_late_afternoon.timestamp()), "2026-08-09")
if __name__ == "__main__":
unittest.main()