33from bittensor .core .errors import SubstrateRequestException
44from bittensor .core .extrinsics .asyncex import root as async_root
55
6+ from bittensor .utils .balance import Balance
7+
68
79@pytest .mark .asyncio
810async def test_get_limits_success (subtensor , mocker ):
@@ -62,6 +64,16 @@ async def test_root_register_extrinsic_success(subtensor, fake_wallet, mocker):
6264 "query" ,
6365 return_value = fake_uid ,
6466 )
67+ mocker .patch .object (
68+ subtensor ,
69+ "get_hyperparameter" ,
70+ return_value = Balance (0 ),
71+ )
72+ mocker .patch .object (
73+ subtensor ,
74+ "get_balance" ,
75+ return_value = Balance (1 ),
76+ )
6577
6678 # Call
6779 result = await async_root .root_register_extrinsic (
@@ -86,10 +98,53 @@ async def test_root_register_extrinsic_success(subtensor, fake_wallet, mocker):
8698 assert result is True
8799
88100
101+ @pytest .mark .asyncio
102+ async def test_root_register_extrinsic_insufficient_balance (
103+ subtensor ,
104+ fake_wallet ,
105+ mocker ,
106+ ):
107+ mocker .patch .object (
108+ subtensor ,
109+ "get_hyperparameter" ,
110+ return_value = Balance (1 ),
111+ )
112+ mocker .patch .object (
113+ subtensor ,
114+ "get_balance" ,
115+ return_value = Balance (0 ),
116+ )
117+
118+ result = await async_root .root_register_extrinsic (
119+ subtensor = subtensor ,
120+ wallet = fake_wallet ,
121+ wait_for_inclusion = True ,
122+ wait_for_finalization = True ,
123+ )
124+
125+ assert result is False
126+
127+ subtensor .get_balance .assert_called_once_with (
128+ fake_wallet .coldkeypub .ss58_address ,
129+ block_hash = subtensor .substrate .get_chain_head .return_value ,
130+ )
131+ subtensor .substrate .submit_extrinsic .assert_not_called ()
132+
133+
89134@pytest .mark .asyncio
90135async def test_root_register_extrinsic_unlock_failed (subtensor , fake_wallet , mocker ):
91136 """Tests registration fails due to unlock failure."""
92137 # Preps
138+ mocker .patch .object (
139+ subtensor ,
140+ "get_hyperparameter" ,
141+ return_value = Balance (0 ),
142+ )
143+ mocker .patch .object (
144+ subtensor ,
145+ "get_balance" ,
146+ return_value = Balance (1 ),
147+ )
93148 mocked_unlock_key = mocker .patch .object (
94149 async_root ,
95150 "unlock_key" ,
@@ -117,6 +172,16 @@ async def test_root_register_extrinsic_already_registered(
117172 # Preps
118173 fake_wallet .hotkey .ss58_address = "fake_hotkey_address"
119174
175+ mocker .patch .object (
176+ subtensor ,
177+ "get_hyperparameter" ,
178+ return_value = Balance (0 ),
179+ )
180+ mocker .patch .object (
181+ subtensor ,
182+ "get_balance" ,
183+ return_value = Balance (1 ),
184+ )
120185 mocked_unlock_key = mocker .patch .object (
121186 async_root ,
122187 "unlock_key" ,
@@ -152,6 +217,16 @@ async def test_root_register_extrinsic_transaction_failed(
152217 # Preps
153218 fake_wallet .hotkey .ss58_address = "fake_hotkey_address"
154219
220+ mocker .patch .object (
221+ subtensor ,
222+ "get_hyperparameter" ,
223+ return_value = Balance (0 ),
224+ )
225+ mocker .patch .object (
226+ subtensor ,
227+ "get_balance" ,
228+ return_value = Balance (1 ),
229+ )
155230 mocked_unlock_key = mocker .patch .object (
156231 async_root ,
157232 "unlock_key" ,
@@ -193,6 +268,16 @@ async def test_root_register_extrinsic_uid_not_found(subtensor, fake_wallet, moc
193268 # Preps
194269 fake_wallet .hotkey .ss58_address = "fake_hotkey_address"
195270
271+ mocker .patch .object (
272+ subtensor ,
273+ "get_hyperparameter" ,
274+ return_value = Balance (0 ),
275+ )
276+ mocker .patch .object (
277+ subtensor ,
278+ "get_balance" ,
279+ return_value = Balance (1 ),
280+ )
196281 mocked_unlock_key = mocker .patch .object (
197282 async_root ,
198283 "unlock_key" ,
0 commit comments