1+ import pytest
2+ from actor_core_client import AsyncClient as ActorClient
3+ from actor_core_test import setup_test
4+ from typing import TypedDict , List
5+
6+
7+ async def test_chat_room_should_handle_messages ():
8+ # Set up test environment
9+ client = await setup_test ()
10+
11+ # Connect to chat room
12+ chat_room = await client .get ("chatRoom" )
13+
14+ # Initial history should be empty
15+ initial_messages = await chat_room .action ("getHistory" , [])
16+ assert initial_messages == []
17+
18+ # Test event emission
19+ received_data = {"username" : "" , "message" : "" }
20+
21+ def on_message (username : str , message : str ):
22+ received_data ["username" ] = username
23+ received_data ["message" ] = message
24+
25+ chat_room .on_event ("newMessage" , on_message )
26+
27+ # Send a message
28+ test_user = "william"
29+ test_message = "All the world's a stage."
30+ await chat_room .action ("sendMessage" , [test_user , test_message ])
31+
32+ # Verify event was emitted with correct data
33+ assert received_data ["username" ] == test_user
34+ assert received_data ["message" ] == test_message
35+
36+ # Verify message was stored in history
37+ updated_messages = await chat_room .action ("getHistory" , [])
38+ assert updated_messages == [{"username" : test_user , "message" : test_message }]
39+
40+ # Send multiple messages and verify
41+ users = ["romeo" , "juliet" , "othello" ]
42+ messages = [
43+ "Wherefore art thou?" ,
44+ "Here I am!" ,
45+ "The green-eyed monster."
46+ ]
47+
48+ for i in range (len (users )):
49+ await chat_room .action ("sendMessage" , [users [i ], messages [i ]])
50+
51+ # Verify event emission
52+ assert received_data ["username" ] == users [i ]
53+ assert received_data ["message" ] == messages [i ]
54+
55+ # Verify all messages are in history in correct order
56+ final_history = await chat_room .action ("getHistory" , [])
57+ expected_history = [{"username" : test_user , "message" : test_message }]
58+ expected_history .extend ([
59+ {"username" : users [i ], "message" : messages [i ]}
60+ for i in range (len (users ))
61+ ])
62+
63+ assert final_history == expected_history
64+
65+ # Cleanup
66+ await chat_room .disconnect ()
0 commit comments