Skip to content

Commit 1b3099f

Browse files
test: cover tool call result serialization
1 parent 270022c commit 1b3099f

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

typescript-sdk/integrations/adk-middleware/python/tests/test_event_translator_comprehensive.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111

1212
from ag_ui.core import (
1313
EventType, TextMessageStartEvent, TextMessageContentEvent, TextMessageEndEvent,
14-
ToolCallStartEvent, ToolCallArgsEvent, ToolCallEndEvent, StateDeltaEvent, CustomEvent
14+
ToolCallStartEvent, ToolCallArgsEvent, ToolCallEndEvent, ToolCallResultEvent,
15+
StateDeltaEvent, CustomEvent
1516
)
1617
from google.adk.events import Event as ADKEvent
1718
from ag_ui_adk.event_translator import EventTranslator
@@ -128,11 +129,14 @@ async def test_translate_function_responses_handling(self, translator, mock_adk_
128129

129130
@pytest.mark.asyncio
130131
async def test_translate_function_response_with_call_tool_result_payload(self, translator):
131-
"""Ensure CallToolResult payloads are serialized without errors."""
132+
"""Ensure complex CallToolResult payloads are serialized correctly."""
132133

133134
@dataclass
134135
class TextContent:
135-
text: str
136+
type: str = "text"
137+
text: str = ""
138+
annotations: list | None = None
139+
meta: dict | None = None
136140

137141
@dataclass
138142
class CallToolResult:
@@ -149,15 +153,15 @@ class CallToolResult:
149153
]
150154

151155
payload = CallToolResult(
152-
meta={"source": "test"},
156+
meta=None,
153157
structuredContent=None,
154158
isError=False,
155159
content=[TextContent(text=text) for text in repeated_text_entries],
156160
)
157161

158162
function_response = SimpleNamespace(
159163
id="tool-structured-1",
160-
response=asdict(payload),
164+
response={"result": payload},
161165
)
162166

163167
events = []
@@ -169,9 +173,9 @@ class CallToolResult:
169173
assert isinstance(event, ToolCallResultEvent)
170174

171175
content = json.loads(event.content)
172-
assert content["isError"] is False
173-
assert content["structuredContent"] is None
174-
assert [item["text"] for item in content["content"]] == repeated_text_entries
176+
assert content["result"]["isError"] is False
177+
assert content["result"]["structuredContent"] is None
178+
assert [item["text"] for item in content["result"]["content"]] == repeated_text_entries
175179

176180
@pytest.mark.asyncio
177181
async def test_translate_state_delta_event(self, translator, mock_adk_event):
@@ -835,4 +839,4 @@ async def test_partial_streaming_continuation(self, translator, mock_adk_event_w
835839

836840
# Should reset streaming state
837841
assert translator._is_streaming is False
838-
assert translator._streaming_message_id is None
842+
assert translator._streaming_message_id is None

0 commit comments

Comments
 (0)