ruff format: rpc tests

This commit is contained in:
Matthias
2024-05-12 15:44:42 +02:00
parent 8c7d80b78e
commit 1cbd49fd4e
7 changed files with 3700 additions and 3248 deletions
+55 -62
View File
@@ -13,10 +13,10 @@ from tests.conftest import log_has, log_has_re
def test_fiat_convert_is_supported(mocker):
fiat_convert = CryptoToFiatConverter()
assert fiat_convert._is_supported_fiat(fiat='USD') is True
assert fiat_convert._is_supported_fiat(fiat='usd') is True
assert fiat_convert._is_supported_fiat(fiat='abc') is False
assert fiat_convert._is_supported_fiat(fiat='ABC') is False
assert fiat_convert._is_supported_fiat(fiat="USD") is True
assert fiat_convert._is_supported_fiat(fiat="usd") is True
assert fiat_convert._is_supported_fiat(fiat="abc") is False
assert fiat_convert._is_supported_fiat(fiat="ABC") is False
def test_fiat_convert_find_price(mocker):
@@ -24,69 +24,72 @@ def test_fiat_convert_find_price(mocker):
fiat_convert._coinlistings = {}
fiat_convert._backoff = 0
mocker.patch('freqtrade.rpc.fiat_convert.CryptoToFiatConverter._load_cryptomap',
return_value=None)
assert fiat_convert.get_price(crypto_symbol='BTC', fiat_symbol='EUR') == 0.0
mocker.patch(
"freqtrade.rpc.fiat_convert.CryptoToFiatConverter._load_cryptomap", return_value=None
)
assert fiat_convert.get_price(crypto_symbol="BTC", fiat_symbol="EUR") == 0.0
with pytest.raises(ValueError, match=r'The fiat ABC is not supported.'):
fiat_convert._find_price(crypto_symbol='BTC', fiat_symbol='ABC')
with pytest.raises(ValueError, match=r"The fiat ABC is not supported."):
fiat_convert._find_price(crypto_symbol="BTC", fiat_symbol="ABC")
assert fiat_convert.get_price(crypto_symbol='XRP', fiat_symbol='USD') == 0.0
assert fiat_convert.get_price(crypto_symbol="XRP", fiat_symbol="USD") == 0.0
mocker.patch('freqtrade.rpc.fiat_convert.CryptoToFiatConverter._find_price',
return_value=12345.0)
assert fiat_convert.get_price(crypto_symbol='BTC', fiat_symbol='USD') == 12345.0
assert fiat_convert.get_price(crypto_symbol='btc', fiat_symbol='usd') == 12345.0
mocker.patch(
"freqtrade.rpc.fiat_convert.CryptoToFiatConverter._find_price", return_value=12345.0
)
assert fiat_convert.get_price(crypto_symbol="BTC", fiat_symbol="USD") == 12345.0
assert fiat_convert.get_price(crypto_symbol="btc", fiat_symbol="usd") == 12345.0
mocker.patch('freqtrade.rpc.fiat_convert.CryptoToFiatConverter._find_price',
return_value=13000.2)
assert fiat_convert.get_price(crypto_symbol='BTC', fiat_symbol='EUR') == 13000.2
mocker.patch(
"freqtrade.rpc.fiat_convert.CryptoToFiatConverter._find_price", return_value=13000.2
)
assert fiat_convert.get_price(crypto_symbol="BTC", fiat_symbol="EUR") == 13000.2
def test_fiat_convert_unsupported_crypto(mocker, caplog):
mocker.patch('freqtrade.rpc.fiat_convert.CryptoToFiatConverter._coinlistings', return_value=[])
mocker.patch("freqtrade.rpc.fiat_convert.CryptoToFiatConverter._coinlistings", return_value=[])
fiat_convert = CryptoToFiatConverter()
assert fiat_convert._find_price(crypto_symbol='CRYPTO_123', fiat_symbol='EUR') == 0.0
assert log_has('unsupported crypto-symbol CRYPTO_123 - returning 0.0', caplog)
assert fiat_convert._find_price(crypto_symbol="CRYPTO_123", fiat_symbol="EUR") == 0.0
assert log_has("unsupported crypto-symbol CRYPTO_123 - returning 0.0", caplog)
def test_fiat_convert_get_price(mocker):
find_price = mocker.patch('freqtrade.rpc.fiat_convert.CryptoToFiatConverter._find_price',
return_value=28000.0)
find_price = mocker.patch(
"freqtrade.rpc.fiat_convert.CryptoToFiatConverter._find_price", return_value=28000.0
)
fiat_convert = CryptoToFiatConverter()
with pytest.raises(ValueError, match=r'The fiat us dollar is not supported.'):
fiat_convert.get_price(crypto_symbol='btc', fiat_symbol='US Dollar')
with pytest.raises(ValueError, match=r"The fiat us dollar is not supported."):
fiat_convert.get_price(crypto_symbol="btc", fiat_symbol="US Dollar")
# Check the value return by the method
pair_len = len(fiat_convert._pair_price)
assert pair_len == 0
assert fiat_convert.get_price(crypto_symbol='btc', fiat_symbol='usd') == 28000.0
assert fiat_convert._pair_price['btc/usd'] == 28000.0
assert fiat_convert.get_price(crypto_symbol="btc", fiat_symbol="usd") == 28000.0
assert fiat_convert._pair_price["btc/usd"] == 28000.0
assert len(fiat_convert._pair_price) == 1
assert find_price.call_count == 1
# Verify the cached is used
fiat_convert._pair_price['btc/usd'] = 9867.543
assert fiat_convert.get_price(crypto_symbol='btc', fiat_symbol='usd') == 9867.543
fiat_convert._pair_price["btc/usd"] = 9867.543
assert fiat_convert.get_price(crypto_symbol="btc", fiat_symbol="usd") == 9867.543
assert find_price.call_count == 1
def test_fiat_convert_same_currencies(mocker):
fiat_convert = CryptoToFiatConverter()
assert fiat_convert.get_price(crypto_symbol='USD', fiat_symbol='USD') == 1.0
assert fiat_convert.get_price(crypto_symbol="USD", fiat_symbol="USD") == 1.0
def test_fiat_convert_two_FIAT(mocker):
fiat_convert = CryptoToFiatConverter()
assert fiat_convert.get_price(crypto_symbol='USD', fiat_symbol='EUR') == 0.0
assert fiat_convert.get_price(crypto_symbol="USD", fiat_symbol="EUR") == 0.0
def test_loadcryptomap(mocker):
fiat_convert = CryptoToFiatConverter()
assert len(fiat_convert._coinlistings) == 2
@@ -97,7 +100,7 @@ def test_fiat_init_network_exception(mocker):
# Because CryptoToFiatConverter is a Singleton we reset the listings
listmock = MagicMock(side_effect=RequestException)
mocker.patch.multiple(
'freqtrade.rpc.fiat_convert.CoinGeckoAPI',
"freqtrade.rpc.fiat_convert.CoinGeckoAPI",
get_coins_list=listmock,
)
# with pytest.raises(RequestEsxception):
@@ -117,7 +120,7 @@ def test_fiat_convert_without_network(mocker):
CryptoToFiatConverter._coingecko = None
assert fiat_convert._coingecko is None
assert fiat_convert._find_price(crypto_symbol='btc', fiat_symbol='usd') == 0.0
assert fiat_convert._find_price(crypto_symbol="btc", fiat_symbol="usd") == 0.0
CryptoToFiatConverter._coingecko = cmc_temp
@@ -126,7 +129,7 @@ def test_fiat_too_many_requests_response(mocker, caplog):
req_exception = "429 Too Many Requests"
listmock = MagicMock(return_value="{}", side_effect=RequestException(req_exception))
mocker.patch.multiple(
'freqtrade.rpc.fiat_convert.CoinGeckoAPI',
"freqtrade.rpc.fiat_convert.CoinGeckoAPI",
get_coins_list=listmock,
)
# with pytest.raises(RequestEsxception):
@@ -137,33 +140,32 @@ def test_fiat_too_many_requests_response(mocker, caplog):
assert len(fiat_convert._coinlistings) == 0
assert fiat_convert._backoff > datetime.datetime.now().timestamp()
assert log_has(
'Too many requests for CoinGecko API, backing off and trying again later.',
caplog
"Too many requests for CoinGecko API, backing off and trying again later.", caplog
)
def test_fiat_multiple_coins(mocker, caplog):
fiat_convert = CryptoToFiatConverter()
fiat_convert._coinlistings = [
{'id': 'helium', 'symbol': 'hnt', 'name': 'Helium'},
{'id': 'hymnode', 'symbol': 'hnt', 'name': 'Hymnode'},
{'id': 'bitcoin', 'symbol': 'btc', 'name': 'Bitcoin'},
{'id': 'ethereum', 'symbol': 'eth', 'name': 'Ethereum'},
{'id': 'ethereum-wormhole', 'symbol': 'eth', 'name': 'Ethereum Wormhole'},
{"id": "helium", "symbol": "hnt", "name": "Helium"},
{"id": "hymnode", "symbol": "hnt", "name": "Hymnode"},
{"id": "bitcoin", "symbol": "btc", "name": "Bitcoin"},
{"id": "ethereum", "symbol": "eth", "name": "Ethereum"},
{"id": "ethereum-wormhole", "symbol": "eth", "name": "Ethereum Wormhole"},
]
assert fiat_convert._get_gecko_id('btc') == 'bitcoin'
assert fiat_convert._get_gecko_id('hnt') is None
assert fiat_convert._get_gecko_id('eth') == 'ethereum'
assert fiat_convert._get_gecko_id("btc") == "bitcoin"
assert fiat_convert._get_gecko_id("hnt") is None
assert fiat_convert._get_gecko_id("eth") == "ethereum"
assert log_has('Found multiple mappings in CoinGecko for hnt.', caplog)
assert log_has("Found multiple mappings in CoinGecko for hnt.", caplog)
def test_fiat_invalid_response(mocker, caplog):
# Because CryptoToFiatConverter is a Singleton we reset the listings
listmock = MagicMock(return_value=None)
mocker.patch.multiple(
'freqtrade.rpc.fiat_convert.CoinGeckoAPI',
"freqtrade.rpc.fiat_convert.CoinGeckoAPI",
get_coins_list=listmock,
)
# with pytest.raises(RequestEsxception):
@@ -172,31 +174,22 @@ def test_fiat_invalid_response(mocker, caplog):
fiat_convert._load_cryptomap()
assert len(fiat_convert._coinlistings) == 0
assert log_has_re('Could not load FIAT Cryptocurrency map for the following problem: .*',
caplog)
assert log_has_re(
"Could not load FIAT Cryptocurrency map for the following problem: .*", caplog
)
def test_convert_amount(mocker):
mocker.patch('freqtrade.rpc.fiat_convert.CryptoToFiatConverter.get_price', return_value=12345.0)
mocker.patch("freqtrade.rpc.fiat_convert.CryptoToFiatConverter.get_price", return_value=12345.0)
fiat_convert = CryptoToFiatConverter()
result = fiat_convert.convert_amount(
crypto_amount=1.23,
crypto_symbol="BTC",
fiat_symbol="USD"
)
result = fiat_convert.convert_amount(crypto_amount=1.23, crypto_symbol="BTC", fiat_symbol="USD")
assert result == 15184.35
result = fiat_convert.convert_amount(
crypto_amount=1.23,
crypto_symbol="BTC",
fiat_symbol="BTC"
)
result = fiat_convert.convert_amount(crypto_amount=1.23, crypto_symbol="BTC", fiat_symbol="BTC")
assert result == 1.23
result = fiat_convert.convert_amount(
crypto_amount="1.23",
crypto_symbol="BTC",
fiat_symbol="BTC"
crypto_amount="1.23", crypto_symbol="BTC", fiat_symbol="BTC"
)
assert result == 1.23