From 4017b010f499ecab5757d38be77201902c9507fc Mon Sep 17 00:00:00 2001 From: Stefano Date: Thu, 20 Nov 2025 09:36:17 +0900 Subject: [PATCH] add test --- tests/exchange/test_bitget.py | 45 +++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/tests/exchange/test_bitget.py b/tests/exchange/test_bitget.py index ca32ba536..b4dafb0ae 100644 --- a/tests/exchange/test_bitget.py +++ b/tests/exchange/test_bitget.py @@ -1,12 +1,13 @@ +from copy import deepcopy from datetime import timedelta from unittest.mock import MagicMock, PropertyMock import pytest -from freqtrade.enums import CandleType, MarginMode, TradingMode +from freqtrade.enums import CandleType, MarginMode, RunMode, TradingMode from freqtrade.exceptions import OperationalException, RetryableOrderError from freqtrade.exchange.common import API_RETRY_COUNT -from freqtrade.util import dt_now, dt_ts +from freqtrade.util import dt_now, dt_ts, dt_utc from tests.conftest import EXMS, get_patched_exchange from tests.exchange.test_exchange import ccxt_exceptionhandlers @@ -193,3 +194,43 @@ def test__lev_prep_bitget(default_conf, mocker): assert api_mock.set_margin_mode.call_count == 0 assert api_mock.set_leverage.call_count == 1 api_mock.set_leverage.assert_called_with(symbol="BTC/USDC:USDC", leverage=19.99) + + +def test_check_delisting_time_bitget(default_conf_usdt, mocker): + exchange = get_patched_exchange(mocker, default_conf_usdt, exchange="bitget") + exchange._config["runmode"] = RunMode.BACKTEST + delist_fut_mock = MagicMock(return_value=None) + mocker.patch.object(exchange, "_check_delisting_futures", delist_fut_mock) + + # Invalid run mode + resp = exchange.check_delisting_time("BTC/USDT") + assert resp is None + assert delist_fut_mock.call_count == 0 + + # Delist spot called + exchange._config["runmode"] = RunMode.DRY_RUN + resp1 = exchange.check_delisting_time("BTC/USDT") + assert resp1 is None + assert delist_fut_mock.call_count == 0 + + # Delist futures called + exchange.trading_mode = TradingMode.FUTURES + resp1 = exchange.check_delisting_time("BTC/USDT:USDT") + assert resp1 is None + assert delist_fut_mock.call_count == 1 + + +def test__check_delisting_futures_bitget(default_conf_usdt, mocker, markets): + markets["BTC/USDT:USDT"] = deepcopy(markets["SOL/BUSD:BUSD"]) + markets["BTC/USDT:USDT"]["info"]["limitOpenTime"] = "-1" + markets["SOL/BUSD:BUSD"]["info"]["limitOpenTime"] = "-1" + markets["ADA/USDT:USDT"]["info"]["limitOpenTime"] = "1760745600000" # 2025-10-18 + exchange = get_patched_exchange(mocker, default_conf_usdt, exchange="bitget") + mocker.patch(f"{EXMS}.markets", PropertyMock(return_value=markets)) + + resp_sol = exchange._check_delisting_futures("SOL/BUSD:BUSD") + # No delisting date + assert resp_sol is None + # Has a delisting date + resp_ada = exchange._check_delisting_futures("ADA/USDT:USDT") + assert resp_ada == dt_utc(2025, 10, 18)