From 6e95b6667d69a861d631de20781829abb8987531 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 19 Oct 2022 11:57:05 +0200 Subject: [PATCH] Modify test ensuring we always have a 0 index --- tests/exchange/test_exchange.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index a48cb05e0..25ba294a3 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -2196,6 +2196,9 @@ def test_refresh_latest_ohlcv_cache(mocker, default_conf, candle_type, time_mach time_machine.move_to(start + timedelta(hours=99, minutes=30)) exchange = get_patched_exchange(mocker, default_conf) + mocker.patch("freqtrade.exchange.Exchange.ohlcv_candle_limit", return_value=100) + assert exchange._startup_candle_count == 0 + exchange._api_async.fetch_ohlcv = get_mock_coro(ohlcv) pair1 = ('IOTA/ETH', '1h', candle_type) pair2 = ('XRP/ETH', '1h', candle_type) @@ -2236,30 +2239,36 @@ def test_refresh_latest_ohlcv_cache(mocker, default_conf, candle_type, time_mach assert len(res) == 2 assert len(res[pair1]) == 99 assert len(res[pair2]) == 99 + assert res[pair2].at[0, 'open'] assert exchange._pairs_last_refresh_time[pair1] == ohlcv[-1][0] // 1000 refresh_pior = exchange._pairs_last_refresh_time[pair1] - # New candle on exchange - only return 50 candles (but one candle further) - new_startdate = (start + timedelta(hours=51)).strftime('%Y-%m-%d %H:%M') - ohlcv = generate_test_data_raw('1h', 50, new_startdate) + # New candle on exchange - return 100 candles - but skip one candle so we actually get 2 candles + # in one go + new_startdate = (start + timedelta(hours=2)).strftime('%Y-%m-%d %H:%M') + # mocker.patch("freqtrade.exchange.Exchange.ohlcv_candle_limit", return_value=100) + ohlcv = generate_test_data_raw('1h', 100, new_startdate) exchange._api_async.fetch_ohlcv = get_mock_coro(ohlcv) res = exchange.refresh_latest_ohlcv(pairs) assert exchange._api_async.fetch_ohlcv.call_count == 2 assert len(res) == 2 assert len(res[pair1]) == 100 assert len(res[pair2]) == 100 + # Verify index starts at 0 + assert res[pair2].at[0, 'open'] assert refresh_pior != exchange._pairs_last_refresh_time[pair1] assert exchange._pairs_last_refresh_time[pair1] == ohlcv[-1][0] // 1000 assert exchange._pairs_last_refresh_time[pair2] == ohlcv[-1][0] // 1000 exchange._api_async.fetch_ohlcv.reset_mock() - # Retry same call - no action. + # Retry same call - from cache res = exchange.refresh_latest_ohlcv(pairs) assert exchange._api_async.fetch_ohlcv.call_count == 0 assert len(res) == 2 assert len(res[pair1]) == 100 assert len(res[pair2]) == 100 + assert res[pair2].at[0, 'open'] # Move to distant future (so a 1 call would cause a hole in the data) time_machine.move_to(start + timedelta(hours=2000)) @@ -2272,6 +2281,7 @@ def test_refresh_latest_ohlcv_cache(mocker, default_conf, candle_type, time_mach # Cache eviction - new data. assert len(res[pair1]) == 99 assert len(res[pair2]) == 99 + assert res[pair2].at[0, 'open'] @pytest.mark.asyncio