From a1744619529452d0af6a69abf13fbd20b65d8af7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 2 Jan 2026 10:03:32 +0100 Subject: [PATCH] test: add test for exchange_has validation --- tests/exchange/test_exchange_utils.py | 41 +++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/tests/exchange/test_exchange_utils.py b/tests/exchange/test_exchange_utils.py index 47ad7cccb..d0d35a9dd 100644 --- a/tests/exchange/test_exchange_utils.py +++ b/tests/exchange/test_exchange_utils.py @@ -1,6 +1,7 @@ # pragma pylint: disable=missing-docstring, protected-access, invalid-name from datetime import UTC, datetime, timedelta from math import isnan, nan +from unittest.mock import MagicMock import pytest from ccxt import ( @@ -28,6 +29,7 @@ from freqtrade.exchange import ( timeframe_to_seconds, ) from freqtrade.exchange.check_exchange import check_exchange +from freqtrade.exchange.exchange_utils import _exchange_has_helper from tests.conftest import log_has_re @@ -385,3 +387,42 @@ def test_amount_to_contract_precision_standalone( ): res = amount_to_contract_precision(amount, precision, precision_mode, contract_size) assert pytest.approx(res) == expected + + +def test_exchange__exchange_has_helper(): + e_mod = MagicMock() + e_mod.has = { + "fetchTicker": True, + "fetchOHLCV": False, + "fetchTrades": True, + "fetchMyTrades": False, + "fetchOrder": True, + } + required = { + "fetchOHLCV": [], + "fetchTicker": [], + "fetchMyTrades": ["fetchTrades"], + "fetchOrder": ["fetchOpenOrder", "fetchClosedOrder"], + } + missing = _exchange_has_helper(e_mod, required) + assert set(missing) == {"fetchOHLCV"} + + e_mod.has = { + "fetchTicker": True, + "fetchOHLCV": False, + "fetchTrades": False, + "fetchMyTrades": False, + "fetchOrder": True, + } + missing = _exchange_has_helper(e_mod, required) + assert set(missing) == {"fetchOHLCV", "fetchMyTrades"} + + e_mod.has = { + "fetchTicker": True, + "fetchOHLCV": False, + "fetchTrades": False, + "fetchMyTrades": False, + "fetchOrder": False, + } + missing = _exchange_has_helper(e_mod, required) + assert set(missing) == {"fetchOHLCV", "fetchMyTrades", "fetchOrder"}