def test_fiat_convert_get_price(mocker):
    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')

    # Check the value return by the method
    pair_len = len(fiat_convert._pairs)
    assert pair_len == 0
    assert fiat_convert.get_price(crypto_symbol='btc',
                                  fiat_symbol='usd') == 28000.0
    assert fiat_convert._pairs[0].crypto_symbol == 'btc'
    assert fiat_convert._pairs[0].fiat_symbol == 'usd'
    assert fiat_convert._pairs[0].price == 28000.0
    assert fiat_convert._pairs[0]._expiration != 0
    assert len(fiat_convert._pairs) == 1

    # Verify the cached is used
    fiat_convert._pairs[0].price = 9867.543
    expiration = fiat_convert._pairs[0]._expiration
    assert fiat_convert.get_price(crypto_symbol='btc',
                                  fiat_symbol='usd') == 9867.543
    assert fiat_convert._pairs[0]._expiration == expiration

    # Verify the cache expiration
    expiration = time.time() - 2 * 60 * 60
    fiat_convert._pairs[0]._expiration = expiration
    assert fiat_convert.get_price(crypto_symbol='btc',
                                  fiat_symbol='usd') == 28000.0
    assert fiat_convert._pairs[0]._expiration is not expiration
Example #2
0
def test_fiat_convert_get_price(mocker):
    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')

    # 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 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
    assert find_price.call_count == 1
Example #3
0
def test_fiat_convert_find_price(mocker):
    fiat_convert = CryptoToFiatConverter()

    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

    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

    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
Example #4
0
def test_fiat_convert_find_price(mocker):
    patch_coinmarketcap(mocker)

    fiat_convert = CryptoToFiatConverter()

    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

    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
Example #5
0
def test_fiat_convert_two_FIAT(mocker):
    patch_coinmarketcap(mocker)
    fiat_convert = CryptoToFiatConverter()

    assert fiat_convert.get_price(crypto_symbol='USD',
                                  fiat_symbol='EUR') == 0.0
Example #6
0
def test_fiat_convert_same_currencies(mocker):
    patch_coinmarketcap(mocker)
    fiat_convert = CryptoToFiatConverter()

    assert fiat_convert.get_price(crypto_symbol='USD',
                                  fiat_symbol='USD') == 1.0