fineprint-env / tests /test_checker.py
vigneshmoovendhan's picture
Fine Print RL final
0b6a889
"""Tests for the ComplianceChecker."""
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
import pytest
from fineprint.checker import ComplianceChecker
@pytest.fixture
def checker():
return ComplianceChecker()
@pytest.fixture
def v1_policies():
return {
"return": {
"window_days": 30,
"refund_method": "original_payment",
"restocking_fee_percent": 0,
"requires_receipt": True,
"electronics_window_days": 14,
},
"shipping": {
"free_threshold": 50,
"standard_delivery_days": 5,
"express_delivery_days": 2,
"international_available": False,
"express_surcharge": 15,
},
}
class TestValidateQuote:
def test_correct_quote(self, checker, v1_policies):
result = checker.validate_quote(
agent_response={"policy_field": "return.window_days", "quoted_value": 30},
agent_version="v1_base",
active_version="v1_base",
active_policies=v1_policies,
)
assert result["compliant"] is True
def test_correct_quote_string(self, checker, v1_policies):
result = checker.validate_quote(
agent_response={"policy_field": "return.window_days", "quoted_value": "30"},
agent_version="v1_base",
active_version="v1_base",
active_policies=v1_policies,
)
assert result["compliant"] is True
def test_stale_quote(self, checker, v1_policies):
# Agent believes v1 but active is v2, and quotes v1 value
v2_policies = v1_policies.copy()
v2_policies["return"] = {**v1_policies["return"], "window_days": 14}
result = checker.validate_quote(
agent_response={"policy_field": "return.window_days", "quoted_value": 30},
agent_version="v1_base",
active_version="v2_return_change",
active_policies=v2_policies,
)
assert result["compliant"] is False
assert result["severity"] == "HIGH"
assert "STALE_POLICY" in result["reason"]
def test_incorrect_value(self, checker, v1_policies):
result = checker.validate_quote(
agent_response={"policy_field": "return.window_days", "quoted_value": 999},
agent_version="v1_base",
active_version="v1_base",
active_policies=v1_policies,
)
assert result["compliant"] is False
assert result["severity"] == "MEDIUM"
def test_missing_field(self, checker, v1_policies):
result = checker.validate_quote(
agent_response={"policy_field": "nonexistent.field", "quoted_value": "x"},
agent_version="v1_base",
active_version="v1_base",
active_policies=v1_policies,
)
assert result["compliant"] is False
def test_empty_field(self, checker, v1_policies):
result = checker.validate_quote(
agent_response={"policy_field": "", "quoted_value": ""},
agent_version="v1_base",
active_version="v1_base",
active_policies=v1_policies,
)
assert result["compliant"] is False
def test_boolean_match(self, checker, v1_policies):
result = checker.validate_quote(
agent_response={
"policy_field": "return.requires_receipt",
"quoted_value": "true",
},
agent_version="v1_base",
active_version="v1_base",
active_policies=v1_policies,
)
assert result["compliant"] is True
class TestValidateAction:
def test_abort_with_drift(self, checker):
result = checker.validate_action(
action_type="abort_workflow",
agent_version="v1_base",
active_version="v2_return_change",
)
assert result["compliant"] is True
def test_abort_without_drift(self, checker):
result = checker.validate_action(
action_type="abort_workflow",
agent_version="v1_base",
active_version="v1_base",
)
assert result["compliant"] is False
def test_escalate_with_drift(self, checker):
result = checker.validate_action(
action_type="escalate",
agent_version="v1_base",
active_version="v2_return_change",
)
assert result["compliant"] is True
def test_escalate_without_drift(self, checker):
result = checker.validate_action(
action_type="escalate",
agent_version="v1_base",
active_version="v1_base",
)
assert result["compliant"] is False
def test_respond_always_compliant(self, checker):
result = checker.validate_action(
action_type="respond_to_user",
agent_version="v1_base",
active_version="v1_base",
)
assert result["compliant"] is True
class TestSeverityLevel:
def test_severity_ordering(self, checker):
assert checker.severity_level(None) == 0
assert checker.severity_level("LOW") == 1
assert checker.severity_level("MEDIUM") == 2
assert checker.severity_level("HIGH") == 3
assert checker.severity_level("CRITICAL") == 4