diff --git a/test/testVester.ts b/test/testVester.ts index 210eefc..8c63084 100644 --- a/test/testVester.ts +++ b/test/testVester.ts @@ -19,6 +19,13 @@ describe("Vester", function () { await cec.setMinter(owner.address, true); await esCec.setMinter(owner.address, true); + const RewardDistributor = await hre.ethers.getContractFactory("RewardDistributor"); + + const RewardTracker = await hre.ethers.getContractFactory("RewardTracker"); + const stakedCecTracker = await RewardTracker.deploy("Staked CEC", "sCEC"); + const stakedCecDistributor = await RewardDistributor.deploy(esCec.target, stakedCecTracker.target); + await stakedCecTracker.initialize([cec.target, esCec.target], stakedCecDistributor.target); + await stakedCecDistributor.updateLastDistributionTime(); const Vester = await hre.ethers.getContractFactory("Vester"); const vester = await Vester.deploy( @@ -28,26 +35,26 @@ describe("Vester", function () { esCec.target, ZeroAddress, cec.target, - ZeroAddress, - false + stakedCecTracker.target, + true ); await cec.mint(owner.address, expandDecimals(100000, 18)); await esCec.mint(owner.address, expandDecimals(100000, 18)); - return {owner, otherAccount, chainId, cec, esCec, vester}; + return {owner, otherAccount, chainId, cec, esCec, vester, stakedCecTracker}; } describe("Deployment", function () { it("should deploy Vester", async function () { - const {cec, esCec, vester} = await loadFixture(deployOneContract); + const {cec, esCec, vester, stakedCecTracker} = await loadFixture(deployOneContract); expect(await vester.name()).eq("Vested CEC"); expect(await vester.symbol()).eq("veCEC"); expect(await vester.vestingDuration()).eq(secondsPerYear); expect(await vester.esToken()).eq(esCec.target); expect(await vester.pairToken()).eq(ZeroAddress); expect(await vester.claimableToken()).eq(cec.target); - expect(await vester.rewardTracker()).eq(ZeroAddress); + expect(await vester.rewardTracker()).eq(stakedCecTracker.target); expect(await vester.hasPairToken()).eq(false); - expect(await vester.hasRewardTracker()).eq(false); + expect(await vester.hasRewardTracker()).eq(true); }); it("setCumulativeRewardDeductions", async () => { @@ -74,7 +81,7 @@ describe("Vester", function () { }); it("deposit, claim, withdraw", async () => { - const {owner, otherAccount, cec, esCec, vester} = await loadFixture(deployOneContract); + const {owner, otherAccount, cec, esCec, vester, stakedCecTracker} = await loadFixture(deployOneContract); const wallet = owner; const user0 = otherAccount; const provider = wallet.provider; @@ -103,6 +110,20 @@ describe("Vester", function () { await esCec.mint(user0.address, expandDecimals(1000, 18)); await vester.setBonusRewards(user0.address, expandDecimals(10_000, 18)); + + // @ts-ignore + await expect(vester.connect(user0).deposit(expandDecimals(1000, 18))).to.be.revertedWith( + "Vester: insufficient cec balance", + ); + + await stakedCecTracker.setHandler(user0.address, true); + await cec.setMinter(wallet.address, true); + await cec.mint(user0.address, expandDecimals(1000, 18)); + // @ts-ignore + await cec.connect(user0).approve(stakedCecTracker.target, expandDecimals(1000, 18)); + // @ts-ignore + await stakedCecTracker.connect(user0).stakeForAccount(user0.address, user0.address, cec.target, expandDecimals(1000, 18)); + // @ts-ignore await vester.connect(user0).deposit(expandDecimals(1000, 18));