ai-response-validator / tests /unit /test_rosetta.py
mbochniak01
Add typed client library, unit + integration tests, mypy, ruff, NOTES.md
10aced5
"""Unit tests for RosettaStone terminology translation and violation detection."""
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent.parent.parent / "backend"))
from rosetta import translate, client_terms, check_terminology
class TestTranslate:
def test_known_key_returns_client_term(self) -> None:
assert translate("STOCK_CHECK", "novamart") == "availability scan"
def test_same_key_different_clients_differ(self) -> None:
novamart = translate("STOCK_CHECK", "novamart")
shelfwise = translate("STOCK_CHECK", "shelfwise")
assert novamart != shelfwise
def test_unknown_key_returns_none(self) -> None:
assert translate("NONEXISTENT_KEY", "novamart") is None
def test_pharma_client_returns_correct_term(self) -> None:
assert translate("DRUG_APPROVAL", "pharmalink") == "formulary pre-approval"
assert translate("DRUG_APPROVAL", "clinixone") == "prior authorization"
class TestClientTerms:
def test_returns_full_mapping(self) -> None:
terms = client_terms("novamart")
assert isinstance(terms, dict)
assert "STOCK_CHECK" in terms
assert terms["STOCK_CHECK"] == "availability scan"
def test_different_clients_have_different_mappings(self) -> None:
nm = client_terms("novamart")
sw = client_terms("shelfwise")
assert nm["STOCK_CHECK"] != sw["STOCK_CHECK"]
class TestCheckTerminology:
def test_correct_term_no_violation(self) -> None:
result = check_terminology("Please run an availability scan.", "novamart")
assert result["pass"] is True
assert result["violations"] == []
def test_rival_term_triggers_violation(self) -> None:
result = check_terminology("Please run a stock check.", "novamart")
assert result["pass"] is False
assert len(result["violations"]) >= 1
def test_violation_contains_expected_and_found(self) -> None:
result = check_terminology("Use a feature toggle to enable this.", "novamart")
violation = next(
(v for v in result["violations"] if v["found"] == "feature toggle"), None
)
assert violation is not None
assert violation["expected"] == "capability switch"
def test_checked_count_matches_catalog(self) -> None:
terms = client_terms("novamart")
result = check_terminology("Neutral response with no domain terms.", "novamart")
assert result["checked"] == len(terms)
def test_case_insensitive_matching(self) -> None:
result = check_terminology("Run a STOCK CHECK now.", "novamart")
assert result["pass"] is False