forward-deployed-ai-sim / tests /test_extract.py
bobaoxu2001
Deploy forward-deployed AI simulation dashboard
c4fe0a4
"""Tests for extraction pipeline using MockProvider."""
from pipeline.schemas import CaseBundle, ExtractionOutput
from pipeline.extract import (
extract_case,
MockProvider,
build_prompt,
_try_extract_json,
)
def _sample_case() -> CaseBundle:
return CaseBundle(
case_id="test-ext-001",
ticket_text="I was charged twice for the same service last month.",
conversation_snippet="Agent: Let me check. Customer: Please hurry.",
vip_tier="vip",
priority="high",
)
def test_extract_with_mock_returns_extraction_output():
case = _sample_case()
output, meta = extract_case(case, provider=MockProvider())
assert isinstance(output, ExtractionOutput)
assert output.root_cause_l1 == "billing" # case text mentions "charged"
assert 0.0 < output.confidence <= 1.0
assert len(output.evidence_quotes) > 0
def test_extract_metadata_has_required_fields():
case = _sample_case()
_, meta = extract_case(case, provider=MockProvider())
assert "prompt_version" in meta
assert "latency_ms" in meta
assert "model_name" in meta
assert "raw_response" in meta
def test_build_prompt_includes_ticket_text():
case = _sample_case()
prompt = build_prompt(case)
assert "charged twice" in prompt
assert "vip" in prompt
def test_build_prompt_includes_conversation():
case = _sample_case()
prompt = build_prompt(case)
assert "Please hurry" in prompt
def test_extract_forces_review_when_no_evidence():
provider = MockProvider(response={
"root_cause_l1": "billing",
"root_cause_l2": "unknown",
"sentiment_score": 0.0,
"risk_level": "low",
"review_required": False,
"next_best_actions": ["check"],
"evidence_quotes": [],
"confidence": 0.5,
"churn_risk": 0.1,
})
case = _sample_case()
output, _ = extract_case(case, provider=provider)
# Should force review when evidence is missing
assert output.review_required is True
def test_try_extract_json_from_freeform():
text = 'Here is the result: {"root_cause_l1": "billing"} done.'
result = _try_extract_json(text)
assert result["root_cause_l1"] == "billing"
def test_try_extract_json_fallback_on_garbage():
result = _try_extract_json("this is not json at all")
assert result["root_cause_l1"] == "unknown"
assert result["review_required"] is True