From 5b7f08137f7bddb8a6162edec4ab2ab481f485aa Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 8 Nov 2024 07:22:16 +0100 Subject: [PATCH] tests: improve hyperliquid tests --- tests/exchange/test_hyperliquid.py | 33 ++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/tests/exchange/test_hyperliquid.py b/tests/exchange/test_hyperliquid.py index b2f8fdd49..e8e06af53 100644 --- a/tests/exchange/test_hyperliquid.py +++ b/tests/exchange/test_hyperliquid.py @@ -1,7 +1,9 @@ from datetime import datetime, timezone -from unittest.mock import MagicMock +from unittest.mock import MagicMock, PropertyMock -from tests.conftest import get_mock_coro, get_patched_exchange +import pytest + +from tests.conftest import EXMS, get_mock_coro, get_patched_exchange def test_hyperliquid_dry_run_liquidation_price(default_conf, mocker): @@ -278,7 +280,6 @@ def test_hyperliquid_dry_run_liquidation_price(default_conf, mocker): ] api_mock = MagicMock() - get_mock_coro(return_value=markets) default_conf["trading_mode"] = "futures" default_conf["margin_mode"] = "isolated" default_conf["stake_currency"] = "USDC" @@ -300,7 +301,7 @@ def test_hyperliquid_dry_run_liquidation_price(default_conf, mocker): position["collateral"], [], ) - assert abs(liq_price_calculated - liq_price_returned) / liq_price_returned < 0.0001 + assert pytest.approx(liq_price_returned, rel=0.0001) == liq_price_calculated def test_hyperliquid_get_funding_fees(default_conf, mocker): @@ -317,3 +318,27 @@ def test_hyperliquid_get_funding_fees(default_conf, mocker): exchange.get_funding_fees("BTC/USDC:USDC", 1, False, now) assert exchange._fetch_and_calculate_funding_fees.call_count == 1 + + +def test_hyperliquid_get_max_leverage(default_conf, mocker): + markets = { + "BTC/USDC:USDC": {"limits": {"leverage": {"max": 50}}}, + "ETH/USDC:USDC": {"limits": {"leverage": {"max": 50}}}, + "SOL/USDC:USDC": {"limits": {"leverage": {"max": 20}}}, + "DOGE/USDC:USDC": {"limits": {"leverage": {"max": 20}}}, + } + exchange = get_patched_exchange(mocker, default_conf, exchange="hyperliquid") + assert exchange.get_max_leverage("BTC/USDC:USDC", 1) == 1.0 + + default_conf["trading_mode"] = "futures" + default_conf["margin_mode"] = "isolated" + exchange = get_patched_exchange(mocker, default_conf, exchange="hyperliquid") + mocker.patch.multiple( + EXMS, + markets=PropertyMock(return_value=markets), + ) + + assert exchange.get_max_leverage("BTC/USDC:USDC", 1) == 50 + assert exchange.get_max_leverage("ETH/USDC:USDC", 20) == 50 + assert exchange.get_max_leverage("SOL/USDC:USDC", 50) == 20 + assert exchange.get_max_leverage("DOGE/USDC:USDC", 3) == 20