From 65dd861347570fea3efa45c57ace5ebb4ab8acf6 Mon Sep 17 00:00:00 2001 From: Krzysztof Szostak Date: Mon, 22 Nov 2021 12:26:50 +0100 Subject: [PATCH] feat: add hardcap to staking pool, improve tests --- ...staking_pool_service.StakingPoolService.md | 22 ++++++++++ e2e/staking-pool.e2e.ts | 40 ++++++++++++++----- src/modules/staking/staking-pool.service.ts | 8 ++++ 3 files changed, 60 insertions(+), 10 deletions(-) diff --git a/docs/api/classes/modules_staking_staking_pool_service.StakingPoolService.md b/docs/api/classes/modules_staking_staking_pool_service.StakingPoolService.md index b5bdd1cf..2d56229c 100644 --- a/docs/api/classes/modules_staking_staking_pool_service.StakingPoolService.md +++ b/docs/api/classes/modules_staking_staking_pool_service.StakingPoolService.md @@ -13,6 +13,8 @@ Abstraction over staking pool smart contract ### Methods - [checkReward](modules_staking_staking_pool_service.StakingPoolService.md#checkreward) +- [getContributionLimit](modules_staking_staking_pool_service.StakingPoolService.md#getcontributionlimit) +- [getHardCap](modules_staking_staking_pool_service.StakingPoolService.md#gethardcap) - [getStake](modules_staking_staking_pool_service.StakingPoolService.md#getstake) - [putStake](modules_staking_staking_pool_service.StakingPoolService.md#putstake) - [withdraw](modules_staking_staking_pool_service.StakingPoolService.md#withdraw) @@ -44,6 +46,26 @@ Accumulated reward ___ +### getContributionLimit + +▸ **getContributionLimit**(): `Promise`<`BigNumber`\> + +#### Returns + +`Promise`<`BigNumber`\> + +___ + +### getHardCap + +▸ **getHardCap**(): `Promise`<`BigNumber`\> + +#### Returns + +`Promise`<`BigNumber`\> + +___ + ### getStake ▸ **getStake**(): `Promise`<[`Stake`](../modules/modules_staking_staking_service.md#stake)\> diff --git a/e2e/staking-pool.e2e.ts b/e2e/staking-pool.e2e.ts index c11fb17e..22d0fa0e 100644 --- a/e2e/staking-pool.e2e.ts +++ b/e2e/staking-pool.e2e.ts @@ -50,25 +50,26 @@ jest.mock("../src/modules/cacheClient/cacheClient.service", () => { }; }); +const duration = 3600 * 24 * 7; + +const oneEWT = utils.parseUnits("1", "ether"); +const hardCap = utils.parseUnits("2", "ether"); +const contributionLimit = oneEWT.mul(50000); + +const ratio = 0.0002225; +const ratioInt = utils.parseUnits(ratio.toString(), 18); + +const rewards = oneEWT.mul(11); + export const setupStakingPoolFactory = async () => { const { chainId } = await deployer.provider.getNetwork(); const { claimManagerAddress } = chainConfigs()[chainId]; const { timestamp } = await deployer.provider.getBlock("latest"); - const duration = 3600 * 24 * 7; const start = timestamp + 10; const end = start + duration; - const oneEWT = utils.parseUnits("1", "ether"); - const hardCap = utils.parseUnits("2", "ether"); - const contributionLimit = oneEWT.mul(50000); - - const ratio = 0.0002225; - const ratioInt = utils.parseUnits(ratio.toString(), 18); - - const rewards = oneEWT.mul(11); - const stakingPoolFactory = await ( await new StakingPool__factory(deployer).deploy( claimManagerAddress, @@ -164,6 +165,9 @@ describe("StakingPool tests", () => { const stakeAfterWithdraw = await pool.getStake(); expect(stakeAfterWithdraw.amount.toNumber()).toBe(0); + + const { status } = await pool.getStake(); + expect(status).toBe(StakeStatus.NONSTAKING); }); it("should withdraw without reward", async () => { @@ -183,4 +187,20 @@ describe("StakingPool tests", () => { expect(stake.status).toBe(StakeStatus.NONSTAKING); }); + + it("should return hardcap", async () => { + const pool = await stakingPoolService.getPool(); + + const poolHardCap = await pool.getHardCap(); + + expect(poolHardCap.eq(hardCap)).toEqual(true); + }); + + it("should return contribution limit", async () => { + const pool = await stakingPoolService.getPool(); + + const poolContributionLimit = await pool.getContributionLimit(); + + expect(poolContributionLimit.eq(contributionLimit)).toEqual(true); + }); }); diff --git a/src/modules/staking/staking-pool.service.ts b/src/modules/staking/staking-pool.service.ts index 0595d976..239c326a 100644 --- a/src/modules/staking/staking-pool.service.ts +++ b/src/modules/staking/staking-pool.service.ts @@ -61,6 +61,14 @@ export class StakingPoolService { ).attach(address); } + async getHardCap(): Promise { + return this.pool.connect(this.signerService.signer).hardCap(); + } + + async getContributionLimit(): Promise { + return this.pool.connect(this.signerService.signer).contributionLimit(); + } + /** * @description Locks stake and starts accumulating reward * @emits StakingPool.StakePut