Skip to content

Commit

Permalink
add testing
Browse files Browse the repository at this point in the history
  • Loading branch information
SamBorisov committed Nov 11, 2024
1 parent 3596886 commit 15d71cd
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 7 deletions.
11 changes: 7 additions & 4 deletions test/HydraStaking/HydraStaking.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,13 @@ export function RunHydraStakingTests(): void {

expect(await hydraStaking.MIN_STAKE_LIMIT()).to.equal(this.minStake);

// Liquid Delegation
// Vested Staking
expect(await hydraStaking.vestingLiquidityDecreasePerWeek()).to.equal(0);
expect(await hydraStaking.liquidToken()).to.equal(hre.ethers.constants.AddressZero);

expect(await hydraStaking.DENOMINATOR()).to.equal(DENOMINATOR);

// Liquid Delegation
expect(await hydraStaking.liquidToken()).to.equal(hre.ethers.constants.AddressZero);

// Withdrawable
expect(await hydraStaking.withdrawWaitPeriod()).to.equal(0);
});
Expand Down Expand Up @@ -118,8 +119,10 @@ export function RunHydraStakingTests(): void {
).to.be.true;
expect(await hydraStaking.lastDistribution()).to.not.equal(0);

// Liquid Delegation
// Vested Staking
expect(await hydraStaking.vestingLiquidityDecreasePerWeek()).to.equal(133);

// Liquid Delegation
expect(await hydraStaking.liquidToken(), "liquidToken").to.equal(liquidToken.address);

// Withdrawable
Expand Down
39 changes: 39 additions & 0 deletions test/HydraStaking/VestedStaking.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { expect } from "chai";
import { loadFixture, time, mine } from "@nomicfoundation/hardhat-network-helpers";

import {
calcLiquidTokensToDistributeOnVesting,
calculatePenalty,
calculatePenaltyByWeeks,
commitEpochs,
Expand Down Expand Up @@ -66,6 +67,17 @@ export function RunVestedStakingTests(): void {
.to.be.revertedWithCustomError(stakerHydraStaking, "StakeRequirement")
.withArgs("stakeWithVesting", "ALREADY_IN_VESTING_CYCLE");
});

it("should add debt to staker when opening a vested position", async function () {
const { hydraStaking, liquidToken } = await loadFixture(this.fixtures.newVestingValidatorFixture);

const liquidTokens = calcLiquidTokensToDistributeOnVesting(VESTING_DURATION_WEEKS, this.minStake);

expect(await liquidToken.balanceOf(this.staker.address)).to.be.equal(liquidTokens);
expect(await hydraStaking.liquidityDebts(this.staker.address)).to.be.equal(
this.minStake.sub(liquidTokens).mul(-1)
);
});
});

describe("decrease staking position with unstake()", function () {
Expand All @@ -79,6 +91,33 @@ export function RunVestedStakingTests(): void {
.withArgs("ONLY_HYDRA_CHAIN");
});

it("should lower the debt on unstake", async function () {
const { hydraStaking, liquidToken } = await loadFixture(this.fixtures.registeredValidatorsStateFixture);

await hydraStaking
.connect(this.signers.validators[0])
.stakeWithVesting(VESTING_DURATION_WEEKS, { value: this.minStake.mul(2) });

const liquidTokens = calcLiquidTokensToDistributeOnVesting(VESTING_DURATION_WEEKS, this.minStake.mul(2));
const liquidDebt = await hydraStaking.liquidityDebts(this.signers.validators[0].address);

expect(liquidDebt).to.be.equal(this.minStake.mul(2).sub(liquidTokens).mul(-1));

const ownedTokens = await hydraStaking.calculateOwedLiquidTokens(
this.signers.validators[0].address,
this.minStake.div(2)
);

const balanceBefore = await liquidToken.balanceOf(this.signers.validators[0].address);

await hydraStaking.connect(this.signers.validators[0]).unstake(this.minStake.div(2));

expect(await hydraStaking.liquidityDebts(this.signers.validators[0].address)).to.be.equal(0);
expect(await liquidToken.balanceOf(this.signers.validators[0].address)).to.be.equal(
balanceBefore.sub(ownedTokens)
);
});

it("should get staker penalty and rewards must return 0 (burned), if closing from active position", async function () {
const { stakerHydraStaking, systemHydraChain, hydraStaking } = await loadFixture(
this.fixtures.newVestingValidatorFixture
Expand Down
4 changes: 1 addition & 3 deletions test/helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -545,9 +545,7 @@ export async function calcExpectedPositionRewardForActivePosition(

export function calcLiquidTokensToDistributeOnVesting(durationWeeks: number, delegateAmount: BigNumber) {
const decrease = durationWeeks * 133;
const denominator = 10000;

return delegateAmount.sub(delegateAmount.mul(decrease).div(denominator));
return delegateAmount.sub(delegateAmount.mul(decrease).div(DENOMINATOR));
}

export function getCorrectVotingTimestamp() {
Expand Down

0 comments on commit 15d71cd

Please sign in to comment.