Files
life-echo/api/tests/test_fidelity_gate.py

79 lines
2.5 KiB
Python
Raw Normal View History

"""FidelityCheckAgent解析/LLM 失败时的 fail-closed新建叙事vs fail-open续写"""
from __future__ import annotations
from unittest.mock import MagicMock, patch
import pytest
from app.agents.memoir.fidelity_check_agent import FidelityCheckAgent
from app.core.config import settings
from app.core.llm_call import LLMCallError
from app.features.memoir.constants import memoir
def test_fidelity_fail_closed_on_parse_when_not_append(
monkeypatch: pytest.MonkeyPatch,
) -> None:
monkeypatch.setattr(memoir, "fidelity_check_enabled", True)
monkeypatch.setattr(memoir, "fidelity_fail_open_on_parse_error", False)
agent = FidelityCheckAgent()
llm = MagicMock()
with patch(
"app.agents.memoir.fidelity_check_agent.llm_json_call",
side_effect=LLMCallError("invoke", "simulated_bad_response"),
):
assert (
agent.passes(
oral_text=" oral ",
narrative_json='{"paragraphs":[{"content":"x"}]}',
llm=llm,
is_append=False,
)
is False
)
def test_fidelity_fail_open_on_parse_when_append(
monkeypatch: pytest.MonkeyPatch,
) -> None:
monkeypatch.setattr(memoir, "fidelity_check_enabled", True)
monkeypatch.setattr(memoir, "fidelity_fail_open_on_parse_error", False)
agent = FidelityCheckAgent()
llm = MagicMock()
with patch(
"app.agents.memoir.fidelity_check_agent.llm_json_call",
side_effect=LLMCallError("invoke", "simulated_bad_response"),
):
assert (
agent.passes(
oral_text=" oral ",
narrative_json='{"paragraphs":[{"content":"x"}]}',
llm=llm,
is_append=True,
)
is True
)
def test_fidelity_fail_open_global_flag_overrides_append(
monkeypatch: pytest.MonkeyPatch,
) -> None:
monkeypatch.setattr(memoir, "fidelity_check_enabled", True)
monkeypatch.setattr(memoir, "fidelity_fail_open_on_parse_error", True)
agent = FidelityCheckAgent()
llm = MagicMock()
with patch(
"app.agents.memoir.fidelity_check_agent.llm_json_call",
side_effect=LLMCallError("invoke", "simulated_bad_response"),
):
assert (
agent.passes(
oral_text=" oral ",
narrative_json='{"paragraphs":[{"content":"x"}]}',
llm=llm,
is_append=False,
)
is True
)