Skip to content

Commit 6b96d4d

Browse files
committed
test: improve exchange_ws tests
1 parent 98e49ab commit 6b96d4d

File tree

1 file changed

+34
-7
lines changed

1 file changed

+34
-7
lines changed

tests/exchange/test_exchange_ws.py

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,19 @@ def thread_fuck():
4242
pass
4343

4444

45-
async def test_exchangews_ohlcv(mocker):
45+
async def test_exchangews_ohlcv(mocker, time_machine):
4646
config = MagicMock()
4747
ccxt_object = MagicMock()
48-
ccxt_object.watch_ohlcv = AsyncMock()
48+
49+
async def sleeper(*args, **kwargs):
50+
# pass
51+
await asyncio.sleep(1)
52+
return MagicMock()
53+
54+
ccxt_object.watch_ohlcv = AsyncMock(side_effect=sleeper)
4955
ccxt_object.close = AsyncMock()
56+
time_machine.move_to("2024-11-01 01:00:00 +00:00")
57+
5058
mocker.patch("freqtrade.exchange.exchange_ws.ExchangeWS._start_forever", MagicMock())
5159

5260
exchange_ws = ExchangeWS(config, ccxt_object)
@@ -56,14 +64,33 @@ async def test_exchangews_ohlcv(mocker):
5664
assert exchange_ws._klines_scheduled == set()
5765

5866
exchange_ws.schedule_ohlcv("ETH/BTC", "1m", CandleType.SPOT)
67+
exchange_ws.schedule_ohlcv("XRP/BTC", "1m", CandleType.SPOT)
5968
await asyncio.sleep(0.5)
6069

61-
assert exchange_ws._klines_watching == {("ETH/BTC", "1m", CandleType.SPOT)}
62-
assert exchange_ws._klines_scheduled == {("ETH/BTC", "1m", CandleType.SPOT)}
70+
assert exchange_ws._klines_watching == {
71+
("ETH/BTC", "1m", CandleType.SPOT),
72+
("XRP/BTC", "1m", CandleType.SPOT),
73+
}
74+
assert exchange_ws._klines_scheduled == {
75+
("ETH/BTC", "1m", CandleType.SPOT),
76+
("XRP/BTC", "1m", CandleType.SPOT),
77+
}
6378
await asyncio.sleep(0.1)
64-
assert ccxt_object.watch_ohlcv.call_count == 1
65-
except Exception as e:
66-
print(e)
79+
assert ccxt_object.watch_ohlcv.call_count == 2
80+
ccxt_object.watch_ohlcv.reset_mock()
81+
82+
time_machine.shift(timedelta(minutes=5))
83+
await asyncio.sleep(0.1)
84+
exchange_ws.schedule_ohlcv("ETH/BTC", "1m", CandleType.SPOT)
85+
# XRP/BTC should be cleaned up.
86+
assert exchange_ws._klines_watching == {
87+
("ETH/BTC", "1m", CandleType.SPOT),
88+
}
89+
assert exchange_ws._klines_scheduled == {
90+
("ETH/BTC", "1m", CandleType.SPOT),
91+
("XRP/BTC", "1m", CandleType.SPOT),
92+
}
93+
6794
finally:
6895
# Cleanup
6996
exchange_ws.cleanup()

0 commit comments

Comments
 (0)