test: update test trading-mode validation test

This commit is contained in:
Matthias
2025-11-02 09:38:10 +01:00
parent 8978da7c20
commit 5be0a9c069

View File

@@ -4897,53 +4897,66 @@ def test_set_margin_mode(mocker, default_conf, margin_mode):
@pytest.mark.parametrize(
"exchange_name, trading_mode, margin_mode, exception_thrown",
"exchange_name, trading_mode, margin_mode, allow_none_margin_mode, exception_thrown",
[
("binance", TradingMode.SPOT, None, False),
("binance", TradingMode.MARGIN, MarginMode.ISOLATED, True),
("kraken", TradingMode.SPOT, None, False),
("kraken", TradingMode.MARGIN, MarginMode.ISOLATED, True),
("kraken", TradingMode.FUTURES, MarginMode.ISOLATED, True),
("bitmart", TradingMode.SPOT, None, False),
("bitmart", TradingMode.MARGIN, MarginMode.CROSS, True),
("bitmart", TradingMode.MARGIN, MarginMode.ISOLATED, True),
("bitmart", TradingMode.FUTURES, MarginMode.CROSS, True),
("bitmart", TradingMode.FUTURES, MarginMode.ISOLATED, True),
("gate", TradingMode.MARGIN, MarginMode.ISOLATED, True),
("okx", TradingMode.SPOT, None, False),
("okx", TradingMode.MARGIN, MarginMode.CROSS, True),
("okx", TradingMode.MARGIN, MarginMode.ISOLATED, True),
("okx", TradingMode.FUTURES, MarginMode.CROSS, True),
("binance", TradingMode.FUTURES, MarginMode.ISOLATED, False),
("gate", TradingMode.FUTURES, MarginMode.ISOLATED, False),
("okx", TradingMode.FUTURES, MarginMode.ISOLATED, False),
("binance", TradingMode.SPOT, None, False, False),
("binance", TradingMode.MARGIN, MarginMode.ISOLATED, False, True),
("kraken", TradingMode.SPOT, None, False, False),
("kraken", TradingMode.MARGIN, MarginMode.ISOLATED, False, True),
("kraken", TradingMode.FUTURES, MarginMode.ISOLATED, False, True),
("bitmart", TradingMode.SPOT, None, False, False),
("bitmart", TradingMode.MARGIN, MarginMode.CROSS, False, True),
("bitmart", TradingMode.MARGIN, MarginMode.ISOLATED, False, True),
("bitmart", TradingMode.FUTURES, MarginMode.CROSS, False, True),
("bitmart", TradingMode.FUTURES, MarginMode.ISOLATED, False, True),
("gate", TradingMode.MARGIN, MarginMode.ISOLATED, False, True),
("okx", TradingMode.SPOT, None, False, False),
("okx", TradingMode.MARGIN, MarginMode.CROSS, False, True),
("okx", TradingMode.MARGIN, MarginMode.ISOLATED, False, True),
("okx", TradingMode.FUTURES, MarginMode.CROSS, False, True),
("binance", TradingMode.FUTURES, MarginMode.ISOLATED, False, False),
("gate", TradingMode.FUTURES, MarginMode.ISOLATED, False, False),
("okx", TradingMode.FUTURES, MarginMode.ISOLATED, False, False),
# * Remove once implemented
("binance", TradingMode.MARGIN, MarginMode.CROSS, True),
("binance", TradingMode.FUTURES, MarginMode.CROSS, False),
("kraken", TradingMode.MARGIN, MarginMode.CROSS, True),
("kraken", TradingMode.FUTURES, MarginMode.CROSS, True),
("gate", TradingMode.MARGIN, MarginMode.CROSS, True),
("gate", TradingMode.FUTURES, MarginMode.CROSS, True),
("binance", TradingMode.MARGIN, MarginMode.CROSS, False, True),
("binance", TradingMode.FUTURES, MarginMode.CROSS, False, False),
("binance", TradingMode.FUTURES, None, False, True),
# Validate without margin mode
("binance", TradingMode.FUTURES, None, True, False),
("kraken", TradingMode.MARGIN, MarginMode.CROSS, False, True),
("kraken", TradingMode.FUTURES, MarginMode.CROSS, False, True),
("gate", TradingMode.MARGIN, MarginMode.CROSS, False, True),
("gate", TradingMode.FUTURES, MarginMode.CROSS, False, True),
# * Uncomment once implemented
# ("binance", TradingMode.MARGIN, MarginMode.CROSS, False),
# ("binance", TradingMode.FUTURES, MarginMode.CROSS, False),
# ("kraken", TradingMode.MARGIN, MarginMode.CROSS, False),
# ("kraken", TradingMode.FUTURES, MarginMode.CROSS, False),
# ("gate", TradingMode.MARGIN, MarginMode.CROSS, False),
# ("gate", TradingMode.FUTURES, MarginMode.CROSS, False),
# ("binance", TradingMode.MARGIN, MarginMode.CROSS, False, False),
# ("binance", TradingMode.FUTURES, MarginMode.CROSS, False, False),
# ("kraken", TradingMode.MARGIN, MarginMode.CROSS, False, False),
# ("kraken", TradingMode.FUTURES, MarginMode.CROSS, False, False),
# ("gate", TradingMode.MARGIN, MarginMode.CROSS, False, False),
# ("gate", TradingMode.FUTURES, MarginMode.CROSS, False, False),
],
)
def test_validate_trading_mode_and_margin_mode(
default_conf, mocker, exchange_name, trading_mode, margin_mode, exception_thrown
default_conf,
mocker,
exchange_name,
trading_mode,
margin_mode,
allow_none_margin_mode,
exception_thrown,
):
exchange = get_patched_exchange(
mocker, default_conf, exchange=exchange_name, mock_supported_modes=False
)
if exception_thrown:
with pytest.raises(OperationalException):
exchange.validate_trading_mode_and_margin_mode(trading_mode, margin_mode)
exchange.validate_trading_mode_and_margin_mode(
trading_mode, margin_mode, allow_none_margin_mode
)
else:
exchange.validate_trading_mode_and_margin_mode(trading_mode, margin_mode)
exchange.validate_trading_mode_and_margin_mode(
trading_mode, margin_mode, allow_none_margin_mode
)
@pytest.mark.parametrize(