@@ -3,7 +3,9 @@ pragma solidity 0.8.25;
33
44import {CollateralTestBase} from "./CollateralTestBase.sol " ;
55import {CollateralManagementContract} from "../../src/CollateralManagement.sol " ;
6+ import {ICollateralManagement} from "../../src/interfaces/ICollateralManagement.sol " ;
67import {IAccessControl} from "@openzeppelin/contracts/access/IAccessControl.sol " ;
8+ import {ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol " ;
79import {Flyover} from "../../src/libraries/Flyover.sol " ;
810
911contract ConfigurationTest is CollateralTestBase {
@@ -94,6 +96,63 @@ contract ConfigurationTest is CollateralTestBase {
9496 );
9597 }
9698
99+ function test_Initialize_RevertsWhenRewardPercentageExceedsMaximum ()
100+ public
101+ {
102+ uint256 invalidRewardPercentage = collateralManagement
103+ .TOTAL_REWARD_PERCENTAGE () + 1 ;
104+ CollateralManagementContract implementation = new CollateralManagementContract ();
105+ bytes memory initData = abi.encodeCall (
106+ CollateralManagementContract.initialize,
107+ (
108+ owner,
109+ TEST_DEFAULT_ADMIN_DELAY,
110+ TEST_MIN_COLLATERAL,
111+ TEST_RESIGN_DELAY_BLOCKS,
112+ invalidRewardPercentage
113+ )
114+ );
115+
116+ vm.expectRevert (
117+ abi.encodeWithSelector (
118+ ICollateralManagement.InvalidRewardPercentage.selector ,
119+ collateralManagement.TOTAL_REWARD_PERCENTAGE (),
120+ invalidRewardPercentage
121+ )
122+ );
123+ new ERC1967Proxy (address (implementation), initData);
124+ }
125+
126+ function test_Initialize_AllowsMaximumBoundary () public {
127+ uint256 maxRewardPercentage = collateralManagement
128+ .TOTAL_REWARD_PERCENTAGE ();
129+ CollateralManagementContract implementation = new CollateralManagementContract ();
130+ bytes memory initData = abi.encodeCall (
131+ CollateralManagementContract.initialize,
132+ (
133+ owner,
134+ TEST_DEFAULT_ADMIN_DELAY,
135+ TEST_MIN_COLLATERAL,
136+ TEST_RESIGN_DELAY_BLOCKS,
137+ maxRewardPercentage
138+ )
139+ );
140+
141+ ERC1967Proxy proxy = new ERC1967Proxy (
142+ address (implementation),
143+ initData
144+ );
145+ CollateralManagementContract collateralManagementWithMaxReward = CollateralManagementContract (
146+ payable (address (proxy))
147+ );
148+
149+ assertEq (
150+ collateralManagementWithMaxReward.getRewardPercentage (),
151+ maxRewardPercentage,
152+ "Initialize should accept maximum basis points value "
153+ );
154+ }
155+
97156 // ============ setRewardPercentage function tests ============
98157
99158 function test_SetRewardPercentage_OnlyAllowsOwnerToModify () public {
@@ -130,6 +189,51 @@ contract ConfigurationTest is CollateralTestBase {
130189 );
131190 }
132191
192+ function test_SetRewardPercentage_RevertsWhenExceedingMaximum () public {
193+ uint256 initialRewardPercentage = collateralManagement
194+ .getRewardPercentage ();
195+ uint256 invalidRewardPercentage = collateralManagement
196+ .TOTAL_REWARD_PERCENTAGE () + 1 ;
197+
198+ vm.startPrank (owner);
199+ vm.expectRevert (
200+ abi.encodeWithSelector (
201+ ICollateralManagement.InvalidRewardPercentage.selector ,
202+ collateralManagement.TOTAL_REWARD_PERCENTAGE (),
203+ invalidRewardPercentage
204+ )
205+ );
206+ collateralManagement.setRewardPercentage (invalidRewardPercentage);
207+ vm.stopPrank ();
208+
209+ assertEq (
210+ collateralManagement.getRewardPercentage (),
211+ initialRewardPercentage,
212+ "RewardPercentage should remain unchanged after revert "
213+ );
214+ }
215+
216+ function test_SetRewardPercentage_AllowsMaximumBoundary () public {
217+ uint256 oldRewardPercentage = collateralManagement
218+ .getRewardPercentage ();
219+ uint256 maxRewardPercentage = collateralManagement
220+ .TOTAL_REWARD_PERCENTAGE ();
221+
222+ vm.prank (owner);
223+ vm.expectEmit (true , true , false , false );
224+ emit CollateralManagementContract.RewardPercentageSet (
225+ oldRewardPercentage,
226+ maxRewardPercentage
227+ );
228+ collateralManagement.setRewardPercentage (maxRewardPercentage);
229+
230+ assertEq (
231+ collateralManagement.getRewardPercentage (),
232+ maxRewardPercentage,
233+ "RewardPercentage should accept maximum basis points value "
234+ );
235+ }
236+
133237 // ============ setResignDelayInBlocks function tests ============
134238
135239 function test_SetResignDelayInBlocks_OnlyAllowsOwnerToModify () public {
0 commit comments