Projeto do Agent Contas ORACLE

This commit is contained in:
2026-08-19 09:35:50 -03:00
commit 950a2bcd33
1366 changed files with 177217 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
from app.domain.contas.workflow_actions import build_contas_workflow_actions
def codes(result):
return [x.get("code") for x in result.get("business_events", []) if isinstance(x, dict)]
def test_contestacao_emite_vaa005_006_008_quando_barcode_elegivel():
class Client:
def billing_analysis(self, msisdn):
return {"currentInvoice": [{"desc": "Serviços de valor adicionado", "items": [{"desc": "VAS Musica", "value": 29.9, "classe": "avulso"}]}]}
def contestar(self, payload): return {"barcode": "123", "itemsResponse": []}
class S: client=Client()
action=build_contas_workflow_actions(S()).get("abrir_contestacao_cliente") # type: ignore[arg-type]
result=action({"msisdn":"119", "protocolo_id":"P1", "servico":"VAS Musica", "valor":29.9}, {"input":{}})
assert result["success"] is True
assert codes(result)[:3] == ["VAA.005", "VAA.006", "VAA.008"]
def test_contestacao_emite_vaa005_007_quando_provider_falha():
class Client:
def billing_analysis(self, msisdn):
return {"currentInvoice": [{"desc": "Serviços de valor adicionado", "items": [{"desc": "VAS Musica", "value": 29.9, "classe": "avulso"}]}]}
def contestar(self, payload): raise RuntimeError("falha provider")
class S: client=Client()
action=build_contas_workflow_actions(S()).get("abrir_contestacao_cliente") # type: ignore[arg-type]
result=action({"msisdn":"119", "protocolo_id":"P1", "servico":"VAS Musica", "valor":29.9}, {"input":{}})
assert result["success"] is False
assert codes(result) == ["VAA.005", "VAA.007"]
def test_sms_emite_vaa012_014_e_falha_vaa013_015():
class Good:
def enviar_sms(self, **kwargs): return {"resource_url":"u"}
good=build_contas_workflow_actions(Good()).get("enviar_sms") # type: ignore[arg-type]
result=good({"msisdn":"119", "message":"x"}, {"input":{}})
assert codes(result)[:2] == ["VAA.012", "VAA.014"]
class Bad:
def enviar_sms(self, **kwargs): raise RuntimeError("timeout")
bad=build_contas_workflow_actions(Bad()).get("enviar_sms") # type: ignore[arg-type]
result=bad({"msisdn":"119", "message":"x"}, {"input":{}})
assert codes(result) == ["VAA.013", "VAA.015"]
assert result["sms_not_send_error"] is True
def test_status_sr_emite_vaa016_ou_017_sem_quebrar_workflow():
class GoodClient:
def status_sr(self, payload): return {"ok": True}
class Good: client=GoodClient()
action=build_contas_workflow_actions(Good()).get("atualizar_status_sr") # type: ignore[arg-type]
result=action({"msisdn":"119", "protocolo_id":"P1"}, {"input":{}})
assert codes(result) == ["VAA.016"] and result["protocol_closed"] is True
class BadClient:
def status_sr(self, payload): raise RuntimeError("timeout")
class Bad: client=BadClient()
action=build_contas_workflow_actions(Bad()).get("atualizar_status_sr") # type: ignore[arg-type]
result=action({"msisdn":"119", "protocolo_id":"P1"}, {"input":{}})
assert codes(result) == ["VAA.017"] and result["protocol_closed"] is False