1313from client import BASE_URL , PubSubClient # noqa: E402
1414
1515
16- # Mock du socketio.Client
17- # On va mocker la class socketio.Client elle-même, pas son instance directement
18- # Ensuite, on accède à mock_sio_client.return_value pour mocker les méthodes de l' instance
16+ # Mock of socketio.Client
17+ # We will mock the socketio.Client class itself, not its instance directly
18+ # Then, we access mock_sio_client.return_value to mock the instance methods
1919@pytest .fixture
2020def mock_sio_client ():
21- """Mocke l'instance de socketio.Client utilisée par PubSubClient."""
21+ """Mocks the socketio.Client instance used by PubSubClient."""
2222 with patch ("client.socketio.Client" ) as MockClient : # <-- Patch la class directement dans le module client
23- instance = MockClient .return_value # Ceci est le mock de l' instance qui sera créée
24- instance .connected = False # Simule l'état initial déconnecté
25- yield MockClient # On yield le Mock de la CLASS Client elle-même, pas son instance
23+ instance = MockClient .return_value # This is the mock of the instance that will be created
24+ instance .connected = False # Simulate initial disconnected state
25+ yield MockClient # We yield the Mock of the Client CLASS itself, not its instance
2626
2727
2828# Mock de requests.post
2929@pytest .fixture
3030def mock_requests_post ():
3131 """Mocke requests.post pour les appels de publication HTTP."""
32- # Patch requests.post dans le module client où il est utilisé
32+ # Patch requests.post in the client module where it is used
3333 with patch ("client.requests.post" ) as mock_post : # <-- Patch requests.post dans le module client
3434 mock_response = MagicMock ()
3535 mock_response .json .return_value = {"status" : "ok" , "message_id" : "test_id_returned" }
36- mock_response .raise_for_status .return_value = None # Pas d'erreurs HTTP par défaut
36+ mock_response .raise_for_status .return_value = None # No HTTP errors by default
3737 mock_post .return_value = mock_response
3838 yield mock_post
3939
@@ -42,18 +42,18 @@ def mock_requests_post():
4242
4343
4444def test_pubsub_client_init (mock_sio_client ):
45- """Vérifie l'initialisation du client et l'enregistrement des gestionnaires ."""
45+ """Verifies client initialization and handler registration ."""
4646 consumer = "test_alice"
4747 topics = ["sport" , "finance" ]
4848 client = PubSubClient (consumer , topics )
4949
5050 assert client .consumer_name == consumer
5151 assert client .topics == topics
5252
53- # Vérifiez que socketio.Client a été appelé une fois avec le bon argument
53+ # Verify that socketio.Client was called once with the correct argument
5454 mock_sio_client .assert_called_once_with (reconnection = True )
5555
56- # Vérifiez que les gestionnaires d'événements sont enregistrés sur l'instance mockée
56+ # Verify that event handlers are registered on the mocked instance
5757 mock_sio_client .return_value .on .assert_any_call ("message" , client .on_message )
5858 mock_sio_client .return_value .on .assert_any_call ("new_client" , client .on_new_client )
5959 mock_sio_client .return_value .on .assert_any_call ("client_disconnected" , client .on_client_disconnected )
@@ -62,26 +62,26 @@ def test_pubsub_client_init(mock_sio_client):
6262
6363
6464def test_pubsub_client_connect_success (mock_sio_client ):
65- """Teste la méthode connect en cas de succès ."""
65+ """Tests the connect method in case of success ."""
6666 consumer = "test_bob"
6767 topics = ["tech" ]
6868 client = PubSubClient (consumer , topics )
6969
70- # Obtenez le mock de l'instance client qui a été créée
70+ # Get the mock of the client instance that was created
7171 mock_instance = mock_sio_client .return_value
72- mock_instance .connected = True # Simule une connection réussie
72+ mock_instance .connected = True # Simulate successful connection
7373
7474 client .connect ()
7575
76- # Vérifiez que connect a été appelé sur l' instance mockée avec la bonne URL
76+ # Verify that connect was called on the mocked instance with the correct URL
7777 mock_instance .connect .assert_called_once_with (BASE_URL )
7878
79- # Vérifiez que l'événement "subscribe" a été émis sur l'instance mockée
79+ # Verify that the "subscribe" event was emitted on the mocked instance
8080 mock_instance .emit .assert_called_once_with ("subscribe" , {"consumer" : consumer , "topics" : topics })
8181
8282
8383def test_pubsub_client_connect_failure (mock_sio_client , caplog ):
84- """Teste la méthode connect en cas d'échec de connection."""
84+ """Tests the connect method in case of connection failure ."""
8585 consumer = "test_charlie"
8686 topics = ["music" ]
8787 client = PubSubClient (consumer , topics )
@@ -94,9 +94,9 @@ def test_pubsub_client_connect_failure(mock_sio_client, caplog):
9494 with caplog .at_level (logging .ERROR ): # Capture les logs d'erreur
9595 client .connect ()
9696
97- # Le message d'erreur doit être dans les logs
97+ # The error message should be in the logs
9898 assert "Failed to connect to server: Connection refused" in caplog .text
99- # Vérifiez que connect a été appelé même s'il a levé une exception
99+ # Verify that connect was called even if it raised an exception
100100 mock_instance .connect .assert_called_once ()
101101
102102
@@ -113,7 +113,7 @@ def test_pubsub_client_on_message(caplog):
113113
114114
115115def test_pubsub_client_publish (mock_requests_post ):
116- """Teste la méthode publish."""
116+ """Tests the publish method ."""
117117 consumer = "test_eve"
118118 topics = ["travel" ]
119119 client = PubSubClient (consumer , topics )
@@ -124,7 +124,7 @@ def test_pubsub_client_publish(mock_requests_post):
124124
125125 response = client .publish (topic_to_publish , message_content , message_id )
126126
127- # Vérifiez que requests.post a été appelé avec les bonnes données
127+ # Verify that requests.post was called with the correct data
128128 expected_url = f"{ BASE_URL } /publish"
129129 expected_json = {
130130 "topic" : topic_to_publish ,
@@ -134,41 +134,41 @@ def test_pubsub_client_publish(mock_requests_post):
134134 }
135135 mock_requests_post .assert_called_once_with (expected_url , json = expected_json )
136136
137- # Vérifiez la réponse renvoyée par la méthode publish
137+ # Verify the response returned by the publish method
138138 assert response == {"status" : "ok" , "message_id" : "test_id_returned" }
139139
140140
141141def test_pubsub_client_disconnect_connected (mock_sio_client , caplog ):
142- """Teste la déconnection quand le client est connecté ."""
142+ """Tests disconnection when the client is connected ."""
143143 consumer = "test_frank"
144144 topics = ["sports" ]
145145 client = PubSubClient (consumer , topics )
146146
147147 # Obtenez le mock de l'instance client
148148 mock_instance = mock_sio_client .return_value
149- mock_instance .connected = True # Simule un état connecté
149+ mock_instance .connected = True # Simulate connected state
150150
151151 with caplog .at_level (logging .INFO ):
152152 client .disconnect ()
153153
154- # Vérifiez que disconnect a été appelé sur l'instance mockée
154+ # Verify that disconnect was called on the mocked instance
155155 mock_instance .disconnect .assert_called_once ()
156156 assert f"Disconnected { consumer } from server." in caplog .text
157157
158158
159159def test_pubsub_client_disconnect_not_connected (mock_sio_client , caplog ):
160- """Teste la déconnection quand le client n'est pas connecté ."""
160+ """Tests disconnection when the client is not connected ."""
161161 consumer = "test_grace"
162162 topics = ["art" ]
163163 client = PubSubClient (consumer , topics )
164164
165165 # Obtenez le mock de l'instance client
166166 mock_instance = mock_sio_client .return_value
167- mock_instance .connected = False # Simule un état non connecté
167+ mock_instance .connected = False # Simulate disconnected state
168168
169169 with caplog .at_level (logging .INFO ):
170170 client .disconnect ()
171171
172- # Vérifiez que disconnect n'a PAS été appelé sur l'instance mockée
172+ # Verify that disconnect was NOT called on the mocked instance
173173 mock_instance .disconnect .assert_not_called ()
174174 assert f"Disconnected { consumer } from server." not in caplog .text
0 commit comments