@@ -195,19 +195,20 @@ async def test_trading_view_signal_callback(tools):
195195 context = script_keywords .get_base_context (producer .trading_mode )
196196 with mock .patch .object (script_keywords , "get_base_context" , mock .Mock (return_value = context )) \
197197 as get_base_context_mock :
198- # ensure exception is caught
199- with mock .patch .object (
200- producer , "signal_callback" , mock .AsyncMock (side_effect = errors .MissingFunds )
201- ) as signal_callback_mock :
202- signal = f"""
203- EXCHANGE={ exchange_manager .exchange_name }
204- SYMBOL={ symbol }
205- SIGNAL=BUY
206- """
207- await mode ._trading_view_signal_callback ({"metadata" : signal })
208- signal_callback_mock .assert_awaited_once ()
209- get_base_context_mock .assert_called_once ()
210- get_base_context_mock .reset_mock ()
198+ for exception in (errors .MissingFunds , errors .InvalidArgumentError ):
199+ # ensure exception is caught
200+ with mock .patch .object (
201+ producer , "signal_callback" , mock .AsyncMock (side_effect = exception )
202+ ) as signal_callback_mock :
203+ signal = f"""
204+ EXCHANGE={ exchange_manager .exchange_name }
205+ SYMBOL={ symbol }
206+ SIGNAL=BUY
207+ """
208+ await mode ._trading_view_signal_callback ({"metadata" : signal })
209+ signal_callback_mock .assert_awaited_once ()
210+ get_base_context_mock .assert_called_once ()
211+ get_base_context_mock .reset_mock ()
211212
212213 with mock .patch .object (producer , "signal_callback" , mock .AsyncMock ()) as signal_callback_mock :
213214 # invalid data
@@ -427,6 +428,23 @@ async def test_signal_callback(tools):
427428 }, context )
428429 _set_state_mock .assert_not_called ()
429430
431+ with pytest .raises (errors .InvalidArgumentError ):
432+ await producer .signal_callback ({
433+ mode .EXCHANGE_KEY : exchange_manager .exchange_name ,
434+ mode .SYMBOL_KEY : "unused" ,
435+ mode .SIGNAL_KEY : "DSDSDDSS" ,
436+ mode .PRICE_KEY : "123000q" , # price = 123
437+ mode .VOLUME_KEY : "11111b" , # base amount: not enough funds
438+ mode .REDUCE_ONLY_KEY : True ,
439+ mode .ORDER_TYPE_SIGNAL : "LiMiT" ,
440+ mode .STOP_PRICE_KEY : "-10%" , # price - 10%
441+ mode .TAKE_PROFIT_PRICE_KEY : "120.333333333333333d" , # price + 120.333333333333333
442+ mode .EXCHANGE_ORDER_IDS : ["ab1" , "aaaaa" ],
443+ "PARAM_TAG_1" : "ttt" ,
444+ "PARAM_Plop" : False ,
445+ }, context )
446+ _set_state_mock .assert_not_called ()
447+
430448
431449def compare_dict_with_nan (d_1 , d_2 ):
432450 try :
0 commit comments