mirror of
https://github.com/freqtrade/freqtrade.git
synced 2025-12-14 20:01:18 +00:00
Add test for fetch_order_emulated
This commit is contained in:
@@ -3391,6 +3391,72 @@ def test_fetch_order(default_conf, mocker, exchange_name, caplog):
|
|||||||
order_id='_', pair='TKN/BTC')
|
order_id='_', pair='TKN/BTC')
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.usefixtures("init_persistence")
|
||||||
|
@pytest.mark.parametrize("exchange_name", EXCHANGES)
|
||||||
|
def test_fetch_order_emulated(default_conf, mocker, exchange_name, caplog):
|
||||||
|
default_conf['dry_run'] = True
|
||||||
|
default_conf['exchange']['log_responses'] = True
|
||||||
|
order = MagicMock()
|
||||||
|
order.myid = 123
|
||||||
|
order.symbol = 'TKN/BTC'
|
||||||
|
|
||||||
|
exchange = get_patched_exchange(mocker, default_conf, id=exchange_name)
|
||||||
|
mocker.patch(f'{EXMS}.exchange_has', return_value=False)
|
||||||
|
exchange._dry_run_open_orders['X'] = order
|
||||||
|
# Dry run - regular fetch_order behavior
|
||||||
|
assert exchange.fetch_order('X', 'TKN/BTC').myid == 123
|
||||||
|
|
||||||
|
with pytest.raises(InvalidOrderException, match=r'Tried to get an invalid dry-run-order.*'):
|
||||||
|
exchange.fetch_order('Y', 'TKN/BTC')
|
||||||
|
|
||||||
|
default_conf['dry_run'] = False
|
||||||
|
mocker.patch(f'{EXMS}.exchange_has', return_value=False)
|
||||||
|
api_mock = MagicMock()
|
||||||
|
api_mock.fetch_open_order = MagicMock(return_value={'id': '123', 'amount': 2, 'symbol': 'TKN/BTC'})
|
||||||
|
api_mock.fetch_closed_order = MagicMock(return_value={'id': '123', 'amount': 2, 'symbol': 'TKN/BTC'})
|
||||||
|
exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name)
|
||||||
|
assert exchange.fetch_order(
|
||||||
|
'X', 'TKN/BTC') == {'id': '123', 'amount': 2, 'symbol': 'TKN/BTC'}
|
||||||
|
assert log_has(
|
||||||
|
("API fetch_open_order: {\'id\': \'123\', \'amount\': 2, \'symbol\': \'TKN/BTC\'}"
|
||||||
|
),
|
||||||
|
caplog
|
||||||
|
)
|
||||||
|
assert api_mock.fetch_open_order.call_count == 1
|
||||||
|
assert api_mock.fetch_closed_order.call_count == 0
|
||||||
|
caplog.clear()
|
||||||
|
|
||||||
|
# open_order doesn't find order
|
||||||
|
api_mock.fetch_open_order = MagicMock(side_effect=ccxt.OrderNotFound("Order not found"))
|
||||||
|
api_mock.fetch_closed_order = MagicMock(return_value={'id': '123', 'amount': 2, 'symbol': 'TKN/BTC'})
|
||||||
|
exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name)
|
||||||
|
assert exchange.fetch_order(
|
||||||
|
'X', 'TKN/BTC') == {'id': '123', 'amount': 2, 'symbol': 'TKN/BTC'}
|
||||||
|
assert log_has(
|
||||||
|
("API fetch_closed_order: {\'id\': \'123\', \'amount\': 2, \'symbol\': \'TKN/BTC\'}"
|
||||||
|
),
|
||||||
|
caplog
|
||||||
|
)
|
||||||
|
assert api_mock.fetch_open_order.call_count == 1
|
||||||
|
assert api_mock.fetch_closed_order.call_count == 1
|
||||||
|
caplog.clear()
|
||||||
|
|
||||||
|
with pytest.raises(InvalidOrderException):
|
||||||
|
api_mock.fetch_open_order = MagicMock(side_effect=ccxt.InvalidOrder("Order not found"))
|
||||||
|
api_mock.fetch_closed_order = MagicMock(side_effect=ccxt.InvalidOrder("Order not found"))
|
||||||
|
exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name)
|
||||||
|
exchange.fetch_order(order_id='_', pair='TKN/BTC')
|
||||||
|
assert api_mock.fetch_open_order.call_count == 1
|
||||||
|
|
||||||
|
api_mock.fetch_open_order = MagicMock(side_effect=ccxt.OrderNotFound("Order not found"))
|
||||||
|
exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name)
|
||||||
|
|
||||||
|
ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name,
|
||||||
|
'fetch_order_emulated', 'fetch_open_order',
|
||||||
|
retries=1,
|
||||||
|
order_id='_', pair='TKN/BTC', params={})
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.usefixtures("init_persistence")
|
@pytest.mark.usefixtures("init_persistence")
|
||||||
@pytest.mark.parametrize("exchange_name", EXCHANGES)
|
@pytest.mark.parametrize("exchange_name", EXCHANGES)
|
||||||
def test_fetch_stoploss_order(default_conf, mocker, exchange_name):
|
def test_fetch_stoploss_order(default_conf, mocker, exchange_name):
|
||||||
|
|||||||
Reference in New Issue
Block a user