tests: cover krakenfutures currency sum and funding fees

This commit is contained in:
matstedt
2026-01-20 08:46:06 +01:00
committed by Matthias
parent 1345cfdbee
commit 3f6e7ca4c1
+43
View File
@@ -3,6 +3,7 @@
from __future__ import annotations from __future__ import annotations
from copy import deepcopy from copy import deepcopy
from datetime import UTC, datetime
from unittest.mock import MagicMock from unittest.mock import MagicMock
from freqtrade.enums import CandleType, MarginMode, TradingMode from freqtrade.enums import CandleType, MarginMode, TradingMode
@@ -166,3 +167,45 @@ def test_krakenfutures_get_balances_falls_back_to_ccxt_fetch_balance(mocker, def
res = ex.get_balances() res = ex.get_balances()
assert res["free"]["USD"] == 11.0 assert res["free"]["USD"] == 11.0
assert res["total"]["USD"] == 12.0 assert res["total"]["USD"] == 12.0
def test_krakenfutures_sum_currencies_value_sums_valid_values(mocker, default_conf):
"""Sum currencies values, skipping invalid entries."""
ex = get_patched_exchange(mocker, default_conf, exchange="krakenfutures")
currencies = {
"USD": {"value": "10"},
"EUR": {"value": 2.5},
"BAD": {"value": ""},
"NODICT": 3,
}
assert ex._sum_currencies_value(currencies) == 12.5
def test_krakenfutures_sum_currencies_value_returns_none_when_empty(mocker, default_conf):
"""Return None when no valid values are found."""
ex = get_patched_exchange(mocker, default_conf, exchange="krakenfutures")
assert ex._sum_currencies_value(["not", "dict"]) is None
assert ex._sum_currencies_value({"USD": {"value": ""}}) is None
def test_krakenfutures_get_funding_fees_futures_success(mocker, default_conf):
"""Use funding fee helper in futures mode."""
conf = dict(default_conf)
conf["trading_mode"] = TradingMode.FUTURES
ex = get_patched_exchange(mocker, conf, exchange="krakenfutures")
helper = mocker.patch.object(ex, "_fetch_and_calculate_funding_fees", return_value=1.23)
open_date = datetime.now(UTC)
assert ex.get_funding_fees("BTC/USD:USD", 0.1, False, open_date) == 1.23
helper.assert_called_once_with("BTC/USD:USD", 0.1, False, open_date)
def test_krakenfutures_get_funding_fees_spot_returns_zero(mocker, default_conf):
"""Return 0.0 outside futures mode without calling the helper."""
ex = get_patched_exchange(mocker, default_conf, exchange="krakenfutures")
helper = mocker.patch.object(ex, "_fetch_and_calculate_funding_fees")
assert ex.get_funding_fees("BTC/USD:USD", 0.1, False, None) == 0.0
helper.assert_not_called()