tests: increase coverage - krakenfutures edge paths and ft_has overrides

This commit is contained in:
matstedt
2026-01-21 15:16:05 +01:00
committed by Matthias
parent 3f6e7ca4c1
commit 7ee4338b1f
2 changed files with 217 additions and 3 deletions
+72 -2
View File
@@ -3,6 +3,7 @@ from datetime import UTC, datetime, timedelta
from math import isnan, nan
from unittest.mock import MagicMock
import ccxt
import pytest
from ccxt import (
DECIMAL_PLACES,
@@ -28,8 +29,14 @@ from freqtrade.exchange import (
timeframe_to_resample_freq,
timeframe_to_seconds,
)
from freqtrade.exchange.check_exchange import check_exchange
from freqtrade.exchange.exchange_utils import _exchange_has_helper
from freqtrade.exchange import exchange_utils as exchange_utils_mod
from freqtrade.exchange.check_exchange import _get_ft_has_overrides, check_exchange
from freqtrade.exchange.exchange_utils import (
_build_exchange_list_entry,
_exchange_has_helper,
validate_exchange,
)
from freqtrade.resolvers.exchange_resolver import ExchangeResolver
from tests.conftest import log_has_re
@@ -426,3 +433,66 @@ def test_exchange__exchange_has_helper():
}
missing = _exchange_has_helper(e_mod.has, required)
assert set(missing) == {"fetchOHLCV", "fetchMyTrades", "fetchOrder"}
def test_validate_exchange_uses_ft_has_overrides(monkeypatch):
class DummyExchange:
def __init__(self) -> None:
self.has = {
"fetchOrder": False,
"fetchL2OrderBook": False,
"fetchTicker": True,
"cancelOrder": True,
"createOrder": True,
"fetchBalance": True,
"fetchOHLCV": False,
}
monkeypatch.setattr(ccxt.pro, "dummy", DummyExchange, raising=False)
valid, _, _, _ = validate_exchange("dummy")
assert not valid
valid, _, _, _ = validate_exchange("dummy", {"fetchOrder": True, "fetchOHLCV": True})
assert valid
def test_build_exchange_list_entry_uses_ft_has_overrides(monkeypatch):
class DummyClass:
_supported_trading_mode_margin_pairs = []
@staticmethod
def get_ft_has():
return {"fetchOrder": True}
captured = {}
class DummyExchange:
name = "Dummy"
alias = False
dex = False
def fake_validate_exchange(exchange, ft_has_overrides=None):
captured["ft_has_overrides"] = ft_has_overrides
return True, "", "", DummyExchange()
monkeypatch.setattr(exchange_utils_mod, "validate_exchange", fake_validate_exchange)
res = _build_exchange_list_entry("dummy", {"dummy": {"class": DummyClass}})
assert captured["ft_has_overrides"] == {"fetchOrder": True}
assert res["classname"] == "dummy"
def test_get_ft_has_overrides_returns_override(monkeypatch):
class DummyClass:
@staticmethod
def get_ft_has():
return {"fetchOrder": True}
monkeypatch.setattr(
ExchangeResolver,
"search_all_objects",
lambda *args, **kwargs: [{"name": "dummy", "class": DummyClass}],
)
assert _get_ft_has_overrides("dummy") == {"fetchOrder": True}