Fastwhisper / tests /test_backup.py
Mbonea's picture
Add loop-break daily fields, proof wizard, and high-intensity coach interrupts.
4c23c1f
Raw
History Blame Contribute Delete
1.52 kB
"""Unit tests for backup rule priority selection."""
from app.backup_replies import backup_reply, select_backup_rule
def test_court_beats_default() -> None:
rule = select_backup_rule("I opened court again", [])
assert rule["id"] == "court"
def test_tag_match_rerun() -> None:
rule = select_backup_rule("something vague", ["rerun"])
assert rule["id"] == "rerun"
def test_default_and_server_pick() -> None:
text, rule_id = backup_reply(
"ordinary day",
[],
[{"remedy_key": "walk outside", "pick": 0.5, "n": 5, "p_helped": 0.8}],
data_thin=True,
)
assert rule_id == "default"
assert "REMEDY: walk outside" in text
assert "DATA_THIN: true" in text
assert text.startswith("LOOP:")
def test_crisis_ignores_server_pick() -> None:
text, rule_id = backup_reply(
"I want to kill myself",
[],
[{"remedy_key": "walk outside", "pick": 0.5, "n": 5, "p_helped": 0.8}],
data_thin=False,
)
assert rule_id == "crisis"
assert "walk outside" not in text
assert "crisis" in text.lower()
def test_high_intensity_forces_interrupt_not_label() -> None:
text, rule_id = backup_reply(
"I tried labeling",
["shame"],
[{"remedy_key": "Labeling", "pick": 0.9, "n": 20, "p_helped": 0.2}],
data_thin=False,
intensity=8,
)
assert rule_id == "high_intensity_fse"
assert "Labeling" not in text
assert "interrupt" in text.lower() or "Leave the room" in text