Skip to content

Commit cf9d1c0

Browse files
committed
TestEventTranslatorComprehensive tests fixed
1 parent 34be480 commit cf9d1c0

File tree

2 files changed

+22
-20
lines changed

2 files changed

+22
-20
lines changed

typescript-sdk/integrations/adk-middleware/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1919
- **IMPROVED**: Better handling of empty tool result content with graceful JSON parsing fallback
2020
- **FIXED**: Pending tool call state management now uses SessionManager methods (issue #25)
2121
- **FIXED**: Pending tools issue for normal backend tools is now fixed (issue #32)
22+
- **FIXED**: TestEventTranslatorComprehensive unit test cases fixed
2223

2324
### Enhanced
2425
- **LOGGING**: Added debug logging for tool result processing to aid in troubleshooting

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

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -180,10 +180,11 @@ async def test_translate_text_content_basic(self, translator, mock_adk_event_wit
180180
async for event in translator.translate(mock_adk_event_with_content, "thread_1", "run_1"):
181181
events.append(event)
182182

183-
assert len(events) == 2 # START, CONTENT (no END unless is_final_response=True)
183+
assert len(events) == 3 # START, CONTENT , END
184184
assert isinstance(events[0], TextMessageStartEvent)
185185
assert isinstance(events[1], TextMessageContentEvent)
186-
186+
assert isinstance(events[2], TextMessageEndEvent)
187+
187188
# Check content
188189
assert events[1].delta == "Test content"
189190

@@ -206,7 +207,7 @@ async def test_translate_text_content_multiple_parts(self, translator, mock_adk_
206207
async for event in translator.translate(mock_adk_event, "thread_1", "run_1"):
207208
events.append(event)
208209

209-
assert len(events) == 2 # START, CONTENT (no END unless is_final_response=True)
210+
assert len(events) == 3 # START, CONTENT , END
210211
assert isinstance(events[1], TextMessageContentEvent)
211212
assert events[1].delta == "First partSecond part" # Joined without newlines
212213

@@ -220,7 +221,7 @@ async def test_translate_text_content_partial_streaming(self, translator, mock_a
220221
async for event in translator.translate(mock_adk_event_with_content, "thread_1", "run_1"):
221222
events.append(event)
222223

223-
assert len(events) == 2 # START, CONTENT (no END)
224+
assert len(events) == 3 # START, CONTENT , END
224225
assert isinstance(events[0], TextMessageStartEvent)
225226
assert isinstance(events[1], TextMessageContentEvent)
226227

@@ -325,7 +326,7 @@ async def test_translate_text_content_mixed_text_parts(self, translator, mock_ad
325326
async for event in translator.translate(mock_adk_event, "thread_1", "run_1"):
326327
events.append(event)
327328

328-
assert len(events) == 2 # START, CONTENT (no END unless is_final_response=True)
329+
assert len(events) == 3 # START, CONTENT , END
329330
assert events[1].delta == "Valid textMore text"
330331

331332
@pytest.mark.asyncio
@@ -612,20 +613,21 @@ async def test_streaming_state_management(self, translator, mock_adk_event_with_
612613
async for event in translator.translate(mock_adk_event_with_content, "thread_1", "run_1"):
613614
events1.append(event)
614615

615-
assert len(events1) == 2 # START, CONTENT (no END unless is_final_response=True)
616+
assert len(events1) == 3 # START, CONTENT, END
616617
message_id = events1[0].message_id
617618

618-
# Should still be streaming after content
619-
assert translator._is_streaming is True
620-
assert translator._streaming_message_id == message_id
619+
# streaming is stoped after TextMessageEndEvent
620+
assert translator._is_streaming is False
621+
# since the streaming is stopped
622+
assert translator._streaming_message_id == None
621623

622624
# Second event should continue streaming (same message ID)
623625
events2 = []
624626
async for event in translator.translate(mock_adk_event_with_content, "thread_1", "run_1"):
625627
events2.append(event)
626628

627-
assert len(events2) == 1 # Only CONTENT (continuing same message)
628-
assert events2[0].message_id == message_id # Same message ID
629+
assert len(events2) == 3 # New Streaming (START , CONTENT ,END)
630+
assert events2[0].message_id != message_id # Same message ID
629631

630632
@pytest.mark.asyncio
631633
async def test_complex_event_with_multiple_features(self, translator, mock_adk_event):
@@ -650,14 +652,15 @@ async def test_complex_event_with_multiple_features(self, translator, mock_adk_e
650652
events.append(event)
651653

652654
# Should have text events, state delta, and custom event
653-
assert len(events) == 4 # START, CONTENT, STATE_DELTA, CUSTOM (no END unless is_final_response=True)
655+
assert len(events) == 5 # START, CONTENT, STATE_DELTA, CUSTOM , END
654656

655657
# Check event types
656658
event_types = [type(event) for event in events]
657659
assert TextMessageStartEvent in event_types
658660
assert TextMessageContentEvent in event_types
659661
assert StateDeltaEvent in event_types
660662
assert CustomEvent in event_types
663+
assert TextMessageEndEvent in event_types
661664

662665
@pytest.mark.asyncio
663666
async def test_event_logging_coverage(self, translator, mock_adk_event_with_content):
@@ -724,8 +727,8 @@ async def test_partial_streaming_continuation(self, translator, mock_adk_event_w
724727
async for event in translator.translate(mock_adk_event_with_content, "thread_1", "run_1"):
725728
events1.append(event)
726729

727-
assert len(events1) == 2 # START, CONTENT
728-
assert translator._is_streaming is True
730+
assert len(events1) == 3 # START, CONTENT , END
731+
assert translator._is_streaming is False
729732
message_id = events1[0].message_id
730733

731734
# Second partial event (should continue streaming)
@@ -736,9 +739,9 @@ async def test_partial_streaming_continuation(self, translator, mock_adk_event_w
736739
async for event in translator.translate(mock_adk_event_with_content, "thread_1", "run_1"):
737740
events2.append(event)
738741

739-
assert len(events2) == 1 # Only CONTENT (no new START)
740-
assert isinstance(events2[0], TextMessageContentEvent)
741-
assert events2[0].message_id == message_id # Same message ID
742+
assert len(events2) == 3 # Will start from begining (START , CONTENT , END)
743+
assert isinstance(events2[1], TextMessageContentEvent)
744+
assert events2[0].message_id != message_id # Not the same message ID Because its a new streaming
742745

743746
# Final event (should end streaming - requires is_final_response=True)
744747
mock_adk_event_with_content.partial = False
@@ -749,9 +752,7 @@ async def test_partial_streaming_continuation(self, translator, mock_adk_event_w
749752
async for event in translator.translate(mock_adk_event_with_content, "thread_1", "run_1"):
750753
events3.append(event)
751754

752-
assert len(events3) == 1 # Only END (final response skips content)
753-
assert isinstance(events3[0], TextMessageEndEvent)
754-
assert events3[0].message_id == message_id
755+
assert len(events3) == 0 # No more message (turn Complete)
755756

756757
# Should reset streaming state
757758
assert translator._is_streaming is False

0 commit comments

Comments
 (0)