@@ -43,20 +43,22 @@ def test_get_preferred_to_deposit_modules(self, mock_datetime):
4343 # Mock staking router module IDs and digests
4444 self .mock_w3 .lido .staking_router .get_staking_module_ids .return_value = [1 , 2 , 3 ]
4545 self .mock_w3 .lido .staking_router .get_staking_module_digests .return_value = [
46- [0 , 0 , [1 ], [5 , 2 ]], # Module 1: 3 validators
47- [0 , 0 , [2 ], [7 , 6 ]], # Module 2: 1 validator
48- [0 , 0 , [3 ], [10 , 4 ]], # Module 3: 6 validators
46+ [0 , 0 , [1 ], [5 , 8 ]], # Module 1: 3 active validators
47+ [0 , 0 , [2 ], [7 , 8 ]], # Module 2: 1 active validator
48+ [0 , 0 , [3 ], [10 , 16 ]], # Module 3: 6 active validators
4949 ]
50+ self .bot ._get_quorum = Mock ()
51+ self .bot ._select_strategy = Mock ()
5052
5153 # Mock module healthiness and quorum
52- self . bot . _get_quorum = MagicMock ( side_effect = [ True , False , True ])
54+ # Module ID: 2 1 3
5355 self .bot ._is_module_healthy = MagicMock (side_effect = [True , False , True ])
5456
5557 # Call the method
5658 result = self .bot ._get_preferred_to_deposit_modules ()
5759
58- # Expected output: Module 3 (6 validators, healthy )
59- self .assertEqual ([3 ], result )
60+ # Expected output: Module 2 (1 active )
61+ self .assertEqual ([2 ], result )
6062
6163 # Verify calls to dependent methods
6264 self .bot ._get_quorum .assert_any_call (1 )
@@ -84,27 +86,26 @@ def test_no_healthy_modules(self):
8486 # Mock staking router module IDs and digests
8587 self .mock_w3 .lido .staking_router .get_staking_module_ids .return_value = [1 , 2 ]
8688 self .mock_w3 .lido .staking_router .get_staking_module_digests .return_value = [
87- [0 , 0 , [1 ], [3 , 1 ]], # Module 1: 2 validators
88- [0 , 0 , [2 ], [7 , 5 ]], # Module 2: 2 validators
89+ [0 , 0 , [1 ], [3 , 5 ]], # Module 1: 2 validators
90+ [0 , 0 , [2 ], [7 , 9 ]], # Module 2: 2 validators
8991 ]
92+ self .bot ._get_quorum = Mock ()
9093
9194 # Mock module healthiness and quorum
92- self .bot ._get_quorum = MagicMock (side_effect = [True , True , True ])
9395 self .bot ._is_module_healthy = MagicMock (side_effect = [False , False ])
9496
9597 # Call the method
9698 result = self .bot ._get_preferred_to_deposit_modules ()
9799
98- # Expected output: Include all modules as no healthy modules are found
99- self .assertEqual ([1 , 2 ], result )
100+ self .assertEqual ([], result )
100101
101102 def test_module_sorting_by_validator_difference (self ):
102103 # Mock staking router module IDs and digests
103104 self .mock_w3 .lido .staking_router .get_staking_module_ids .return_value = [1 , 2 , 3 ]
104105 self .mock_w3 .lido .staking_router .get_staking_module_digests .return_value = [
105- [0 , 0 , [1 ], [6 , 2 ]], # Module 1: 4 validators
106- [0 , 0 , [2 ], [8 , 3 ]], # Module 2: 5 validators
107- [0 , 0 , [3 ], [7 , 6 ]], # Module 3: 1 validator
106+ [0 , 0 , [1 ], [6 , 10 ]], # Module 1: 4 validators
107+ [0 , 0 , [2 ], [8 , 13 ]], # Module 2: 5 validators
108+ [0 , 0 , [3 ], [7 , 8 ]], # Module 3: 1 validator
108109 ]
109110
110111 # Mock module healthiness and quorum
@@ -114,8 +115,8 @@ def test_module_sorting_by_validator_difference(self):
114115 # Call the method
115116 result = self .bot ._get_preferred_to_deposit_modules ()
116117
117- # Expected output: Sorted by validator difference: Module 2 , Module 1, Module 3
118- self .assertEqual ([2 ], result )
118+ # Expected output: Sorted by validator difference: Module 3 , Module 1, Module 2
119+ self .assertEqual ([3 ], result )
119120
120121
121122@pytest .fixture
@@ -171,13 +172,23 @@ def test_depositor_one_module_deposited(depositor_bot, block_data):
171172 (0 , 0 , (2 ,), (0 , 10 , 10 )),
172173 ]
173174 )
175+ depositor_bot ._general_strategy .is_gas_price_ok = Mock (return_value = True )
176+ depositor_bot ._general_strategy .deposited_keys_amount = Mock (return_value = 10 )
174177 depositor_bot ._check_balance = Mock ()
175178 depositor_bot ._deposit_to_module = Mock (return_value = True )
176- depositor_bot .execute (block_data )
179+ assert depositor_bot .execute (block_data )
177180
178181 assert depositor_bot ._deposit_to_module .call_count == 1
179182
180183
184+ @pytest .mark .unit
185+ def test_depositor_no_modules_to_deposit (depositor_bot , block_data ):
186+ depositor_bot ._check_balance = Mock ()
187+ depositor_bot ._get_preferred_to_deposit_modules = Mock (return_value = [])
188+ # Make sure if no modules are deposited, the bot goes to long sleep
189+ assert depositor_bot .execute (block_data )
190+
191+
181192@pytest .mark .unit
182193@pytest .mark .parametrize (
183194 'is_depositable,quorum,is_gas_price_ok,is_deposited_keys_amount_ok' ,
@@ -379,27 +390,3 @@ def test_depositor_bot(
379390 db .message_storage .messages = deposit_messages
380391 assert db .execute (latest )
381392 assert web3_lido_integration .lido .staking_router .get_staking_module_nonce (module_id ) == old_module_nonce + 1
382-
383-
384- @pytest .mark .unit
385- def test_depositor_execute (web3_lido_unit , depositor_bot ):
386- depositor_bot ._check_balance = Mock ()
387-
388- depositor_bot ._get_preferred_to_deposit_modules = Mock (return_value = [1 , 2 ])
389-
390- # Check unsuccess deposit to first module only
391- variables .DEPOSIT_TO_FIRST_HEALTHY_MODULE_ONLY = True
392- depositor_bot ._deposit_to_module = Mock (return_value = False )
393- depositor_bot .execute (None )
394- assert depositor_bot ._deposit_to_module .call_count == 1
395-
396- # Check deposit to both modules
397- variables .DEPOSIT_TO_FIRST_HEALTHY_MODULE_ONLY = False
398- depositor_bot ._deposit_to_module = Mock (return_value = False )
399- depositor_bot .execute (None )
400- assert depositor_bot ._deposit_to_module .call_count == 2
401-
402- # Check success to first module
403- depositor_bot ._deposit_to_module = Mock (return_value = True )
404- depositor_bot .execute (None )
405- assert depositor_bot ._deposit_to_module .call_count == 1
0 commit comments