22
33from __future__ import annotations
44
5- from unittest .mock import Mock , patch
5+ from unittest .mock import Mock , patch , MagicMock
66
77from hypertrade .routes .hyperliquid_service import HyperliquidService
88
99
10+ def _mock_settings ():
11+ """Create a mock settings object."""
12+ mock_settings = MagicMock ()
13+ mock_settings .api_url = "https://api.hyperliquid.xyz"
14+ mock_settings .master_addr = "0xDEFAULT"
15+ return mock_settings
16+
17+
1018def test_hyperliquid_service_stores_subaccount_when_provided ():
1119 """Test that HyperliquidService stores subaccount address."""
1220 subaccount = "0xSUBACCOUNT789"
1321
1422 with patch ("hypertrade.routes.hyperliquid_service.HyperliquidExecutionClient" ):
15- service = HyperliquidService (
16- master_addr = "0xMASTER" ,
17- api_wallet_priv = "test-key" ,
18- subaccount_addr = subaccount ,
19- )
23+ with patch ("hypertrade.routes.hyperliquid_service.get_settings" , return_value = _mock_settings ()):
24+ service = HyperliquidService (
25+ master_addr = "0xMASTER" ,
26+ api_wallet_priv = "test-key" ,
27+ subaccount_addr = subaccount ,
28+ )
2029
21- assert service .subaccount_addr == subaccount
30+ assert service .subaccount_addr == subaccount
2231
2332
2433def test_hyperliquid_service_stores_none_when_no_subaccount ():
2534 """Test that HyperliquidService stores None when subaccount not provided."""
2635 with patch ("hypertrade.routes.hyperliquid_service.HyperliquidExecutionClient" ):
27- service = HyperliquidService (
28- master_addr = "0xMASTER" ,
29- api_wallet_priv = "test-key" ,
30- subaccount_addr = None ,
31- )
36+ with patch ("hypertrade.routes.hyperliquid_service.get_settings" , return_value = _mock_settings ()):
37+ service = HyperliquidService (
38+ master_addr = "0xMASTER" ,
39+ api_wallet_priv = "test-key" ,
40+ subaccount_addr = None ,
41+ )
3242
33- assert service .subaccount_addr is None
43+ assert service .subaccount_addr is None
3444
3545
3646def test_hyperliquid_client_initialized_with_subaccount ():
@@ -40,33 +50,35 @@ def test_hyperliquid_client_initialized_with_subaccount():
4050 with patch (
4151 "hypertrade.routes.hyperliquid_service.HyperliquidExecutionClient"
4252 ) as mock_client_class :
43- service = HyperliquidService (
44- master_addr = "0xMASTER" ,
45- api_wallet_priv = "test-key" ,
46- subaccount_addr = subaccount ,
47- )
53+ with patch ("hypertrade.routes.hyperliquid_service.get_settings" , return_value = _mock_settings ()):
54+ service = HyperliquidService (
55+ master_addr = "0xMASTER" ,
56+ api_wallet_priv = "test-key" ,
57+ subaccount_addr = subaccount ,
58+ )
4859
49- # Verify HyperliquidExecutionClient was called with subaccount
50- mock_client_class .assert_called_once ()
51- call_kwargs = mock_client_class .call_args [1 ]
52- assert call_kwargs ["vault_address" ] == subaccount
60+ # Verify HyperliquidExecutionClient was called with subaccount
61+ mock_client_class .assert_called_once ()
62+ call_kwargs = mock_client_class .call_args [1 ]
63+ assert call_kwargs ["vault_address" ] == subaccount
5364
5465
5566def test_hyperliquid_client_initialized_without_subaccount ():
5667 """Test that HyperliquidExecutionClient receives None for vault_address."""
5768 with patch (
5869 "hypertrade.routes.hyperliquid_service.HyperliquidExecutionClient"
5970 ) as mock_client_class :
60- service = HyperliquidService (
61- master_addr = "0xMASTER" ,
62- api_wallet_priv = "test-key" ,
63- subaccount_addr = None ,
64- )
71+ with patch ("hypertrade.routes.hyperliquid_service.get_settings" , return_value = _mock_settings ()):
72+ service = HyperliquidService (
73+ master_addr = "0xMASTER" ,
74+ api_wallet_priv = "test-key" ,
75+ subaccount_addr = None ,
76+ )
6577
66- # Verify HyperliquidExecutionClient was called with None
67- mock_client_class .assert_called_once ()
68- call_kwargs = mock_client_class .call_args [1 ]
69- assert call_kwargs ["vault_address" ] is None
78+ # Verify HyperliquidExecutionClient was called with None
79+ mock_client_class .assert_called_once ()
80+ call_kwargs = mock_client_class .call_args [1 ]
81+ assert call_kwargs ["vault_address" ] is None
7082
7183
7284def test_subaccount_passed_to_execution_client_with_correct_params ():
@@ -79,17 +91,18 @@ def test_subaccount_passed_to_execution_client_with_correct_params():
7991 with patch (
8092 "hypertrade.routes.hyperliquid_service.HyperliquidExecutionClient"
8193 ) as mock_client_class :
82- service = HyperliquidService (
83- base_url = base_url ,
84- master_addr = master ,
85- api_wallet_priv = priv_key ,
86- subaccount_addr = subaccount ,
87- )
88-
89- # Verify correct parameters were passed
90- mock_client_class .assert_called_once ()
91- call_kwargs = mock_client_class .call_args [1 ]
92- assert call_kwargs ["private_key" ] == priv_key
93- assert call_kwargs ["account_address" ] == master
94- assert call_kwargs ["vault_address" ] == subaccount
95- assert call_kwargs ["base_url" ] == base_url
94+ with patch ("hypertrade.routes.hyperliquid_service.get_settings" , return_value = _mock_settings ()):
95+ service = HyperliquidService (
96+ base_url = base_url ,
97+ master_addr = master ,
98+ api_wallet_priv = priv_key ,
99+ subaccount_addr = subaccount ,
100+ )
101+
102+ # Verify correct parameters were passed
103+ mock_client_class .assert_called_once ()
104+ call_kwargs = mock_client_class .call_args [1 ]
105+ assert call_kwargs ["private_key" ] == priv_key
106+ assert call_kwargs ["account_address" ] == master
107+ assert call_kwargs ["vault_address" ] == subaccount
108+ assert call_kwargs ["base_url" ] == base_url
0 commit comments