Add test for get_analyzed_dataframe
This commit is contained in:
parent
e5f7610b5d
commit
ab9382434f
@ -5,7 +5,7 @@ including ticker and orderbook data, live and historical candle (OHLCV) data
|
|||||||
Common Interface for bot and strategy to access data.
|
Common Interface for bot and strategy to access data.
|
||||||
"""
|
"""
|
||||||
import logging
|
import logging
|
||||||
from datetime import datetime
|
from datetime import datetime, timezone
|
||||||
from typing import Any, Dict, List, Optional, Tuple
|
from typing import Any, Dict, List, Optional, Tuple
|
||||||
|
|
||||||
from arrow import Arrow
|
from arrow import Arrow
|
||||||
@ -107,14 +107,14 @@ class DataProvider:
|
|||||||
:param pair: pair to get the data for
|
:param pair: pair to get the data for
|
||||||
:param timeframe: timeframe to get data for
|
:param timeframe: timeframe to get data for
|
||||||
:return: Tuple of (Analyzed Dataframe, lastrefreshed) for the requested pair / timeframe
|
:return: Tuple of (Analyzed Dataframe, lastrefreshed) for the requested pair / timeframe
|
||||||
combination
|
combination.
|
||||||
|
Returns empty dataframe and Epoch 0 (1970-01-01) if no dataframe was cached.
|
||||||
"""
|
"""
|
||||||
# TODO: check updated time and don't return outdated data.
|
|
||||||
if (pair, timeframe) in self.__cached_pairs:
|
if (pair, timeframe) in self.__cached_pairs:
|
||||||
return self.__cached_pairs[(pair, timeframe)]
|
return self.__cached_pairs[(pair, timeframe)]
|
||||||
else:
|
else:
|
||||||
# TODO: this is most likely wrong...
|
|
||||||
raise ValueError(f"No analyzed dataframe found for ({pair}, {timeframe})")
|
return (DataFrame(), datetime.fromtimestamp(0, tz=timezone.utc))
|
||||||
|
|
||||||
def market(self, pair: str) -> Optional[Dict[str, Any]]:
|
def market(self, pair: str) -> Optional[Dict[str, Any]]:
|
||||||
"""
|
"""
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
|
from datetime import datetime, timezone
|
||||||
from unittest.mock import MagicMock
|
from unittest.mock import MagicMock
|
||||||
|
|
||||||
from pandas import DataFrame
|
|
||||||
import pytest
|
import pytest
|
||||||
|
from pandas import DataFrame
|
||||||
|
|
||||||
from freqtrade.data.dataprovider import DataProvider
|
from freqtrade.data.dataprovider import DataProvider
|
||||||
from freqtrade.pairlist.pairlistmanager import PairListManager
|
|
||||||
from freqtrade.exceptions import DependencyException, OperationalException
|
from freqtrade.exceptions import DependencyException, OperationalException
|
||||||
|
from freqtrade.pairlist.pairlistmanager import PairListManager
|
||||||
from freqtrade.state import RunMode
|
from freqtrade.state import RunMode
|
||||||
from tests.conftest import get_patched_exchange
|
from tests.conftest import get_patched_exchange
|
||||||
|
|
||||||
@ -194,3 +195,29 @@ def test_current_whitelist(mocker, default_conf, tickers):
|
|||||||
with pytest.raises(OperationalException):
|
with pytest.raises(OperationalException):
|
||||||
dp = DataProvider(default_conf, exchange)
|
dp = DataProvider(default_conf, exchange)
|
||||||
dp.current_whitelist()
|
dp.current_whitelist()
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_analyzed_dataframe(mocker, default_conf, ohlcv_history):
|
||||||
|
|
||||||
|
default_conf["runmode"] = RunMode.DRY_RUN
|
||||||
|
|
||||||
|
timeframe = default_conf["timeframe"]
|
||||||
|
exchange = get_patched_exchange(mocker, default_conf)
|
||||||
|
|
||||||
|
dp = DataProvider(default_conf, exchange)
|
||||||
|
dp._set_cached_df("XRP/BTC", timeframe, ohlcv_history)
|
||||||
|
dp._set_cached_df("UNITTEST/BTC", timeframe, ohlcv_history)
|
||||||
|
|
||||||
|
assert dp.runmode == RunMode.DRY_RUN
|
||||||
|
dataframe, time = dp.get_analyzed_dataframe("UNITTEST/BTC", timeframe)
|
||||||
|
assert ohlcv_history.equals(dataframe)
|
||||||
|
assert isinstance(time, datetime)
|
||||||
|
|
||||||
|
dataframe, time = dp.get_analyzed_dataframe("XRP/BTC", timeframe)
|
||||||
|
assert ohlcv_history.equals(dataframe)
|
||||||
|
assert isinstance(time, datetime)
|
||||||
|
|
||||||
|
dataframe, time = dp.get_analyzed_dataframe("NOTHING/BTC", timeframe)
|
||||||
|
assert dataframe.empty
|
||||||
|
assert isinstance(time, datetime)
|
||||||
|
assert time == datetime(1970, 1, 1, tzinfo=timezone.utc)
|
||||||
|
Loading…
Reference in New Issue
Block a user