@@ -1231,6 +1231,70 @@ def test_check_dry_limit_order_filled(
12311231 assert fee_mock .call_count == expected_calls
12321232
12331233
1234+ @pytest .mark .parametrize (
1235+ "immediate,crossed,expected_status,expected_fee_type" ,
1236+ [
1237+ (True , True , "closed" , "taker" ),
1238+ (False , True , "closed" , "maker" ),
1239+ (True , False , "open" , None ),
1240+ ],
1241+ )
1242+ def test_check_dry_limit_order_filled_stoploss (
1243+ default_conf , mocker , immediate , crossed , expected_status , expected_fee_type , order_book_l2_usd
1244+ ):
1245+ exchange = get_patched_exchange (mocker , default_conf )
1246+ mocker .patch .multiple (
1247+ EXMS ,
1248+ exchange_has = MagicMock (return_value = True ),
1249+ _dry_is_price_crossed = MagicMock (return_value = crossed ),
1250+ fetch_l2_order_book = order_book_l2_usd ,
1251+ )
1252+ average_mock = mocker .patch (f"{ EXMS } .get_dry_market_fill_price" , return_value = 24.25 )
1253+ fee_mock = mocker .patch (
1254+ f"{ EXMS } .add_dry_order_fee" ,
1255+ autospec = True ,
1256+ side_effect = lambda self , pair , dry_order , taker_or_maker : dry_order ,
1257+ )
1258+
1259+ amount = 1.75
1260+ order = {
1261+ "symbol" : "LTC/USDT" ,
1262+ "status" : "open" ,
1263+ "type" : "limit" ,
1264+ "side" : "sell" ,
1265+ "amount" : amount ,
1266+ "filled" : 0.0 ,
1267+ "remaining" : amount ,
1268+ "price" : 25.0 ,
1269+ "average" : 0.0 ,
1270+ "cost" : 0.0 ,
1271+ "fee" : None ,
1272+ "ft_order_type" : "stoploss" ,
1273+ "stopLossPrice" : 24.5 ,
1274+ }
1275+
1276+ result = exchange .check_dry_limit_order_filled (order , immediate = immediate )
1277+
1278+ assert result ["status" ] == expected_status
1279+ assert order_book_l2_usd .call_count == 1
1280+ if crossed :
1281+ assert result ["filled" ] == amount
1282+ assert result ["remaining" ] == 0
1283+ assert result ["average" ] == 24.25
1284+ assert result ["cost" ] == pytest .approx (amount * 24.25 )
1285+ assert average_mock .call_count == 1
1286+ assert fee_mock .call_count == 1
1287+ assert fee_mock .call_args [0 ][1 ] == "LTC/USDT"
1288+ assert fee_mock .call_args [0 ][3 ] == expected_fee_type
1289+ else :
1290+ assert result ["filled" ] == 0.0
1291+ assert result ["remaining" ] == amount
1292+ assert result ["average" ] == 0.0
1293+
1294+ assert average_mock .call_count == 0
1295+ assert fee_mock .call_count == 0
1296+
1297+
12341298@pytest .mark .parametrize (
12351299 "side,price,filled,converted" ,
12361300 [
0 commit comments