"""Tests for CommsLogEntry in src/type_aliases.py Per-aggregate dataclass regression-guard for the metadata_promotion_20260624 track. CONVENTION: 1-space indentation. NO COMMENTS. """ from __future__ import annotations from dataclasses import FrozenInstanceError import pytest from src.type_aliases import CommsLogEntry def test_constructor_with_kwargs() -> None: entry = CommsLogEntry(role="user", content="hi", source_tier="tier1") assert entry.role == "user" assert entry.content == "hi" assert entry.source_tier == "tier1" def test_field_access() -> None: entry = CommsLogEntry(role="assistant", model="claude-3") assert entry.model == "claude-3" def test_frozen_raises_on_mutation() -> None: entry = CommsLogEntry() with pytest.raises(FrozenInstanceError): entry.role = "user" def test_to_dict_from_dict_roundtrip() -> None: entry = CommsLogEntry(role="user", content="hi", source_tier="tier1") restored = CommsLogEntry.from_dict(entry.to_dict()) assert restored == entry def test_from_dict_filters_unknown_keys() -> None: raw = {"role": "user", "content": "hi", "unknown_key": "ignored"} entry = CommsLogEntry.from_dict(raw) assert entry.role == "user" assert entry.content == "hi" def test_default_values() -> None: entry = CommsLogEntry() assert entry.role == "user" assert entry.ts == "" assert entry.error == "" def test_hashability() -> None: entry = CommsLogEntry(role="user") assert hash(entry) is not None