difftreelog
Add appPromotion + vesting test
in: master
1 file changed
tests/src/app-promotion.test.tsdiffbeforeafterboth524 });524 });525 });525 });526 526 527 describe('rewards', () => {527 describe('payoutStakers', () => {528 itSub('can not be called by non admin', async ({helper}) => {528 itSub('can not be called by non admin', async ({helper}) => {529 const nonAdmin = accounts.pop()!;529 const nonAdmin = accounts.pop()!;530 await expect(helper.admin.payoutStakers(nonAdmin, 100)).to.be.rejectedWith('appPromotion.NoPermission');530 await expect(helper.admin.payoutStakers(nonAdmin, 100)).to.be.rejectedWith('appPromotion.NoPermission');563 expect(payoutToStaker + 300n * nominal).to.equal(calculateIncome(300n * nominal));563 expect(payoutToStaker + 300n * nominal).to.equal(calculateIncome(300n * nominal));564 564 565 const totalStakedPerBlock = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});565 const totalStakedPerBlock = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});566 const income1 = calculateIncome(100n * nominal);567 const income2 = calculateIncome(200n * nominal);566 expect(totalStakedPerBlock[0].amount).to.equal(calculateIncome(100n * nominal));568 expect(totalStakedPerBlock[0].amount).to.equal(income1);567 expect(totalStakedPerBlock[1].amount).to.equal(calculateIncome(200n * nominal));569 expect(totalStakedPerBlock[1].amount).to.equal(income2);570571 const stakerBalance = await helper.balance.getSubstrateFull(staker.address);572 expect(stakerBalance).to.contain({miscFrozen: income1 + income2, feeFrozen: income1 + income2, reserved: 0n});573 expect(stakerBalance.free / nominal).to.eq(999n);568 });574 });569 575 570 itSub('shoud be paid for more than one period if payments was missed', async ({helper}) => {576 itSub('shoud be paid for more than one period if payments was missed', async ({helper}) => {601 expect(totalBalanceBefore).to.be.equal(totalBalanceAfter);607 expect(totalBalanceBefore).to.be.equal(totalBalanceAfter);602 });608 });603 609610 itSub('should not be credited for vested balance', async ({helper}) => {611 const [staker, sender] = [accounts.pop()!, accounts.pop()!];612 // Staker has frozen vested transfer of 500 tokens:613 await helper.balance.vestedTransfer(sender, staker.address, {start: 1000n, period: 10n, periodCount: 1n, perPeriod: 500n * nominal});614 // Staker has frozen vested transfer of 500 tokens:615 await helper.staking.stake(staker, 100n * nominal);616 let [stake] = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});617 // Staker's full balance inludes vested transfer and staked amount:618 const stakerBalance = await helper.balance.getSubstrateFull(staker.address);619 expect(stakerBalance).to.contain({miscFrozen: 600n * nominal, feeFrozen: 600n * nominal, reserved: 0n});620 expect(stakerBalance.free / nominal).to.eq(1499n);621622 await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stake.block) + LOCKING_PERIOD);623 await helper.admin.payoutStakers(palletAdmin, 100);624 // Staker got reward only for 100 staked tokens:625 [stake] = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});626 expect(stake.amount).to.be.equal(calculateIncome(100n * nominal, 2));627 });628 604 itSub('should bring compound interest', async ({helper}) => {629 itSub('should bring compound interest', async ({helper}) => {605 const staker = accounts.pop()!;630 const staker = accounts.pop()!;