@@ -118,6 +118,24 @@ contract CollateralManagementIntegrationTest is Test {
118118 });
119119 }
120120
121+ function _registerAndApprove (
122+ address lp ,
123+ string memory name ,
124+ string memory apiBaseUrl ,
125+ bool status ,
126+ Flyover.ProviderType providerType ,
127+ uint256 collateralAmount
128+ ) internal returns (uint256 providerId ) {
129+ vm.prank (lp, lp);
130+ providerId = discovery.register {value: collateralAmount}(
131+ name,
132+ apiBaseUrl,
133+ status,
134+ providerType
135+ );
136+ discovery.approveRegistration (lp);
137+ }
138+
121139 // ============ Cross-contract: Adding Collateral Affects Discovery ============
122140
123141 function test_ShouldMakeProviderOperationalInDiscoveryAfterAddingSufficientCollateral ()
@@ -126,12 +144,13 @@ contract CollateralManagementIntegrationTest is Test {
126144 address lp = signers[signers.length - 1 ];
127145
128146 // Register with extra collateral
129- vm. prank (lp, lp);
130- discovery. register {value: MIN_COLLATERAL * 2 }(
147+ _registerAndApprove (
148+ lp,
131149 "LP " ,
132150 "url " ,
133151 true ,
134- Flyover.ProviderType.PegIn
152+ Flyover.ProviderType.PegIn,
153+ MIN_COLLATERAL * 2
135154 );
136155
137156 // Slash to below minimum (but not all)
@@ -177,12 +196,13 @@ contract CollateralManagementIntegrationTest is Test {
177196 address lp = signers[signers.length - 1 ];
178197
179198 // Register with 2x minimum collateral
180- vm. prank (lp, lp);
181- discovery. register {value: MIN_COLLATERAL * 2 }(
199+ _registerAndApprove (
200+ lp,
182201 "LP " ,
183202 "url " ,
184203 true ,
185- Flyover.ProviderType.PegIn
204+ Flyover.ProviderType.PegIn,
205+ MIN_COLLATERAL * 2
186206 );
187207
188208 // Verify operational
@@ -213,12 +233,13 @@ contract CollateralManagementIntegrationTest is Test {
213233 address lp = signers[signers.length - 1 ];
214234
215235 // Register with 3x minimum collateral
216- vm. prank (lp, lp);
217- discovery. register {value: MIN_COLLATERAL * 3 }(
236+ _registerAndApprove (
237+ lp,
218238 "LP " ,
219239 "url " ,
220240 true ,
221- Flyover.ProviderType.PegIn
241+ Flyover.ProviderType.PegIn,
242+ MIN_COLLATERAL * 3
222243 );
223244
224245 // Slash but keep above minimum
@@ -250,20 +271,21 @@ contract CollateralManagementIntegrationTest is Test {
250271 address lp2 = signers[signers.length - 1 ];
251272
252273 // Register two providers
253- vm. prank (lp1, lp1);
254- discovery. register {value: MIN_COLLATERAL}(
274+ _registerAndApprove (
275+ lp1,
255276 "LP1 " ,
256277 "url1 " ,
257278 true ,
258- Flyover.ProviderType.PegIn
279+ Flyover.ProviderType.PegIn,
280+ MIN_COLLATERAL
259281 );
260-
261- vm.prank (lp2, lp2);
262- discovery.register {value: MIN_COLLATERAL}(
282+ _registerAndApprove (
283+ lp2,
263284 "LP2 " ,
264285 "url2 " ,
265286 true ,
266- Flyover.ProviderType.PegIn
287+ Flyover.ProviderType.PegIn,
288+ MIN_COLLATERAL
267289 );
268290
269291 // Both listed in Discovery
@@ -295,12 +317,13 @@ contract CollateralManagementIntegrationTest is Test {
295317 address lp = signers[signers.length - 1 ];
296318
297319 // Register provider
298- vm. prank (lp, lp);
299- discovery. register {value: MIN_COLLATERAL}(
320+ _registerAndApprove (
321+ lp,
300322 "LP " ,
301323 "url " ,
302324 true ,
303- Flyover.ProviderType.PegIn
325+ Flyover.ProviderType.PegIn,
326+ MIN_COLLATERAL
304327 );
305328
306329 // Verify listed
@@ -338,12 +361,13 @@ contract CollateralManagementIntegrationTest is Test {
338361 address lp = signers[signers.length - 1 ];
339362
340363 // Initial registration
341- vm. prank (lp, lp);
342- discovery. register {value: MIN_COLLATERAL}(
364+ _registerAndApprove (
365+ lp,
343366 "LP First " ,
344367 "url1 " ,
345368 true ,
346- Flyover.ProviderType.PegIn
369+ Flyover.ProviderType.PegIn,
370+ MIN_COLLATERAL
347371 );
348372
349373 Flyover.LiquidityProvider[] memory providers = discovery.getProviders ();
@@ -364,12 +388,13 @@ contract CollateralManagementIntegrationTest is Test {
364388 assertEq (providers.length , 0 );
365389
366390 // Re-register
367- vm. prank (lp, lp);
368- discovery. register {value: MIN_COLLATERAL}(
391+ _registerAndApprove (
392+ lp,
369393 "LP Second " ,
370394 "url2 " ,
371395 true ,
372- Flyover.ProviderType.PegOut
396+ Flyover.ProviderType.PegOut,
397+ MIN_COLLATERAL
373398 );
374399
375400 // Appears in listing again reusing the same provider ID
@@ -401,36 +426,37 @@ contract CollateralManagementIntegrationTest is Test {
401426 address lp4 = signers[signers.length - 1 ];
402427
403428 // Register 4 providers with different collateral amounts
404- vm. prank (lp1, lp1);
405- discovery. register {value: MIN_COLLATERAL}(
429+ _registerAndApprove (
430+ lp1,
406431 "LP1 " ,
407432 "url1 " ,
408433 true ,
409- Flyover.ProviderType.PegIn
434+ Flyover.ProviderType.PegIn,
435+ MIN_COLLATERAL
410436 );
411-
412- vm.prank (lp2, lp2);
413- discovery.register {value: MIN_COLLATERAL * 2 }(
437+ _registerAndApprove (
438+ lp2,
414439 "LP2 " ,
415440 "url2 " ,
416441 true ,
417- Flyover.ProviderType.PegIn
442+ Flyover.ProviderType.PegIn,
443+ MIN_COLLATERAL * 2
418444 );
419-
420- vm.prank (lp3, lp3);
421- discovery.register {value: MIN_COLLATERAL * 5 }(
445+ _registerAndApprove (
446+ lp3,
422447 "LP3 " ,
423448 "url3 " ,
424449 true ,
425- Flyover.ProviderType.PegIn
450+ Flyover.ProviderType.PegIn,
451+ MIN_COLLATERAL * 5
426452 );
427-
428- vm.prank (lp4, lp4);
429- discovery.register {value: MIN_COLLATERAL * 10 }(
453+ _registerAndApprove (
454+ lp4,
430455 "LP4 " ,
431456 "url4 " ,
432457 true ,
433- Flyover.ProviderType.PegIn
458+ Flyover.ProviderType.PegIn,
459+ MIN_COLLATERAL * 10
434460 );
435461
436462 // All should be operational and listed
0 commit comments