Files
agent_contas/tests/migration/test_workflow_execution_latch.py

96 lines
3.3 KiB
Python

from agent_framework.runtime.agent_runtime import AgentRuntimeMixin
class Runtime(AgentRuntimeMixin):
pass
def _envelope(status: str, name: str = "invoice_explanation"):
return {
"result": {
"result": {
"status": status,
"execution_id": "exec-1",
"metadata": {
"workflow_name": name,
"workflow_execution_id": "exec-1",
"resume_tool": "retomar_workflow",
},
"pause": {"message": "Sanei sua dúvida?"} if status == "PAUSED" else None,
}
}
}
def test_workflow_pausado_ja_e_registrado_como_executado():
runtime = Runtime()
state = {}
runtime._capture_pending_domain_workflow(state, _envelope("PAUSED"))
assert state["business_workflows_executed"] == ["invoice_explanation"]
assert state["pending_domain_workflow"]["workflow_name"] == "invoice_explanation"
def test_workflow_completo_e_registrado_sem_pending():
runtime = Runtime()
state = {}
runtime._capture_pending_domain_workflow(state, _envelope("COMPLETED", "pro_rata"))
assert state["business_workflows_executed"] == ["pro_rata"]
assert state["pending_domain_workflow"] is None
def test_latch_nao_duplica_workflow():
runtime = Runtime()
state = {}
runtime._capture_pending_domain_workflow(state, _envelope("PAUSED"))
runtime._capture_pending_domain_workflow(state, _envelope("COMPLETED"))
assert state["business_workflows_executed"] == ["invoice_explanation"]
def test_transaction_state_patch_preserva_latch():
runtime = Runtime()
patch = runtime.transaction_state_patch({"business_workflows_executed": ["invoice_explanation"]})
assert patch["business_workflows_executed"] == ["invoice_explanation"]
def test_transaction_state_patch_preserva_boundary_de_soft_reset():
runtime = Runtime()
patch = runtime.transaction_state_patch({
"transaction_status": "COMPLETED",
"operational_context_boundary_pending": True,
})
assert patch["transaction_status"] == "COMPLETED"
assert patch["operational_context_boundary_pending"] is True
def test_workflow_response_final_fecha_latch_mesmo_se_adapter_retornar_paused():
runtime = Runtime()
state = {
"pending_domain_workflow": {
"execution_id": "exec-1",
"workflow_name": "invoice_explanation",
},
"transaction_status": "WORKFLOW_PAUSED",
}
envelope = {
"result": {
"result": {
"status": "PAUSED",
"execution_id": "exec-1",
"metadata": {
"workflow_name": "invoice_explanation",
"workflow_execution_id": "exec-1",
"resume_tool": "retomar_workflow",
},
"output": {
"workflow_response_final": True,
"mensagem": "Seu número de protocolo é 1234567890.",
},
"state": {"current_node": "registrar_protocolo_aceite"},
}
}
}
runtime._capture_pending_domain_workflow(state, envelope)
assert state["pending_domain_workflow"] is None
assert state["transaction_status"] == "COMPLETED"
assert state["operational_context_boundary_pending"] is True