"""Tests for ProviderPayload 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 ProviderPayload def test_constructor_with_kwargs() -> None: pp = ProviderPayload(script="echo hi", args={"x": 1}, output="hi", source_tier="tier2") assert pp.script == "echo hi" assert pp.args == {"x": 1} assert pp.output == "hi" assert pp.source_tier == "tier2" def test_field_access() -> None: pp = ProviderPayload(script="ls") assert pp.script == "ls" def test_frozen_raises_on_mutation() -> None: pp = ProviderPayload() with pytest.raises(FrozenInstanceError): pp.script = "x" def test_to_dict_roundtrip() -> None: pp = ProviderPayload(script="s", args={"k": "v"}, output="o", source_tier="t1") d = pp.to_dict() assert d["script"] == "s" assert d["args"] == {"k": "v"} assert d["output"] == "o" assert d["source_tier"] == "t1" def test_default_values() -> None: pp = ProviderPayload() assert pp.script == "" assert pp.args == {} assert pp.output == "" assert pp.source_tier == "main" def test_hashability_skipped_unhashable_dict_field() -> None: pp = ProviderPayload() assert pp.args == {}