@@ -3,6 +3,7 @@ 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 " ;
78import {ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol " ;
89import {Flyover} from "../../src/libraries/Flyover.sol " ;
@@ -105,7 +106,67 @@ contract ConfigurationTest is CollateralTestBase {
105106 TEST_DEFAULT_ADMIN_DELAY,
106107 TEST_MIN_COLLATERAL,
107108 TEST_RESIGN_DELAY_BLOCKS,
108- TEST_REWARD_PERCENTAGE
109+ TEST_REWARD_PERCENTAGE,
110+ pauseRegistry
111+ );
112+ }
113+
114+ function test_Initialize_RevertsWhenRewardPercentageExceedsMaximum ()
115+ public
116+ {
117+ uint256 invalidRewardPercentage = collateralManagement
118+ .TOTAL_REWARD_PERCENTAGE () + 1 ;
119+ CollateralManagementContract implementation = new CollateralManagementContract ();
120+ bytes memory initData = abi.encodeCall (
121+ CollateralManagementContract.initialize,
122+ (
123+ owner,
124+ TEST_DEFAULT_ADMIN_DELAY,
125+ TEST_MIN_COLLATERAL,
126+ TEST_RESIGN_DELAY_BLOCKS,
127+ invalidRewardPercentage,
128+ pauseRegistry
129+ )
130+ );
131+
132+ vm.expectRevert (
133+ abi.encodeWithSelector (
134+ ICollateralManagement.InvalidRewardPercentage.selector ,
135+ collateralManagement.TOTAL_REWARD_PERCENTAGE (),
136+ invalidRewardPercentage
137+ )
138+ );
139+ new ERC1967Proxy (address (implementation), initData);
140+ }
141+
142+ function test_Initialize_AllowsMaximumBoundary () public {
143+ uint256 maxRewardPercentage = collateralManagement
144+ .TOTAL_REWARD_PERCENTAGE ();
145+ CollateralManagementContract implementation = new CollateralManagementContract ();
146+ bytes memory initData = abi.encodeCall (
147+ CollateralManagementContract.initialize,
148+ (
149+ owner,
150+ TEST_DEFAULT_ADMIN_DELAY,
151+ TEST_MIN_COLLATERAL,
152+ TEST_RESIGN_DELAY_BLOCKS,
153+ maxRewardPercentage,
154+ pauseRegistry
155+ )
156+ );
157+
158+ ERC1967Proxy proxy = new ERC1967Proxy (
159+ address (implementation),
160+ initData
161+ );
162+ CollateralManagementContract collateralManagementWithMaxReward = CollateralManagementContract (
163+ payable (address (proxy))
164+ );
165+
166+ assertEq (
167+ collateralManagementWithMaxReward.getRewardPercentage (),
168+ maxRewardPercentage,
169+ "Initialize should accept maximum basis points value "
109170 );
110171 }
111172
@@ -145,6 +206,51 @@ contract ConfigurationTest is CollateralTestBase {
145206 );
146207 }
147208
209+ function test_SetRewardPercentage_RevertsWhenExceedingMaximum () public {
210+ uint256 initialRewardPercentage = collateralManagement
211+ .getRewardPercentage ();
212+ uint256 invalidRewardPercentage = collateralManagement
213+ .TOTAL_REWARD_PERCENTAGE () + 1 ;
214+
215+ vm.startPrank (owner);
216+ vm.expectRevert (
217+ abi.encodeWithSelector (
218+ ICollateralManagement.InvalidRewardPercentage.selector ,
219+ collateralManagement.TOTAL_REWARD_PERCENTAGE (),
220+ invalidRewardPercentage
221+ )
222+ );
223+ collateralManagement.setRewardPercentage (invalidRewardPercentage);
224+ vm.stopPrank ();
225+
226+ assertEq (
227+ collateralManagement.getRewardPercentage (),
228+ initialRewardPercentage,
229+ "RewardPercentage should remain unchanged after revert "
230+ );
231+ }
232+
233+ function test_SetRewardPercentage_AllowsMaximumBoundary () public {
234+ uint256 oldRewardPercentage = collateralManagement
235+ .getRewardPercentage ();
236+ uint256 maxRewardPercentage = collateralManagement
237+ .TOTAL_REWARD_PERCENTAGE ();
238+
239+ vm.prank (owner);
240+ vm.expectEmit (true , true , false , false );
241+ emit CollateralManagementContract.RewardPercentageSet (
242+ oldRewardPercentage,
243+ maxRewardPercentage
244+ );
245+ collateralManagement.setRewardPercentage (maxRewardPercentage);
246+
247+ assertEq (
248+ collateralManagement.getRewardPercentage (),
249+ maxRewardPercentage,
250+ "RewardPercentage should accept maximum basis points value "
251+ );
252+ }
253+
148254 // ============ setResignDelayInBlocks function tests ============
149255
150256 function test_SetResignDelayInBlocks_OnlyAllowsOwnerToModify () public {
0 commit comments