diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 4ecafca67..71ced3212 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -897,9 +897,7 @@ class FreqtradeBot: except InsufficientFundsError as e: logger.warning(f"Unable to place stoploss order {e}.") # Try to figure out what went wrong - # TODO: test without refinding order logic - # TODO: Also reenable the test test_create_stoploss_order_insufficient_funds - # self.handle_insufficient_funds(trade) + self.handle_insufficient_funds(trade) except InvalidOrderException as e: trade.stoploss_order_id = None diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 90e398c91..3c5621e7a 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1333,42 +1333,42 @@ def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee, assert rpc_mock.call_args_list[1][0][0]['order_type'] == 'market' -# def test_create_stoploss_order_insufficient_funds(mocker, default_conf, caplog, fee, -# limit_buy_order_open, limit_sell_order): -# sell_mock = MagicMock(return_value={'id': limit_sell_order['id']}) -# freqtrade = get_patched_freqtradebot(mocker, default_conf) +def test_create_stoploss_order_insufficient_funds(mocker, default_conf, caplog, fee, + limit_buy_order_open, limit_sell_order): + sell_mock = MagicMock(return_value={'id': limit_sell_order['id']}) + freqtrade = get_patched_freqtradebot(mocker, default_conf) -# mock_insuf = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_insufficient_funds') -# mocker.patch.multiple( -# 'freqtrade.exchange.Exchange', -# fetch_ticker=MagicMock(return_value={ -# 'bid': 0.00001172, -# 'ask': 0.00001173, -# 'last': 0.00001172 -# }), -# buy=MagicMock(return_value=limit_buy_order_open), -# sell=sell_mock, -# get_fee=fee, -# fetch_order=MagicMock(return_value={'status': 'canceled'}), -# stoploss=MagicMock(side_effect=InsufficientFundsError()), -# ) -# patch_get_signal(freqtrade) -# freqtrade.strategy.order_types['stoploss_on_exchange'] = True + mock_insuf = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_insufficient_funds') + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + fetch_ticker=MagicMock(return_value={ + 'bid': 0.00001172, + 'ask': 0.00001173, + 'last': 0.00001172 + }), + buy=MagicMock(return_value=limit_buy_order_open), + sell=sell_mock, + get_fee=fee, + fetch_order=MagicMock(return_value={'status': 'canceled'}), + stoploss=MagicMock(side_effect=InsufficientFundsError()), + ) + patch_get_signal(freqtrade) + freqtrade.strategy.order_types['stoploss_on_exchange'] = True -# freqtrade.enter_positions() -# trade = Trade.query.first() -# caplog.clear() -# freqtrade.create_stoploss_order(trade, 200) -# # stoploss_orderid was empty before -# assert trade.stoploss_order_id is None -# assert mock_insuf.call_count == 1 -# mock_insuf.reset_mock() + freqtrade.enter_positions() + trade = Trade.query.first() + caplog.clear() + freqtrade.create_stoploss_order(trade, 200) + # stoploss_orderid was empty before + assert trade.stoploss_order_id is None + assert mock_insuf.call_count == 1 + mock_insuf.reset_mock() -# trade.stoploss_order_id = 'stoploss_orderid' -# freqtrade.create_stoploss_order(trade, 200) -# # No change to stoploss-orderid -# assert trade.stoploss_order_id == 'stoploss_orderid' -# assert mock_insuf.call_count == 1 + trade.stoploss_order_id = 'stoploss_orderid' + freqtrade.create_stoploss_order(trade, 200) + # No change to stoploss-orderid + assert trade.stoploss_order_id == 'stoploss_orderid' + assert mock_insuf.call_count == 1 @pytest.mark.usefixtures("init_persistence")