Files
agent_contas/tests/migration/test_workflow_execution_latch.py
2026-08-26 10:15:59 -03:00

53 lines
1.8 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"]