You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_events.py 3.5 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import json
  2. from autogen_agentchat.base import Response, TaskResult
  3. from autogen_agentchat.messages import TextMessage
  4. from autogen_agentchat.teams._group_chat._events import (
  5. GroupChatAgentResponse,
  6. GroupChatMessage,
  7. GroupChatStart,
  8. GroupChatTeamResponse,
  9. )
  10. def test_group_chat_message_preserves_subclass_data() -> None:
  11. """Test that GroupChatMessage preserves TextMessage subclass fields."""
  12. # Create a TextMessage with subclass-specific fields
  13. text_msg = TextMessage(
  14. content="Hello, world!",
  15. source="TestAgent",
  16. )
  17. # Wrap in GroupChatMessage
  18. group_msg = GroupChatMessage(message=text_msg)
  19. # Serialize and verify subclass fields are preserved
  20. json_data = group_msg.model_dump_json()
  21. parsed = json.loads(json_data)
  22. # The critical test: subclass fields should be preserved
  23. assert "content" in parsed["message"], "TextMessage content field should be preserved"
  24. assert "type" in parsed["message"], "TextMessage type field should be preserved"
  25. assert parsed["message"]["content"] == "Hello, world!"
  26. assert parsed["message"]["type"] == "TextMessage"
  27. def test_group_chat_start_preserves_message_list_data() -> None:
  28. """Test that GroupChatStart preserves subclass data in message lists."""
  29. text_msg1 = TextMessage(content="First message", source="Agent1")
  30. text_msg2 = TextMessage(content="Second message", source="Agent2")
  31. group_start = GroupChatStart(messages=[text_msg1, text_msg2])
  32. json_data = group_start.model_dump_json()
  33. parsed = json.loads(json_data)
  34. # Check both messages preserve subclass data
  35. assert "content" in parsed["messages"][0]
  36. assert "content" in parsed["messages"][1]
  37. assert parsed["messages"][0]["content"] == "First message"
  38. assert parsed["messages"][1]["content"] == "Second message"
  39. def test_group_chat_agent_response_preserves_dataclass_fields() -> None:
  40. """Test that GroupChatAgentResponse preserves data in Response dataclass fields."""
  41. text_msg = TextMessage(content="Response message", source="ResponseAgent")
  42. inner_text_msg = TextMessage(content="Inner message", source="InnerAgent")
  43. response = Response(chat_message=text_msg, inner_messages=[inner_text_msg])
  44. group_response = GroupChatAgentResponse(response=response, name="TestAgent")
  45. json_data = group_response.model_dump_json()
  46. parsed = json.loads(json_data)
  47. # Verify dataclass field preserves subclass data
  48. assert "content" in parsed["response"]["chat_message"]
  49. assert "type" in parsed["response"]["chat_message"]
  50. assert parsed["response"]["chat_message"]["content"] == "Response message"
  51. inner_msgs = parsed["response"]["inner_messages"]
  52. assert len(inner_msgs) == 1
  53. assert "content" in inner_msgs[0]
  54. assert inner_msgs[0]["content"] == "Inner message"
  55. def test_group_chat_team_response_preserves_nested_data() -> None:
  56. """Test that GroupChatTeamResponse preserves deeply nested subclass data."""
  57. text_msg = TextMessage(content="Nested message", source="NestedAgent")
  58. task_result = TaskResult(messages=[text_msg])
  59. team_response = GroupChatTeamResponse(result=task_result, name="TestTeam")
  60. json_data = team_response.model_dump_json()
  61. parsed = json.loads(json_data)
  62. # Verify deeply nested subclass data is preserved
  63. assert "content" in parsed["result"]["messages"][0]
  64. assert parsed["result"]["messages"][0]["content"] == "Nested message"