Skip to content

Commit 7e178cb

Browse files
committed
add test
1 parent e17936c commit 7e178cb

File tree

1 file changed

+44
-3
lines changed

1 file changed

+44
-3
lines changed

tests/exchange/test_bybit.py

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1+
from copy import deepcopy
12
from datetime import UTC, datetime, timedelta
2-
from unittest.mock import MagicMock
3+
from unittest.mock import MagicMock, PropertyMock
34

45
import pytest
56

6-
from freqtrade.enums.marginmode import MarginMode
7-
from freqtrade.enums.tradingmode import TradingMode
7+
from freqtrade.enums import MarginMode, RunMode, TradingMode
8+
from freqtrade.util.datetime_helpers import dt_utc
89
from tests.conftest import EXMS, get_mock_coro, get_patched_exchange, log_has
910
from tests.exchange.test_exchange import ccxt_exceptionhandlers
1011

@@ -214,3 +215,43 @@ def test_bybit__order_needs_price(
214215
exchange.unified_account = uta
215216

216217
assert exchange._order_needs_price(side, order_type) == expected
218+
219+
220+
def test_check_delisting_time_bybit(default_conf_usdt, mocker):
221+
exchange = get_patched_exchange(mocker, default_conf_usdt, exchange="bybit")
222+
exchange._config["runmode"] = RunMode.BACKTEST
223+
delist_fut_mock = MagicMock(return_value=None)
224+
mocker.patch.object(exchange, "_check_delisting_futures", delist_fut_mock)
225+
226+
# Invalid run mode
227+
resp = exchange.check_delisting_time("BTC/USDT:USDT")
228+
assert resp is None
229+
assert delist_fut_mock.call_count == 0
230+
231+
# Delist spot called
232+
exchange._config["runmode"] = RunMode.DRY_RUN
233+
resp1 = exchange.check_delisting_time("BTC/USDT")
234+
assert resp1 is None
235+
assert delist_fut_mock.call_count == 0
236+
237+
# Delist futures called
238+
exchange.trading_mode = TradingMode.FUTURES
239+
resp1 = exchange.check_delisting_time("BTC/USDT:USDT")
240+
assert resp1 is None
241+
assert delist_fut_mock.call_count == 1
242+
243+
244+
def test__check_delisting_futures_bybit(default_conf_usdt, mocker, markets):
245+
markets["BTC/USDT:USDT"] = deepcopy(markets["SOL/BUSD:BUSD"])
246+
markets["BTC/USDT:USDT"]["info"]["deliveryTime"] = "0"
247+
markets["SOL/BUSD:BUSD"]["info"]["deliveryTime"] = "0"
248+
markets["ADA/USDT:USDT"]["info"]["deliveryTime"] = "1760745600000" # 2025-10-18
249+
exchange = get_patched_exchange(mocker, default_conf_usdt, exchange="bybit")
250+
mocker.patch(f"{EXMS}.markets", PropertyMock(return_value=markets))
251+
252+
resp_sol = exchange._check_delisting_futures("SOL/BUSD:BUSD")
253+
# SOL has no delisting date
254+
assert resp_sol is None
255+
# Actually has a delisting date
256+
resp_ada = exchange._check_delisting_futures("ADA/USDT:USDT")
257+
assert resp_ada == dt_utc(2025, 10, 18)

0 commit comments

Comments
 (0)