Projeto do Agent Contas ORACLE
This commit is contained in:
58
tests/migration/test_vaa_dispute_parity.py
Normal file
58
tests/migration/test_vaa_dispute_parity.py
Normal 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
|
||||
Reference in New Issue
Block a user