import copy import pytest from tools.evaluation.rag_delivery import finalize_rag_answer def test_notice_is_rendered_without_changing_facts_or_raw_answer(): original = { "answer": "Eva má prácu z roku 2026.", "context_issues": ["missing_incompleteness_notice"], "citations_ok": True, "accepted_for_delivery": False, } before = copy.deepcopy(original) out = finalize_rag_answer(original) assert original == before assert out["model_answer"] == before["answer"] assert out["answer"] == "Výpis je neúplný.\n\n" + before["answer"] assert out["accepted_for_delivery"] and out["display_notice_added"] assert not out["first_pass_accepted_for_delivery"] assert finalize_rag_answer(out) == out @pytest.mark.parametrize( "issues,citations_ok", [ (["unsupported_exhaustive_statement", "missing_incompleteness_notice"], True), (["missing_incompleteness_notice"], False), ([], False), ], ) def test_notice_never_bypasses_other_rejections(issues, citations_ok): original = { "answer": "Úplný zoznam.", "context_issues": issues, "citations_ok": citations_ok, "accepted_for_delivery": False, } out = finalize_rag_answer(original) assert not out["accepted_for_delivery"] and not out["display_notice_added"] assert out["answer"] == original["answer"] def test_complete_valid_answer_does_not_get_a_notice(): original = { "answer": "Eva.", "context_issues": [], "citations_ok": True, "accepted_for_delivery": True, } out = finalize_rag_answer(original) assert out["answer"] == original["answer"] and not out["display_notice_added"] assert out["accepted_for_delivery"]