Skip to content

Commit bbb1fec

Browse files
committed
test: enhanced fetch_order_fallback test
1 parent b7c89a7 commit bbb1fec

1 file changed

Lines changed: 63 additions & 0 deletions

File tree

tests/exchange/test_exchange.py

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
20482111
def test_fetch_trading_fees(default_conf, mocker):
20492112
api_mock = MagicMock()
20502113
tick = {

0 commit comments

Comments
 (0)