from pathlib import Path
import yaml

ROOT = Path(__file__).resolve().parents[2]


def test_contas_transactional_parameters_have_customer_facing_prompts():
    data = yaml.safe_load((ROOT / "config" / "tools.yaml").read_text(encoding="utf-8"))
    tools = data["tools"]
    expected = {
        ("cancelar_vas_avulso", "subject"): "Qual serviço você deseja cancelar?",
        ("tratar_vas_estrategico", "subject"): "Qual serviço ou benefício você deseja tratar?",
        ("validar_contestacao", "subject"): "Qual cobrança ou item você não reconhece?",
        ("validar_contestacao", "valor"): "Qual é o valor da cobrança?",
        ("contestar_cobranca", "subject"): "Qual cobrança ou item você deseja contestar?",
        ("contestar_cobranca", "valor"): "Qual é o valor da cobrança que você deseja contestar?",
    }
    for (tool, field), prompt in expected.items():
        assert tools[tool]["args_schema"][field]["user_prompt"] == prompt
        assert field not in prompt.lower().replace("subject", "") if field == "subject" else True


def test_billing_prompt_forbids_unsupported_causal_hypotheses():
    prompt = yaml.safe_load((ROOT / "config" / "prompts" / "billing.yaml").read_text(encoding="utf-8"))["system"]
    assert "fim de promoção" in prompt
    assert "perda de elegibilidade" in prompt
    assert "sem evidência explícita" in prompt
    assert "Não prometa nem estime valores de faturas futuras" in prompt


def test_support_prompt_does_not_simulate_handoff_or_terminal_success():
    prompt = yaml.safe_load((ROOT / "config" / "prompts" / "support.yaml").read_text(encoding="utf-8"))["system"]
    assert "Nunca anuncie transferência" in prompt
    assert "não simule handoff em texto livre" in prompt
    assert "OUT_OF_SCOPE" in prompt
