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