tests: cover krakenfutures currency sum and funding fees

pull/12706/head
matstedt 4 weeks ago
parent 7906e18923
commit b4116076d0

@ -3,6 +3,7 @@
from __future__ import annotations
from copy import deepcopy
from datetime import UTC, datetime
from unittest.mock import MagicMock
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()
assert res["free"]["USD"] == 11.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()

Loading…
Cancel
Save