From e74ed0ba7b7ba4f9f8f6cd8f456d1ccc35901614 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 30 Apr 2020 20:05:27 +0200 Subject: [PATCH] Add tests for fee extraction methods --- freqtrade/exchange/exchange.py | 2 ++ tests/exchange/test_exchange.py | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 22d477e6c..bd6d617c0 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -1087,6 +1087,8 @@ class Exchange: @staticmethod def extract_cost_curr_rate(order: Dict) -> Tuple[float, str, float]: """ + Extract tuple of cost, currency, rate. + Requires order_has_fee to run first! :param order: Order or trade (one trade) dict :return: Tuple with cost, currency, rate of the given fee dict """ diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 3c92612a0..f8c572dc8 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -2145,3 +2145,23 @@ def test_symbol_is_pair(market_symbol, base_currency, quote_currency, expected_r ]) def test_market_is_active(market, expected_result) -> None: assert market_is_active(market) == expected_result + + +@pytest.mark.parametrize("order,expected", [ + ([{'fee'}], False), + ({'fee': None}, False), + ({'fee': {'currency': 'ETH/BTC'}}, False), + ({'fee': {'currency': 'ETH/BTC', 'cost': None}}, False), + ({'fee': {'currency': 'ETH/BTC', 'cost': 0.01}}, True), +]) +def test_order_has_fee(order, expected) -> None: + assert Exchange.order_has_fee(order) == expected + + +@pytest.mark.parametrize("order,expected", [ + ({'fee': {'currency': 'ETH/BTC', 'cost': 0.43}}, (0.43, 'ETH/BTC', None)), + ({'fee': {'currency': 'ETH/USDT', 'cost': 0.01}}, (0.01, 'ETH/USDT', None)), + ({'fee': {'currency': 'ETH/USDT', 'cost': 0.34, 'rate': 0.01}}, (0.34, 'ETH/USDT', 0.01)), +]) +def test_extract_cost_curr_rate(order, expected) -> None: + assert Exchange.extract_cost_curr_rate(order) == expected