@@ -576,6 +576,37 @@ def test_create_status_update_event_with_input_required_state(self):
576576 assert result .context_id == context_id
577577 assert result .status .state == TaskState .input_required
578578
579+ def test_convert_event_to_a2a_message_with_multiple_parts_returned (self ):
580+ """Test event to message conversion when part_converter returns multiple parts."""
581+ from a2a import types as a2a_types
582+ from google .adk .a2a .converters .event_converter import convert_event_to_a2a_message
583+ from google .genai import types as genai_types
584+
585+ # Arrange
586+ mock_genai_part = genai_types .Part (text = "source part" )
587+ mock_a2a_part1 = a2a_types .Part (root = a2a_types .TextPart (text = "part 1" ))
588+ mock_a2a_part2 = a2a_types .Part (root = a2a_types .TextPart (text = "part 2" ))
589+ mock_convert_part = Mock ()
590+ mock_convert_part .return_value = [mock_a2a_part1 , mock_a2a_part2 ]
591+
592+ self .mock_event .content = genai_types .Content (
593+ parts = [mock_genai_part ], role = "model"
594+ )
595+
596+ # Act
597+ result = convert_event_to_a2a_message (
598+ self .mock_event ,
599+ self .mock_invocation_context ,
600+ part_converter = mock_convert_part ,
601+ )
602+
603+ # Assert
604+ assert result is not None
605+ assert len (result .parts ) == 2
606+ assert result .parts [0 ].root .text == "part 1"
607+ assert result .parts [1 ].root .text == "part 2"
608+ mock_convert_part .assert_called_once_with (mock_genai_part )
609+
579610
580611class TestA2AToEventConverters :
581612 """Test suite for A2A to Event conversion functions."""
@@ -801,6 +832,36 @@ def test_convert_a2a_message_to_event_success(self):
801832 assert result .content .parts [0 ].text == "test content"
802833 mock_convert_part .assert_called_once_with (mock_a2a_part )
803834
835+ def test_convert_a2a_message_to_event_with_multiple_parts_returned (self ):
836+ """Test message to event conversion when part_converter returns multiple parts."""
837+ from google .adk .a2a .converters .event_converter import convert_a2a_message_to_event
838+ from google .genai import types as genai_types
839+
840+ # Arrange
841+ mock_a2a_part = Mock ()
842+ mock_genai_part1 = genai_types .Part (text = "part 1" )
843+ mock_genai_part2 = genai_types .Part (text = "part 2" )
844+ mock_convert_part = Mock ()
845+ mock_convert_part .return_value = [mock_genai_part1 , mock_genai_part2 ]
846+
847+ mock_message = Mock (spec = Message )
848+ mock_message .parts = [mock_a2a_part ]
849+
850+ # Act
851+ result = convert_a2a_message_to_event (
852+ mock_message ,
853+ "test-author" ,
854+ self .mock_invocation_context ,
855+ mock_convert_part ,
856+ )
857+
858+ # Assert
859+ assert result .content .role == "model"
860+ assert len (result .content .parts ) == 2
861+ assert result .content .parts [0 ].text == "part 1"
862+ assert result .content .parts [1 ].text == "part 2"
863+ mock_convert_part .assert_called_once_with (mock_a2a_part )
864+
804865 def test_convert_a2a_message_to_event_with_long_running_tools (self ):
805866 """Test conversion with long-running tools by mocking the entire flow."""
806867 from google .adk .a2a .converters .event_converter import convert_a2a_message_to_event
0 commit comments