@@ -2045,6 +2045,69 @@ def has_resp(_, endpoint):
20452045 assert api_mock .fetch_canceled_orders .call_count == expected
20462046
20472047
2048+ @pytest .mark .parametrize ("exchange_name" , [ex for ex in EXCHANGES if ex != "bybit" ])
2049+ @pytest .mark .parametrize (
2050+ "call_config, expected" ,
2051+ [
2052+ # call_config: (fetch_orders, fetch_open, fetch_closed, fetch_canceled)
2053+ # expected: (fetch_orders_calls, fetch_open_calls, fetch_closed_calls, fetch_canceled_calls)
2054+ ((True , False , False , False ), (1 , 0 , 0 , 0 )),
2055+ ((False , True , True , False ), (0 , 1 , 1 , 0 )),
2056+ ((False , True , False , True ), (0 , 1 , 0 , 1 )),
2057+ ((False , True , True , True ), (0 , 1 , 1 , 1 )),
2058+ ],
2059+ )
2060+ def test_fetch_orders_multi (
2061+ default_conf , mocker , exchange_name , limit_order , call_config , expected
2062+ ):
2063+ default_conf ["dry_run" ] = False
2064+ api_mock = MagicMock ()
2065+ call_count = 1
2066+
2067+ def return_value (* args , ** kwargs ):
2068+ nonlocal call_count
2069+ call_count += 2
2070+ return [
2071+ {** limit_order ["buy" ], "id" : call_count },
2072+ {** limit_order ["sell" ], "id" : call_count + 1 },
2073+ ]
2074+
2075+ api_mock .fetch_orders = MagicMock (side_effect = return_value )
2076+ api_mock .fetch_open_orders = MagicMock (return_value = [limit_order ["buy" ]])
2077+ api_mock .fetch_canceled_orders = MagicMock (return_value = [limit_order ["sell" ]])
2078+ api_mock .fetch_closed_orders = MagicMock (return_value = [limit_order ["buy" ]])
2079+
2080+ mocker .patch (f"{ EXMS } .exchange_has" , return_value = True )
2081+ start_time = datetime .now (UTC ) - timedelta (days = 20 )
2082+
2083+ exchange = get_patched_exchange (mocker , default_conf , api_mock , exchange = exchange_name )
2084+
2085+ def has_resp (_ , endpoint ):
2086+
2087+ if endpoint == "fetchOrders" :
2088+ return call_config [0 ]
2089+ if endpoint == "fetchClosedOrders" :
2090+ return call_config [2 ]
2091+ if endpoint == "fetchOpenOrders" :
2092+ return call_config [1 ]
2093+ if endpoint == "fetchCanceledOrders" :
2094+ return call_config [3 ]
2095+
2096+ if exchange_name == "okx" :
2097+ # Special OKX case is tested separately
2098+ return
2099+
2100+ mocker .patch (f"{ EXMS } .exchange_has" , has_resp )
2101+
2102+ #
2103+ resp = exchange .fetch_orders ("mocked" , start_time )
2104+ assert api_mock .fetch_orders .call_count == expected [0 ]
2105+ assert api_mock .fetch_open_orders .call_count == expected [1 ]
2106+ assert api_mock .fetch_closed_orders .call_count == expected [2 ]
2107+ assert api_mock .fetch_canceled_orders .call_count == expected [3 ]
2108+ assert len (resp ) == 2 * expected [0 ] + expected [1 ] + expected [2 ] + expected [3 ]
2109+
2110+
20482111def test_fetch_trading_fees (default_conf , mocker ):
20492112 api_mock = MagicMock ()
20502113 tick = {
0 commit comments