carepath-api / interpreter /tests /test_crud.py
tranth3truong's picture
Deploy public Scribe-only CarePath Space
cc678b9
Raw
History Blame Contribute Delete
3.08 kB
from datetime import timedelta
from app import crud
def test_session_turn_feedback_round_trip(db_session) -> None:
session = crud.create_session(db_session, {"ai_disclosure": True})
turn = crud.create_turn(
db_session,
session_id=session.id,
speaker="doctor",
src_lang="vi",
tgt_lang="en",
source_text="xin chao",
normalized_text="xin chao",
translation="hello",
asr_confidence=1.0,
mt_confidence=0.99,
risk_tier="low",
risk_spans=[],
status="delivered",
)
feedback = crud.create_feedback(db_session, turn.id, "other", "test")
assert crud.list_turns(db_session, session.id)[0].id == turn.id
assert feedback.turn_id == turn.id
def test_hard_delete_cascades_turns_and_feedback(db_session) -> None:
session = crud.create_session(db_session, {"ai_disclosure": True})
turn = crud.create_turn(
db_session,
session_id=session.id,
speaker="doctor",
src_lang="vi",
tgt_lang="en",
source_text="xin chao",
normalized_text="xin chao",
translation="hello",
asr_confidence=1.0,
mt_confidence=0.99,
risk_tier="low",
risk_spans=[],
status="delivered",
)
feedback = crud.create_feedback(db_session, turn.id, "other", None)
crud.hard_delete_session(db_session, session.id)
assert crud.get_session(db_session, session.id) is None
assert db_session.get(crud.TurnRecord, turn.id) is None
assert db_session.get(crud.FeedbackRecord, feedback.id) is None
def test_retention_purge_deletes_old_sessions_and_keeps_recent(db_session) -> None:
old = crud.create_session(db_session, {"ai_disclosure": True})
recent = crud.create_session(db_session, {"ai_disclosure": True})
old.created_at = crud.utc_now() - timedelta(days=31)
db_session.add(old)
db_session.commit()
turn = crud.create_turn(
db_session,
session_id=old.id,
speaker="doctor",
src_lang="vi",
tgt_lang="en",
source_text="xin chao",
normalized_text="xin chao",
translation="hello",
asr_confidence=1.0,
mt_confidence=0.99,
risk_tier="low",
risk_spans=[],
status="delivered",
)
feedback = crud.create_feedback(db_session, turn.id, "other", None)
assert crud.purge_old_sessions(db_session, retention_days=30) == 1
assert crud.get_session(db_session, old.id) is None
assert db_session.get(crud.TurnRecord, turn.id) is None
assert db_session.get(crud.FeedbackRecord, feedback.id) is None
assert crud.get_session(db_session, recent.id) is not None
def test_retention_zero_keeps_all_sessions(db_session) -> None:
old = crud.create_session(db_session, {"ai_disclosure": True})
old.created_at = crud.utc_now() - timedelta(days=365)
db_session.add(old)
db_session.commit()
assert crud.purge_old_sessions(db_session, retention_days=0) == 0
assert crud.get_session(db_session, old.id) is not None