test: add test for bitget stoploss canceling

This commit is contained in:
Matthias
2026-04-20 20:03:58 +02:00
parent b467eff8be
commit af2e741465
+36 -1
View File
@@ -5,7 +5,7 @@ from unittest.mock import MagicMock, PropertyMock
import pytest import pytest
from freqtrade.enums import CandleType, MarginMode, RunMode, TradingMode from freqtrade.enums import CandleType, MarginMode, RunMode, TradingMode
from freqtrade.exceptions import OperationalException, RetryableOrderError from freqtrade.exceptions import InvalidOrderException, OperationalException, RetryableOrderError
from freqtrade.exchange.common import API_RETRY_COUNT from freqtrade.exchange.common import API_RETRY_COUNT
from freqtrade.util import dt_now, dt_ts, dt_utc from freqtrade.util import dt_now, dt_ts, dt_utc
from tests.conftest import EXMS, get_patched_exchange from tests.conftest import EXMS, get_patched_exchange
@@ -77,6 +77,41 @@ def test_fetch_stoploss_order_bitget_exceptions(default_conf_usdt, mocker):
) )
@pytest.mark.usefixtures("init_persistence")
def test_cancel_stoploss_order_bitget(default_conf_usdt, mocker):
default_conf_usdt["dry_run"] = False
api_mock = MagicMock()
exchange = get_patched_exchange(mocker, default_conf_usdt, api_mock, exchange="bitget")
# Spot scenario
exchange.cancel_order = MagicMock(return_value={"id": "1234"})
assert exchange.cancel_stoploss_order("1234", "ETH/USDT", {}) == {"id": "1234"}
assert exchange.cancel_order.call_count == 1
exchange.cancel_order.assert_called_once_with("1234", "ETH/USDT", {"stop": True})
# Futures scenario
default_conf_usdt["trading_mode"] = TradingMode.FUTURES
default_conf_usdt["margin_mode"] = MarginMode.ISOLATED
exchange = get_patched_exchange(mocker, default_conf_usdt, api_mock, exchange="bitget")
exchange.cancel_order = MagicMock(return_value={"id": "1234"})
assert exchange.cancel_stoploss_order("1234", "ETH/USDT:USDT", {}) == {"id": "1234"}
assert exchange.cancel_order.call_count == 1
exchange.cancel_order.assert_called_once_with(
"1234", "ETH/USDT:USDT", {"stop": True, "planType": "pos_loss"}
)
exchange.cancel_order = MagicMock(
side_effect=[InvalidOrderException("API error"), {"id": "1234"}]
)
assert exchange.cancel_stoploss_order("1234", "ETH/USDT:USDT", {}) == {"id": "1234"}
assert exchange.cancel_order.call_count == 2
exchange.cancel_order.assert_any_call(
"1234", "ETH/USDT:USDT", {"stop": True, "planType": "pos_loss"}
)
exchange.cancel_order.assert_any_call("1234", "ETH/USDT:USDT", {"stop": True})
def test_bitget_ohlcv_candle_limit(mocker, default_conf_usdt): def test_bitget_ohlcv_candle_limit(mocker, default_conf_usdt):
# This test is also a live test - so we're sure our limits are correct. # This test is also a live test - so we're sure our limits are correct.
api_mock = MagicMock() api_mock = MagicMock()