Files
agent_contas/tests/migration/test_business_events_and_guardrails.py

49 lines
1.3 KiB
Python

from __future__ import annotations
import pytest
from agent_framework.runtime.agent_runtime import AgentRuntimeMixin
class _Observer:
def __init__(self):
self.events = []
async def emit(self, code, payload=None, **kwargs):
self.events.append((code, payload, kwargs))
class _Runtime(AgentRuntimeMixin):
name = "test_agent"
def __init__(self):
self.observer = _Observer()
@pytest.mark.asyncio
async def test_business_events_are_published_recursively_once():
runtime = _Runtime()
state = {"session_id": "s1", "intent": "x", "route": "test_agent"}
result = {
"ok": True,
"cached": False,
"result": {
"nodes": {
"a": {"business_events": ["RCT.001", {"code": "CVN.002", "payload": {"x": 1}}]},
"b": {"business_events": ["RCT.001"]},
}
},
}
await runtime._publish_business_events(result, state)
codes = [event[0] for event in runtime.observer.events]
assert codes == ["RCT.001", "CVN.002"]
@pytest.mark.asyncio
async def test_cached_tool_result_does_not_republish_business_events():
runtime = _Runtime()
await runtime._publish_business_events(
{"cached": True, "business_events": ["RCT.001"]}, {"session_id": "s1"}
)
assert runtime.observer.events == []