44from typing import Generator
55
66import pytest
7- from conftest import send_and_receive_api_message
7+ from conftest import send_and_receive_api_message , assert_error_response
88
99from balatrobot .enums import State
1010
@@ -127,9 +127,7 @@ def test_start_run_missing_required_args(self, udp_client: socket.socket) -> Non
127127 response = send_and_receive_api_message (
128128 udp_client , "start_run" , incomplete_args
129129 )
130- assert isinstance (response , dict )
131- assert "error" in response
132- assert "Invalid deck arg" in response ["error" ]
130+ assert_error_response (response , "Invalid deck arg for start_run" )
133131
134132 def test_start_run_invalid_deck (self , udp_client : socket .socket ) -> None :
135133 """Test start_run with invalid deck name."""
@@ -141,9 +139,7 @@ def test_start_run_invalid_deck(self, udp_client: socket.socket) -> None:
141139 }
142140 # Should receive error response
143141 response = send_and_receive_api_message (udp_client , "start_run" , invalid_args )
144- assert isinstance (response , dict )
145- assert "error" in response
146- assert "Invalid deck arg" in response ["error" ]
142+ assert_error_response (response , "Invalid deck arg for start_run" , ["deck" ])
147143
148144
149145class TestGoToMenu :
@@ -231,9 +227,9 @@ def test_invalid_blind_action(self, udp_client: socket.socket) -> None:
231227 )
232228
233229 # Verify error response
234- assert isinstance ( error_response , dict )
235- assert "error" in error_response
236- assert "Invalid action arg" in error_response [ "error" ]
230+ assert_error_response (
231+ error_response , "Invalid action arg for skip_or_select_blind" , [ "action" ]
232+ )
237233
238234
239235class TestPlayHandOrDiscard :
@@ -327,9 +323,9 @@ def test_play_hand_or_discard_invalid_cards(
327323 )
328324
329325 # Should receive error response for invalid card index
330- assert isinstance ( response , dict )
331- assert "error" in response
332- assert "Invalid card index" in response [ "error" ]
326+ assert_error_response (
327+ response , "Invalid card index" , [ "card_index" , "hand_size" ]
328+ )
333329
334330 def test_play_hand_invalid_action (self , udp_client : socket .socket ) -> None :
335331 """Test playing a hand with invalid action returns error."""
@@ -339,9 +335,9 @@ def test_play_hand_invalid_action(self, udp_client: socket.socket) -> None:
339335 )
340336
341337 # Should receive error response for invalid action
342- assert isinstance ( response , dict )
343- assert "error" in response
344- assert "Invalid action arg" in response [ "error" ]
338+ assert_error_response (
339+ response , "Invalid action arg for play_hand_or_discard" , [ "action" ]
340+ )
345341
346342 @pytest .mark .parametrize (
347343 "cards,expected_new_cards" ,
@@ -407,9 +403,9 @@ def test_try_to_discard_when_no_discards_left(
407403 )
408404
409405 # Should receive error response for no discards left
410- assert isinstance ( response , dict )
411- assert "error" in response
412- assert "No discards left" in response [ "error" ]
406+ assert_error_response (
407+ response , "No discards left to perform discard" , [ "discards_left" ]
408+ )
413409
414410
415411class TestCashOut :
@@ -461,7 +457,6 @@ def test_cash_out_invalid_state_error(self, udp_client: socket.socket) -> None:
461457 response = send_and_receive_api_message (udp_client , "cash_out" , {})
462458
463459 # Verify error response
464- assert isinstance (response , dict )
465- assert "error" in response
466- assert "Cannot cash out when not in shop" in response ["error" ]
467- assert "state" in response
460+ assert_error_response (
461+ response , "Cannot cash out when not in shop" , ["current_state" ]
462+ )
0 commit comments