"""Pydantic schema roundtrip + invariant tests."""

from app.services.kb.schemas import KBChunkRef, KBSearchResults


def test_status_hit_with_chunks():
    ref = KBChunkRef(
        article_id="voi",
        chunk_id="voi#0",
        title="Voi",
        chunk_text="Voi to",
        score=0.9,
    )
    res = KBSearchResults(status="hit", chunks=[ref], query="voi")
    js = res.model_dump_json()
    back = KBSearchResults.model_validate_json(js)
    assert back.status == "hit"
    assert back.chunks[0].article_id == "voi"
    assert back.chunks[0].score == 0.9


def test_status_no_match_empty_chunks():
    res = KBSearchResults(status="no_match", query="??")
    assert res.chunks == []
    assert not res.degraded


def test_status_error_carries_kind():
    res = KBSearchResults(status="error", query="x", error_kind="qdrant_unreachable")
    assert res.error_kind == "qdrant_unreachable"


def test_degraded_default_false():
    res = KBSearchResults(status="hit", query="x")
    assert res.degraded is False


def test_parent_text_optional():
    ref = KBChunkRef(
        article_id="a", chunk_id="a#0", title="A", chunk_text="x", score=0.5
    )
    assert ref.parent_text is None
