3
3
from bittensor .core .errors import SubstrateRequestException
4
4
from bittensor .core .extrinsics .asyncex import root as async_root
5
5
6
+ from bittensor .utils .balance import Balance
7
+
6
8
7
9
@pytest .mark .asyncio
8
10
async def test_get_limits_success (subtensor , mocker ):
@@ -62,6 +64,16 @@ async def test_root_register_extrinsic_success(subtensor, fake_wallet, mocker):
62
64
"query" ,
63
65
return_value = fake_uid ,
64
66
)
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
+ )
65
77
66
78
# Call
67
79
result = await async_root .root_register_extrinsic (
@@ -86,10 +98,53 @@ async def test_root_register_extrinsic_success(subtensor, fake_wallet, mocker):
86
98
assert result is True
87
99
88
100
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
+
89
134
@pytest .mark .asyncio
90
135
async def test_root_register_extrinsic_unlock_failed (subtensor , fake_wallet , mocker ):
91
136
"""Tests registration fails due to unlock failure."""
92
137
# 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
+ )
93
148
mocked_unlock_key = mocker .patch .object (
94
149
async_root ,
95
150
"unlock_key" ,
@@ -117,6 +172,16 @@ async def test_root_register_extrinsic_already_registered(
117
172
# Preps
118
173
fake_wallet .hotkey .ss58_address = "fake_hotkey_address"
119
174
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
+ )
120
185
mocked_unlock_key = mocker .patch .object (
121
186
async_root ,
122
187
"unlock_key" ,
@@ -152,6 +217,16 @@ async def test_root_register_extrinsic_transaction_failed(
152
217
# Preps
153
218
fake_wallet .hotkey .ss58_address = "fake_hotkey_address"
154
219
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
+ )
155
230
mocked_unlock_key = mocker .patch .object (
156
231
async_root ,
157
232
"unlock_key" ,
@@ -193,6 +268,16 @@ async def test_root_register_extrinsic_uid_not_found(subtensor, fake_wallet, moc
193
268
# Preps
194
269
fake_wallet .hotkey .ss58_address = "fake_hotkey_address"
195
270
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
+ )
196
281
mocked_unlock_key = mocker .patch .object (
197
282
async_root ,
198
283
"unlock_key" ,
0 commit comments