diff --git a/freqtrade/tests/conftest.py b/freqtrade/tests/conftest.py index 21868abe9..0d8fbd8d9 100644 --- a/freqtrade/tests/conftest.py +++ b/freqtrade/tests/conftest.py @@ -371,15 +371,145 @@ def ticker_history_without_bv(): ] +@pytest.fixture +def tickers(): + return MagicMock(return_value={ + 'ETH/BTC': { + 'symbol': 'ETH/BTC', + 'timestamp': 1522014806207, + 'datetime': '2018-03-25T21:53:26.207Z', + 'high': 0.061697, + 'low': 0.060531, + 'bid': 0.061588, + 'bidVolume': 3.321, + 'ask': 0.061655, + 'askVolume': 0.212, + 'vwap': 0.06105296, + 'open': 0.060809, + 'close': 0.060761, + 'first': None, + 'last': 0.061588, + 'change': 1.281, + 'percentage': None, + 'average': None, + 'baseVolume': 111649.001, + 'quoteVolume': 6816.50176926, + 'info': {} + }, + 'TKN/BTC': { + 'symbol': 'TKN/BTC', + 'timestamp': 1522014806169, + 'datetime': '2018-03-25T21:53:26.169Z', + 'high': 0.01885, + 'low': 0.018497, + 'bid': 0.018799, + 'bidVolume': 8.38, + 'ask': 0.018802, + 'askVolume': 15.0, + 'vwap': 0.01869197, + 'open': 0.018585, + 'close': 0.018573, + 'baseVolume': 81058.66, + 'quoteVolume': 2247.48374509, + }, + 'BLK/BTC': { + 'symbol': 'BLK/BTC', + 'timestamp': 1522014806072, + 'datetime': '2018-03-25T21:53:26.720Z', + 'high': 0.007745, + 'low': 0.007512, + 'bid': 0.007729, + 'bidVolume': 0.01, + 'ask': 0.007743, + 'askVolume': 21.37, + 'vwap': 0.00761466, + 'open': 0.007653, + 'close': 0.007652, + 'first': None, + 'last': 0.007743, + 'change': 1.176, + 'percentage': None, + 'average': None, + 'baseVolume': 295152.26, + 'quoteVolume': 1515.14631229, + 'info': {} + }, + 'ETH/USDT': { + 'symbol': 'ETH/USDT', + 'timestamp': 1522014804118, + 'datetime': '2018-03-25T21:53:24.118Z', + 'high': 530.88, + 'low': 512.0, + 'bid': 529.73, + 'bidVolume': 0.2, + 'ask': 530.21, + 'askVolume': 0.2464, + 'vwap': 521.02438405, + 'open': 527.27, + 'close': 528.42, + 'first': None, + 'last': 530.21, + 'change': 0.558, + 'percentage': None, + 'average': None, + 'baseVolume': 72300.0659, + 'quoteVolume': 37670097.3022171, + 'info': {} + }, + 'TKN/USDT': { + 'symbol': 'TKN/USDT', + 'timestamp': 1522014806198, + 'datetime': '2018-03-25T21:53:26.198Z', + 'high': 8718.0, + 'low': 8365.77, + 'bid': 8603.64, + 'bidVolume': 0.15846, + 'ask': 8603.67, + 'askVolume': 0.069147, + 'vwap': 8536.35621697, + 'open': 8680.0, + 'close': 8680.0, + 'first': None, + 'last': 8603.67, + 'change': -0.879, + 'percentage': None, + 'average': None, + 'baseVolume': 30414.604298, + 'quoteVolume': 259629896.48584127, + 'info': {} + }, + 'BLK/USDT': { + 'symbol': 'BLK/USDT', + 'timestamp': 1522014806145, + 'datetime': '2018-03-25T21:53:26.145Z', + 'high': 66.95, + 'low': 63.38, + 'bid': 66.473, + 'bidVolume': 4.968, + 'ask': 66.54, + 'askVolume': 2.704, + 'vwap': 65.0526901, + 'open': 66.43, + 'close': 66.383, + 'first': None, + 'last': 66.5, + 'change': 0.105, + 'percentage': None, + 'average': None, + 'baseVolume': 294106.204, + 'quoteVolume': 19132399.743954, + 'info': {} + } + }) + + @pytest.fixture def result(): with open('freqtrade/tests/testdata/UNITTEST_BTC-1m.json') as data_file: return Analyze.parse_ticker_dataframe(json.load(data_file)) - # FIX: # Create an fixture/function # that inserts a trade of some type and open-status # return the open-order-id # See tests in rpc/main that could use this - diff --git a/freqtrade/tests/test_acl_pair.py b/freqtrade/tests/test_acl_pair.py index fecf3a9f3..07375260e 100644 --- a/freqtrade/tests/test_acl_pair.py +++ b/freqtrade/tests/test_acl_pair.py @@ -1,6 +1,7 @@ # pragma pylint: disable=missing-docstring,C0103,protected-access import freqtrade.tests.conftest as tt # test tools +from unittest.mock import MagicMock # whitelist, blacklist, filtering, all of that will # eventually become some rules to run on a generic ACL engine @@ -54,13 +55,18 @@ def test_refresh_whitelist(mocker, markets): assert whitelist == refreshedwhitelist -def test_refresh_whitelist_dynamic(mocker, markets): +def test_refresh_whitelist_dynamic(mocker, markets, tickers): conf = whitelist_conf() freqtradebot = tt.get_patched_freqtradebot(mocker, conf) - mocker.patch('freqtrade.freqtradebot.exchange.get_markets', markets) + mocker.patch.multiple( + 'freqtrade.freqtradebot.exchange', + get_markets=markets, + get_tickers=tickers, + exchange_has=MagicMock(return_value=True) + ) # argument: use the whitelist dynamically by exchange-volume - whitelist = ['TKN/BTC', 'ETH/BTC'] + whitelist = ['ETH/BTC', 'TKN/BTC'] refreshedwhitelist = freqtradebot._refresh_whitelist( freqtradebot._gen_pair_whitelist(conf['stake_currency']) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index b7d1a146d..1439ef922 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -201,24 +201,25 @@ def test_throttle_with_assets(mocker, default_conf) -> None: assert result == -1 -def test_gen_pair_whitelist(mocker, default_conf, markets) -> None: +def test_gen_pair_whitelist(mocker, default_conf, tickers) -> None: """ Test _gen_pair_whitelist() method """ freqtrade = get_patched_freqtradebot(mocker, default_conf) - mocker.patch('freqtrade.freqtradebot.exchange.get_markets', markets) + mocker.patch('freqtrade.freqtradebot.exchange.get_tickers', tickers) + mocker.patch('freqtrade.freqtradebot.exchange.exchange_has', MagicMock(return_value=True)) # Test to retrieved BTC sorted on BaseVolume whitelist = freqtrade._gen_pair_whitelist(base_currency='BTC') - assert whitelist == ['ZCL/BTC', 'ZEC/BTC', 'XZC/BTC', 'XWC/BTC'] + assert whitelist == ['ETH/BTC', 'TKN/BTC', 'BLK/BTC'] - # Test to retrieved BTC sorted on OpenBuyOrders - whitelist = freqtrade._gen_pair_whitelist(base_currency='BTC', key='OpenBuyOrders') - assert whitelist == ['XWC/BTC', 'ZCL/BTC', 'ZEC/BTC', 'XZC/BTC'] + # Test to retrieve BTC sorted on bidVolume + whitelist = freqtrade._gen_pair_whitelist(base_currency='BTC', key='bidVolume') + assert whitelist == ['TKN/BTC', 'ETH/BTC', 'BLK/BTC'] # Test with USDT sorted on BaseVolume whitelist = freqtrade._gen_pair_whitelist(base_currency='USDT') - assert whitelist == ['XRP/USDT', 'XVG/USDT', 'XMR/USDT', 'ZEC/USDT'] + assert whitelist == ['TKN/USDT', 'ETH/USDT', 'BLK/USDT'] # Test with ETH (our fixture does not have ETH, but Bittrex returns them) whitelist = freqtrade._gen_pair_whitelist(base_currency='ETH')