From 75019247cf53c390c89e1c0498f56f327367a2ab Mon Sep 17 00:00:00 2001 From: pahor167 Date: Sun, 13 Oct 2024 20:31:37 +0200 Subject: [PATCH] setToProcessGroups unit tests --- .../contracts-0.8/common/EpochManager.sol | 2 +- .../test-sol/unit/common/EpochManager.t.sol | 79 +++++++++++++++++++ 2 files changed, 80 insertions(+), 1 deletion(-) diff --git a/packages/protocol/contracts-0.8/common/EpochManager.sol b/packages/protocol/contracts-0.8/common/EpochManager.sol index 0a5f8a147ce..b028217c882 100644 --- a/packages/protocol/contracts-0.8/common/EpochManager.sol +++ b/packages/protocol/contracts-0.8/common/EpochManager.sol @@ -60,7 +60,7 @@ contract EpochManager is mapping(uint256 => Epoch) internal epochs; mapping(address => uint256) public validatorPendingPayments; - uint256 toProcessGroups = 0; + uint256 public toProcessGroups = 0; /** * @notice Event emited when epochProcessing has begun. diff --git a/packages/protocol/test-sol/unit/common/EpochManager.t.sol b/packages/protocol/test-sol/unit/common/EpochManager.t.sol index a2808b24e94..af0fa4f883d 100644 --- a/packages/protocol/test-sol/unit/common/EpochManager.t.sol +++ b/packages/protocol/test-sol/unit/common/EpochManager.t.sol @@ -25,6 +25,7 @@ import { MockElection } from "@celo-contracts/governance/test/MockElection.sol"; import { MockAccounts } from "@celo-contracts-8/common/mocks/MockAccounts.sol"; import { ValidatorsMock } from "@test-sol/unit/governance/validators/mocks/ValidatorsMock.sol"; import { MockCeloUnreleasedTreasury } from "@celo-contracts-8/common/test/MockCeloUnreleasedTreasury.sol"; +import {console} from "forge-std/console.sol"; contract EpochManagerTest is Test, TestConstants, Utils08 { EpochManager_WithMocks epochManager; @@ -625,6 +626,84 @@ contract EpochManagerTest_finishNextEpochProcess is EpochManagerTest { } } +contract EpochManagerTest_setToProcessGroups is EpochManagerTest { + address signer1 = actor("signer1"); + address signer2 = actor("signer2"); + + address validator3 = actor("validator3"); + address validator4 = actor("validator4"); + + address group2 = actor("group2"); + + address[] elected; + + uint256 groupEpochRewards = 44e18; + + function setUp() public override { + super.setUp(); + + validators.setValidatorGroup(group); + validators.setValidator(validator1); + accounts.setValidatorSigner(validator1, signer1); + validators.setValidator(validator2); + accounts.setValidatorSigner(validator2, signer2); + + validators.setValidatorGroup(group2); + validators.setValidator(validator3); + validators.setValidator(validator4); + + address[] memory members = new address[](3); + members[0] = validator1; + members[1] = validator2; + validators.setMembers(group, members); + members[0] = validator3; + members[1] = validator4; + validators.setMembers(group2, members); + + vm.prank(epochManagerEnabler); + initializeEpochManagerSystem(); + + elected = epochManager.getElected(); + + election.setGroupEpochRewardsBasedOnScore(group, groupEpochRewards); + } + + function test_Reverts_WhenNotStarted() public { + address[] memory groups = new address[](0); + + vm.expectRevert("Epoch process is not started"); + epochManager.setToProcessGroups(); + } + + function test_setsToProcessGroups() public { + ( + address[] memory groups, + address[] memory lessers, + address[] memory greaters + ) = getGroupsWithLessersAndGreaters(); + + epochManager.startNextEpochProcess(); + epochManager.setToProcessGroups(); + + assertEq(EpochManager(address(epochManager)).toProcessGroups(), groups.length); + } + + function test_setsGroupRewards() public { + ( + address[] memory groups, + address[] memory lessers, + address[] memory greaters + ) = getGroupsWithLessersAndGreaters(); + + epochManager.startNextEpochProcess(); + epochManager.setToProcessGroups(); + + for (uint256 i = 0; i < groups.length; i++) { + assertEq(EpochManager(address(epochManager)).processedGroups(group), groupEpochRewards); + } + } +} + contract EpochManagerTest_getEpochByNumber is EpochManagerTest { function _travelAndProcess_N_L2Epoch(uint256 n) public { for (uint256 i = 0; i < n; i++) {