Skip to content

Commit

Permalink
Merge pull request #443 from NexusMutual/test/constructor-initialize-…
Browse files Browse the repository at this point in the history
…assessment

Test/ Add constructor and initialize assessment tests
  • Loading branch information
roxdanila committed Oct 26, 2022
2 parents 2290d62 + 45df632 commit 6a77b9d
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 4 deletions.
7 changes: 4 additions & 3 deletions contracts/mocks/Assessment/ASMockTokenController.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ contract ASMockTokenController {

INXMToken public token;

address public addToWhitelistLastCalledWith;

constructor(address tokenAddres) public {
token = INXMToken(tokenAddres);
}
Expand All @@ -21,8 +23,7 @@ contract ASMockTokenController {
token.mint(_to, _value);
}

function addToWhitelist(address) external returns (bool) {
// no-op
function addToWhitelist(address _member) public {
addToWhitelistLastCalledWith = _member;
}

}
2 changes: 1 addition & 1 deletion contracts/modules/assessment/Assessment.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import "../../libraries/SafeUintCast.sol";
/// to payouts. Mints rewards for stakers that act benevolently and allows burning fraudulent ones.
contract Assessment is IAssessment, MasterAwareV2 {

INXMToken internal immutable nxm;
INXMToken public immutable nxm;

/* ========== STATE VARIABLES ========== */

Expand Down
14 changes: 14 additions & 0 deletions test/unit/Assessment/constructor.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
const { expect } = require('chai');
const { ethers } = require('hardhat');

describe('constructor', function () {
it('should set nxm address correctly', async function () {
const { nxm } = this.contracts;

const Assessment = await ethers.getContractFactory('Assessment');
const assessment = await Assessment.deploy(nxm.address);
const nxmAddress = await assessment.nxm();

expect(nxmAddress).to.be.equal(nxm.address);
});
});
1 change: 1 addition & 0 deletions test/unit/Assessment/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ describe('Assessment', function () {
await revertToSnapshot(this.snapshotId);
});

require('./constructor');
require('./initialize');
require('./stake');
require('./unstake');
Expand Down
43 changes: 43 additions & 0 deletions test/unit/Assessment/initialize.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,51 @@
const { expect } = require('chai');
const { ethers } = require('hardhat');
const { hex } = require('../../utils').helpers;

describe('initialize', function () {
it('reverts if the contract was already initialized', async function () {
const { assessment } = this.contracts;
await expect(assessment.initialize()).to.be.revertedWith('Already initialized');
});

it('should set config parameters', async function () {
const { nxm, master } = this.contracts;

const Assessment = await ethers.getContractFactory('Assessment');
const assessment = await Assessment.deploy(nxm.address);

await master.setLatestAddress(hex('AS'), assessment.address);
await assessment.changeMasterAddress(master.address);
await assessment.changeDependentContractAddress();

const preInitializeConfig = await assessment.config();

expect(preInitializeConfig.minVotingPeriodInDays).to.be.equal(0);
expect(preInitializeConfig.stakeLockupPeriodInDays).to.be.equal(0);
expect(preInitializeConfig.payoutCooldownInDays).to.be.equal(0);
expect(preInitializeConfig.silentEndingPeriodInDays).to.be.equal(0);

await assessment.initialize();
const afterInitializeConfig = await assessment.config();

expect(afterInitializeConfig.minVotingPeriodInDays).to.be.equal(3);
expect(afterInitializeConfig.stakeLockupPeriodInDays).to.be.equal(14);
expect(afterInitializeConfig.payoutCooldownInDays).to.be.equal(1);
expect(afterInitializeConfig.silentEndingPeriodInDays).to.be.equal(1);
});

it('should be whitelisted', async function () {
const { tokenController, nxm, master } = this.contracts;

const Assessment = await ethers.getContractFactory('Assessment');
const assessment = await Assessment.deploy(nxm.address);

await master.setLatestAddress(hex('AS'), assessment.address);
await assessment.changeMasterAddress(master.address);
await assessment.changeDependentContractAddress();

expect(await tokenController.addToWhitelistLastCalledWith()).to.not.be.equal(assessment.address);
await assessment.initialize();
expect(await tokenController.addToWhitelistLastCalledWith()).to.be.equal(assessment.address);
});
});

0 comments on commit 6a77b9d

Please sign in to comment.