"""Gemini structured-output validation (no network).""" from svarasetu.compose.polish import _validate_structured from svarasetu.shield.outbound import unsupported_claims def test_validate_structured_happy_path(): parsed = { "answer": "The heart has four chambers.", "language": "en-IN", "grounded": True, "confidence": 0.8, "refused": False, "citations": [ {"chunk_id": "c1", "claim": "four chambers", "supported": True}, {"chunk_id": "drop-me", "claim": "ignored", "supported": True}, ], } out = _validate_structured(parsed, "en", ["c1", "c2"]) assert out is not None assert out["language"] == "en" assert out["grounded"] is True assert out["citations"] == [ {"chunk_id": "c1", "claim": "four chambers", "supported": True} ] def test_validate_structured_refuse_on_insufficient(): parsed = { "answer": "I don't have enough grounded information to answer that.", "language": "hi", "grounded": True, "confidence": 0.1, "refused": False, "citations": [], } out = _validate_structured(parsed, "hi", []) assert out["refused"] is True assert out["grounded"] is False def test_validate_structured_rejects_empty(): assert _validate_structured({"answer": " "}, "en", []) is None assert _validate_structured({}, "en", []) is None def test_unsupported_claims_flags_alien_sentence(): bad = unsupported_claims( "The heart has four chambers. Alien spacecraft landed on Mars in 1845.", [{"text": "The human heart has four muscular chambers that pump blood."}], min_overlap=0.25, ) assert any("Alien" in s for s in bad)