@@ -180,10 +180,11 @@ async def test_translate_text_content_basic(self, translator, mock_adk_event_wit
180
180
async for event in translator .translate (mock_adk_event_with_content , "thread_1" , "run_1" ):
181
181
events .append (event )
182
182
183
- assert len (events ) == 2 # START, CONTENT (no END unless is_final_response=True)
183
+ assert len (events ) == 3 # START, CONTENT , END
184
184
assert isinstance (events [0 ], TextMessageStartEvent )
185
185
assert isinstance (events [1 ], TextMessageContentEvent )
186
-
186
+ assert isinstance (events [2 ], TextMessageEndEvent )
187
+
187
188
# Check content
188
189
assert events [1 ].delta == "Test content"
189
190
@@ -206,7 +207,7 @@ async def test_translate_text_content_multiple_parts(self, translator, mock_adk_
206
207
async for event in translator .translate (mock_adk_event , "thread_1" , "run_1" ):
207
208
events .append (event )
208
209
209
- assert len (events ) == 2 # START, CONTENT (no END unless is_final_response=True)
210
+ assert len (events ) == 3 # START, CONTENT , END
210
211
assert isinstance (events [1 ], TextMessageContentEvent )
211
212
assert events [1 ].delta == "First partSecond part" # Joined without newlines
212
213
@@ -220,7 +221,7 @@ async def test_translate_text_content_partial_streaming(self, translator, mock_a
220
221
async for event in translator .translate (mock_adk_event_with_content , "thread_1" , "run_1" ):
221
222
events .append (event )
222
223
223
- assert len (events ) == 2 # START, CONTENT (no END)
224
+ assert len (events ) == 3 # START, CONTENT , END
224
225
assert isinstance (events [0 ], TextMessageStartEvent )
225
226
assert isinstance (events [1 ], TextMessageContentEvent )
226
227
@@ -325,7 +326,7 @@ async def test_translate_text_content_mixed_text_parts(self, translator, mock_ad
325
326
async for event in translator .translate (mock_adk_event , "thread_1" , "run_1" ):
326
327
events .append (event )
327
328
328
- assert len (events ) == 2 # START, CONTENT (no END unless is_final_response=True)
329
+ assert len (events ) == 3 # START, CONTENT , END
329
330
assert events [1 ].delta == "Valid textMore text"
330
331
331
332
@pytest .mark .asyncio
@@ -612,20 +613,21 @@ async def test_streaming_state_management(self, translator, mock_adk_event_with_
612
613
async for event in translator .translate (mock_adk_event_with_content , "thread_1" , "run_1" ):
613
614
events1 .append (event )
614
615
615
- assert len (events1 ) == 2 # START, CONTENT (no END unless is_final_response=True)
616
+ assert len (events1 ) == 3 # START, CONTENT, END
616
617
message_id = events1 [0 ].message_id
617
618
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
621
623
622
624
# Second event should continue streaming (same message ID)
623
625
events2 = []
624
626
async for event in translator .translate (mock_adk_event_with_content , "thread_1" , "run_1" ):
625
627
events2 .append (event )
626
628
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
629
631
630
632
@pytest .mark .asyncio
631
633
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
650
652
events .append (event )
651
653
652
654
# 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
654
656
655
657
# Check event types
656
658
event_types = [type (event ) for event in events ]
657
659
assert TextMessageStartEvent in event_types
658
660
assert TextMessageContentEvent in event_types
659
661
assert StateDeltaEvent in event_types
660
662
assert CustomEvent in event_types
663
+ assert TextMessageEndEvent in event_types
661
664
662
665
@pytest .mark .asyncio
663
666
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
724
727
async for event in translator .translate (mock_adk_event_with_content , "thread_1" , "run_1" ):
725
728
events1 .append (event )
726
729
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
729
732
message_id = events1 [0 ].message_id
730
733
731
734
# Second partial event (should continue streaming)
@@ -736,9 +739,9 @@ async def test_partial_streaming_continuation(self, translator, mock_adk_event_w
736
739
async for event in translator .translate (mock_adk_event_with_content , "thread_1" , "run_1" ):
737
740
events2 .append (event )
738
741
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
742
745
743
746
# Final event (should end streaming - requires is_final_response=True)
744
747
mock_adk_event_with_content .partial = False
@@ -749,9 +752,7 @@ async def test_partial_streaming_continuation(self, translator, mock_adk_event_w
749
752
async for event in translator .translate (mock_adk_event_with_content , "thread_1" , "run_1" ):
750
753
events3 .append (event )
751
754
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)
755
756
756
757
# Should reset streaming state
757
758
assert translator ._is_streaming is False
0 commit comments