tests: cover krakenfutures currency sum and funding fees
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user