"""Tests for RAGChunk in src/rag_engine.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.rag_engine import RAGChunk def test_constructor_with_kwargs() -> None: chunk = RAGChunk(document="hello", path="/x.py", score=0.9) assert chunk.document == "hello" assert chunk.path == "/x.py" assert chunk.score == 0.9 def test_field_access() -> None: chunk = RAGChunk(document="d", metadata={"src": "a"}) assert chunk.metadata == {"src": "a"} def test_frozen_raises_on_mutation() -> None: chunk = RAGChunk() with pytest.raises(FrozenInstanceError): chunk.document = "x" def test_to_dict_from_dict_roundtrip() -> None: chunk = RAGChunk(document="hello", path="/x.py", score=0.9, metadata={"k": "v"}) restored = RAGChunk.from_dict(chunk.to_dict()) assert restored == chunk def test_from_dict_filters_unknown_keys() -> None: raw = {"document": "hi", "extra_unknown_key": "ignored"} chunk = RAGChunk.from_dict(raw) assert chunk.document == "hi" def test_default_values() -> None: chunk = RAGChunk() assert chunk.document == "" assert chunk.path == "" assert chunk.score == 0.0 assert chunk.metadata == {} def test_hashability_skipped_unhashable_dict_field() -> None: chunk = RAGChunk() assert chunk.metadata == {}