Update tests related to whitelist
This commit is contained in:
		| @@ -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 | @pytest.fixture | ||||||
| def result(): | def result(): | ||||||
|     with open('freqtrade/tests/testdata/UNITTEST_BTC-1m.json') as data_file: |     with open('freqtrade/tests/testdata/UNITTEST_BTC-1m.json') as data_file: | ||||||
|         return Analyze.parse_ticker_dataframe(json.load(data_file)) |         return Analyze.parse_ticker_dataframe(json.load(data_file)) | ||||||
|  |  | ||||||
|  |  | ||||||
| # FIX: | # FIX: | ||||||
| # Create an fixture/function | # Create an fixture/function | ||||||
| # that inserts a trade of some type and open-status | # that inserts a trade of some type and open-status | ||||||
| # return the open-order-id | # return the open-order-id | ||||||
| # See tests in rpc/main that could use this | # See tests in rpc/main that could use this | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,6 +1,7 @@ | |||||||
| # pragma pylint: disable=missing-docstring,C0103,protected-access | # pragma pylint: disable=missing-docstring,C0103,protected-access | ||||||
|  |  | ||||||
| import freqtrade.tests.conftest as tt  # test tools | import freqtrade.tests.conftest as tt  # test tools | ||||||
|  | from unittest.mock import MagicMock | ||||||
|  |  | ||||||
| # whitelist, blacklist, filtering, all of that will | # whitelist, blacklist, filtering, all of that will | ||||||
| # eventually become some rules to run on a generic ACL engine | # eventually become some rules to run on a generic ACL engine | ||||||
| @@ -54,13 +55,18 @@ def test_refresh_whitelist(mocker, markets): | |||||||
|     assert whitelist == refreshedwhitelist |     assert whitelist == refreshedwhitelist | ||||||
|  |  | ||||||
|  |  | ||||||
| def test_refresh_whitelist_dynamic(mocker, markets): | def test_refresh_whitelist_dynamic(mocker, markets, tickers): | ||||||
|     conf = whitelist_conf() |     conf = whitelist_conf() | ||||||
|     freqtradebot = tt.get_patched_freqtradebot(mocker, 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 |     # argument: use the whitelist dynamically by exchange-volume | ||||||
|     whitelist = ['TKN/BTC', 'ETH/BTC'] |     whitelist = ['ETH/BTC', 'TKN/BTC'] | ||||||
|  |  | ||||||
|     refreshedwhitelist = freqtradebot._refresh_whitelist( |     refreshedwhitelist = freqtradebot._refresh_whitelist( | ||||||
|         freqtradebot._gen_pair_whitelist(conf['stake_currency']) |         freqtradebot._gen_pair_whitelist(conf['stake_currency']) | ||||||
|   | |||||||
| @@ -201,24 +201,25 @@ def test_throttle_with_assets(mocker, default_conf) -> None: | |||||||
|     assert result == -1 |     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 |     Test _gen_pair_whitelist() method | ||||||
|     """ |     """ | ||||||
|     freqtrade = get_patched_freqtradebot(mocker, default_conf) |     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 |     # Test to retrieved BTC sorted on BaseVolume | ||||||
|     whitelist = freqtrade._gen_pair_whitelist(base_currency='BTC') |     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 |     # Test to retrieve BTC sorted on bidVolume | ||||||
|     whitelist = freqtrade._gen_pair_whitelist(base_currency='BTC', key='OpenBuyOrders') |     whitelist = freqtrade._gen_pair_whitelist(base_currency='BTC', key='bidVolume') | ||||||
|     assert whitelist == ['XWC/BTC', 'ZCL/BTC', 'ZEC/BTC', 'XZC/BTC'] |     assert whitelist == ['TKN/BTC', 'ETH/BTC', 'BLK/BTC'] | ||||||
|  |  | ||||||
|     # Test with USDT sorted on BaseVolume |     # Test with USDT sorted on BaseVolume | ||||||
|     whitelist = freqtrade._gen_pair_whitelist(base_currency='USDT') |     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) |     # Test with ETH (our fixture does not have ETH, but Bittrex returns them) | ||||||
|     whitelist = freqtrade._gen_pair_whitelist(base_currency='ETH') |     whitelist = freqtrade._gen_pair_whitelist(base_currency='ETH') | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user