Skip to content

Commit 7f7b20a

Browse files
committed
test_bidderStakingAndWithdrawCycle
1 parent 4018f0b commit 7f7b20a

File tree

1 file changed

+36
-2
lines changed

1 file changed

+36
-2
lines changed

contracts/test/core/BidderRegistryTest.sol

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,12 +1109,46 @@ contract BidderRegistryTest is Test {
11091109
assertEq(balanceAfter, 9 ether + 3 wei, "bidder should have received all available amount");
11101110
}
11111111

1112+
function test_bidderStakingAndWithdrawCycle() public {
1113+
test_withdrawAsBidder_AssertDepositStateWithEscrowedAmount();
1114+
1115+
address provider1 = vm.addr(8);
1116+
address provider2 = vm.addr(9);
1117+
address[] memory providers = new address[](2);
1118+
providers[0] = provider1;
1119+
providers[1] = provider2;
1120+
1121+
IBidderRegistry.Deposit memory deposit1Before = getDepositStruct(bidder, provider1);
1122+
IBidderRegistry.Deposit memory deposit2Before = getDepositStruct(bidder, provider2);
1123+
1124+
vm.deal(bidder, 25 ether + 1 wei);
1125+
1126+
vm.expectEmit(true, true, true, true);
1127+
emit IBidderRegistry.BidderDeposited(bidder, provider1, 12.5 ether);
1128+
vm.expectEmit(true, true, true, true);
1129+
emit IBidderRegistry.BidderDeposited(bidder, provider2, 12.5 ether + 1 wei);
1130+
vm.prank(bidder);
1131+
bidderRegistry.depositEvenlyAsBidder{value: 25 ether + 1 wei}(providers);
1132+
1133+
IBidderRegistry.Deposit memory deposit1After = getDepositStruct(bidder, provider1);
1134+
IBidderRegistry.Deposit memory deposit2After = getDepositStruct(bidder, provider2);
1135+
assertTrue(deposit1After.exists, "deposit1 should exist");
1136+
assertTrue(deposit2After.exists, "deposit2 should exist");
1137+
assertEq(deposit1After.availableAmount, deposit1Before.availableAmount + 12.5 ether, "deposit1 should have 12.5 ether more than before");
1138+
assertEq(deposit2After.availableAmount, deposit2Before.availableAmount + 12.5 ether + 1 wei, "deposit2 should have 12.5 ether + 1 wei more than before");
1139+
assertEq(deposit1After.escrowedAmount, deposit1Before.escrowedAmount, "deposit1 should have same escrowed amount as before");
1140+
assertEq(deposit2After.escrowedAmount, deposit2Before.escrowedAmount, "deposit2 should have same escrowed amount as before");
1141+
assertFalse(deposit1After.withdrawalRequestOccurrence.exists, "deposit1 should have no withdrawal request");
1142+
assertFalse(deposit2After.withdrawalRequestOccurrence.exists, "deposit2 should have no withdrawal request");
1143+
1144+
vm.prank(bidderRegistry.preconfManager());
1145+
bidderRegistry.openBid(keccak256("commitment"), 1 ether, bidder, provider1);
1146+
}
1147+
11121148
function getDepositStruct(address bidderArg, address providerArg) public view returns (IBidderRegistry.Deposit memory deposit) {
11131149
(deposit.exists, deposit.availableAmount, deposit.escrowedAmount, deposit.withdrawalRequestOccurrence) = bidderRegistry.deposits(bidderArg, providerArg);
11141150
return deposit;
11151151
}
1116-
1117-
// TODO: Test staking/withdraw cycle for bidder to same provider
11181152
}
11191153

11201154
contract IncorrectBidderContract {

0 commit comments

Comments
 (0)