Skip to content

Commit 9f0279d

Browse files
committed
test: refactor provider registration logic to use a shared helper function across integration tests
1 parent 1f25e30 commit 9f0279d

2 files changed

Lines changed: 192 additions & 132 deletions

File tree

test/integration/CollateralManagement.t.sol

Lines changed: 66 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)