git.delta.rocks / unique-network / refs/commits / e963dbc80cee

difftreelog

Add appPromotion + vesting test

Max Andreev2022-12-08parent: #a738451.patch.diff
in: master

1 file changed

modifiedtests/src/app-promotion.test.tsdiffbeforeafterboth
524 });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);
570
571 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 609
610 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);
621
622 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()!;