carepath-api / interpreter /tests /test_session_safety.py
tranth3truong's picture
Deploy public Scribe-only CarePath Space
cc678b9
Raw
History Blame Contribute Delete
2.65 kB
from app import session as session_module
from app.config import Settings
from app.providers.base import CriticalEntity, Review
from app.providers.mock import MockASRProvider, MockMTProvider, MockReviewerProvider
from app.providers.registry import ProviderSet
from app.risk import RiskResult
def test_high_risk_reviewer_failure_blocks_turn(db_session, monkeypatch) -> None:
created = session_module.crud.create_session(db_session, {"ai_disclosure": True})
monkeypatch.setattr(
session_module,
"classify_risk",
lambda *args: RiskResult(tier="high", spans=[{"kind": "dose"}]),
)
providers = ProviderSet(
asr=MockASRProvider(),
mt=MockMTProvider(),
reviewer=MockReviewerProvider(fail=True),
)
turn = session_module.process_text_turn(
db_session,
providers,
Settings(),
session_id=created.id,
speaker="doctor",
lang="vi",
text="Uống nửa viên",
asr_confidence=1,
)
assert turn.status == "blocked"
assert turn.readback_json is not None
assert "reviewer_failed" in turn.readback_json
def test_high_risk_readback_stores_entity_text(db_session, monkeypatch) -> None:
created = session_module.crud.create_session(db_session, {"ai_disclosure": True})
monkeypatch.setattr(
session_module,
"classify_risk",
lambda *args: RiskResult(tier="high", spans=[{"kind": "dose"}]),
)
providers = ProviderSet(
asr=MockASRProvider(),
mt=MockMTProvider(),
reviewer=MockReviewerProvider(
canned={
(
"vi",
"en",
"Uống 0.5 viên",
"[vi->en] Uống 0.5 viên",
): Review(
back_translation="Uống nửa viên",
entities=[
CriticalEntity(
kind="dose",
source_text="nửa viên",
translated_text="half a tablet",
)
],
flags=[],
)
}
),
)
turn = session_module.process_text_turn(
db_session,
providers,
Settings(),
session_id=created.id,
speaker="doctor",
lang="vi",
text="Uống nửa viên",
asr_confidence=1,
)
assert turn.readback_json is not None
assert "source_text" in turn.readback_json
assert "nửa viên" in turn.readback_json
assert "source_span" not in turn.readback_json