difftreelog
Tests up: remove unused methods
in: master
1 file changed
tests/src/app-promotion.test.tsdiffbeforeafterboth35let alice: IKeyringPair;35let alice: IKeyringPair;36let palletAdmin: IKeyringPair;36let palletAdmin: IKeyringPair;37let nominal: bigint;37let nominal: bigint;38let promotionStartBlock: number | null = null;39const palletAddress = calculatePalleteAddress('appstake');38const palletAddress = calculatePalleteAddress('appstake');40let accounts: IKeyringPair[] = [];39let accounts: IKeyringPair[] = [];414048 nominal = helper.balance.getOneTokenNominal();47 nominal = helper.balance.getOneTokenNominal();49 await helper.balance.transferToSubstrate(alice, palletAdmin.address, 1000n * nominal);48 await helper.balance.transferToSubstrate(alice, palletAdmin.address, 1000n * nominal);50 await helper.balance.transferToSubstrate(alice, palletAddress, 1000n * nominal);49 await helper.balance.transferToSubstrate(alice, palletAddress, 1000n * nominal);51 if (!promotionStartBlock) {52 promotionStartBlock = (await helper.api!.query.parachainSystem.lastRelayChainBlockNumber()).toNumber();53 }54 await helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.promotion.startAppPromotion(promotionStartBlock!)));55 accounts = await helper.arrange.createCrowd(100, 1000n, alice); // create accounts-pool to speed up tests50 accounts = await helper.arrange.createCrowd(100, 1000n, alice); // create accounts-pool to speed up tests56 });51 });57});52});5859after(async function () {60 await usingPlaygrounds(async (helper) => {61 await helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.promotion.stopAppPromotion()));62 });63});645365describe('app-promotions.stake extrinsic', () => {54describe('app-promotions.stake extrinsic', () => {66 it('should "lock" staking balance, add it to "staked" map, and increase "totalStaked" amount', async () => {55 it('should "lock" staking balance, add it to "staked" map, and increase "totalStaked" amount', async () => {91 });80 });92 });81 });938294 it('should allow to stake with nonce', async () => {83 it('should allow to create maximum 10 stakes for account', async () => {95 await usingPlaygrounds(async (helper) => {84 await usingPlaygrounds(async (helper) => {96 const staker = accounts.pop()!;85 const [staker] = await helper.arrange.createAccounts([2000n], alice);97 const transactions = [];86 console.log(staker.address);98 for (let nonce = 0; nonce < 9; nonce++) {87 for (let i = 0; i < 10; i++) {99 transactions.push(helper.signTransaction(staker, helper.api?.tx.promotion.stake(100n * nominal), 'Staker stakes with nonce', {nonce}));88 await helper.staking.stake(staker, 100n * nominal);100 }89 }9091 // can have 10 stakes92 expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(1000n * nominal);93 expect(await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).to.have.length(10);9495 await expect(helper.staking.stake(staker, 100n * nominal)).to.be.rejected;9697 // After unstake can stake again101 await Promise.allSettled(transactions);98 await helper.staking.unstake(staker);10299 await helper.staking.stake(staker, 100n * nominal);103 expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.be.equal(900n * nominal);100 expect(await helper.staking.getTotalStaked({Substrate: staker.address})).to.equal(100n * nominal);104 });101 });105 });102 });106 103 130 });127 });131 });128 });132133 it('should allow to create maximum 10 stakes for account', async () => {134135 });136});129});137130138describe('unstake balance extrinsic', () => { 131describe('unstake balance extrinsic', () => { 153 });146 });154 });147 });155148156 it('should unlock balance after unlocking period ends and subtract it from "pendingUnstake"', async () => {149 it('should unlock balance after unlocking period ends and remove it from "pendingUnstake"', async () => {150 // TODO Flaky test157 await usingPlaygrounds(async (helper) => {151 await usingPlaygrounds(async (helper) => {158 const staker = accounts.pop()!;152 const staker = accounts.pop()!;159 await helper.staking.stake(staker, 100n * nominal);153 await helper.staking.stake(staker, 100n * nominal);160 await helper.staking.unstake(staker);154 await helper.staking.unstake(staker);161155162 // Wait for unstaking period. Balance now free ~1000; reserved, frozen, miscFrozeb: 0n156 // Wait for unstaking period. Balance now free ~1000; reserved, frozen, miscFrozeb: 0n163 await waitForRelayBlock(helper.api!, 20);157 await waitForRelayBlock(helper.api!, 20);164 expect(await helper.balance.getSubstrateFull(staker.address)).to.deep.contain({reserved: 0n * nominal, miscFrozen: 0n, feeFrozen: 0n});158 expect(await helper.balance.getSubstrateFull(staker.address)).to.deep.contain({reserved: 0n, miscFrozen: 0n, feeFrozen: 0n});165 expect(await helper.balance.getSubstrate(staker.address) / nominal).to.be.equal(999n);159 expect(await helper.balance.getSubstrate(staker.address) / nominal).to.be.equal(999n);166160167 // staker can transfer:161 // staker can transfer:194 expect(stakedPerBlock).to.be.deep.equal([]);188 expect(stakedPerBlock).to.be.deep.equal([]);195 expect(unstakedPerBlock).to.be.deep.equal([600n * nominal]);189 expect(unstakedPerBlock).to.be.deep.equal([600n * nominal]);196190197 expect (await helper.balance.getSubstrateFull(staker.address)).to.deep.contain({reserved: 0n, feeFrozen: 600n * nominal, miscFrozen: 600n * nominal});191 expect (await helper.balance.getSubstrateFull(staker.address)).to.deep.contain({reserved: 600n * nominal, feeFrozen: 0n, miscFrozen: 0n});198 await waitForRelayBlock(helper.api!, 20);192 await waitForRelayBlock(helper.api!, 20);199 expect (await helper.balance.getSubstrateFull(staker.address)).to.deep.contain({reserved: 0n, feeFrozen: 0n, miscFrozen: 0n});193 expect (await helper.balance.getSubstrateFull(staker.address)).to.deep.contain({reserved: 0n, feeFrozen: 0n, miscFrozen: 0n});200 expect (await helper.balance.getSubstrate(staker.address) / nominal).to.be.equal(999n);194 expect (await helper.balance.getSubstrate(staker.address) / nominal).to.be.equal(999n);637 it('can not be called by non admin', async () => {631 it('can not be called by non admin', async () => {638 await usingPlaygrounds(async (helper) => {632 await usingPlaygrounds(async (helper) => {639 const nonAdmin = accounts.pop()!;633 const nonAdmin = accounts.pop()!;640 await expect(helper.signTransaction(nonAdmin, helper.api!.tx.promotion.payoutStakers(50))).to.be.rejected;634 await expect(helper.signTransaction(nonAdmin, helper.api!.tx.promotion.payoutStakers(100))).to.be.rejected;641 });635 });642 });636 });643637649 await helper.staking.stake(staker, 100n * nominal);643 await helper.staking.stake(staker, 100n * nominal);650 await helper.staking.stake(staker, 200n * nominal);644 await helper.staking.stake(staker, 200n * nominal);651 await waitForRelayBlock(helper.api!, 30);645 await waitForRelayBlock(helper.api!, 30);652 await helper.signTransaction(palletAdmin, helper.api!.tx.promotion.payoutStakers(50));646 await helper.signTransaction(palletAdmin, helper.api!.tx.promotion.payoutStakers(100));653647654 const totalStakedPerBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).map(s => s[1]);648 const totalStakedPerBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).map(s => s[1]);655 expect(totalStakedPerBlock).to.be.deep.equal([calculateIncome(100n * nominal, 10n), calculateIncome(200n * nominal, 10n)]);649 expect(totalStakedPerBlock).to.be.deep.equal([calculateIncome(100n * nominal, 10n), calculateIncome(200n * nominal, 10n)]);656 });650 });657 });651 });658652659 it('shoud be paid for more than one period if payments was missed', async () => {653 it('shoud be paid for more than one period if payments was missed', async () => {654 // TODO flaky test660 await usingPlaygrounds(async (helper) => {655 await usingPlaygrounds(async (helper) => {661 const staker = accounts.pop()!;656 const staker = accounts.pop()!;662657663 await helper.staking.stake(staker, 100n * nominal);658 await helper.staking.stake(staker, 100n * nominal);664 await helper.staking.stake(staker, 200n * nominal);659 await helper.staking.stake(staker, 200n * nominal);665660666 await waitForRelayBlock(helper.api!, 55);661 await waitForRelayBlock(helper.api!, 55);667 await helper.signTransaction(palletAdmin, helper.api!.tx.promotion.payoutStakers(50));662 await helper.signTransaction(palletAdmin, helper.api!.tx.promotion.payoutStakers(100));668 const stakedPerBlock = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});663 const stakedPerBlock = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});669 expect(stakedPerBlock[0][1]).to.be.equal(calculateIncome(100n * nominal, 10n, 2));664 expect(stakedPerBlock[0][1]).to.be.equal(calculateIncome(100n * nominal, 10n, 2));670 expect(stakedPerBlock[1][1]).to.be.equal(calculateIncome(200n * nominal, 10n, 2));665 expect(stakedPerBlock[1][1]).to.be.equal(calculateIncome(200n * nominal, 10n, 2));677 });672 });678 673 679 it('should not be credited for unstaked (reserved) balance', async () => {674 it('should not be credited for unstaked (reserved) balance', async () => {680 expect.fail('Test not implemented');681 await usingPlaygrounds(async helper => {675 await usingPlaygrounds(async helper => {676 // staker unstakes before rewards has been initialized682 const staker = accounts.pop()!;677 const staker = accounts.pop()!;678 await helper.staking.stake(staker, 100n * nominal);679 await waitForRelayBlock(helper.api!, 40);680 await helper.staking.unstake(staker);681 682 // so he did not receive any rewards683 const totalBalanceBefore = await helper.balance.getSubstrate(staker.address);684 await helper.signTransaction(palletAdmin, helper.api!.tx.promotion.payoutStakers(100));685 const totalBalanceAfter = await helper.balance.getSubstrate(staker.address);686687 expect(totalBalanceBefore).to.be.equal(totalBalanceAfter);683 });688 });684 });689 });685 690 693 await helper.staking.stake(staker, 300n * nominal);698 await helper.staking.stake(staker, 300n * nominal);694 699 695 await waitForRelayBlock(helper.api!, 34);700 await waitForRelayBlock(helper.api!, 34);696 await helper.signTransaction(palletAdmin, helper.api!.tx.promotion.payoutStakers(50));701 await helper.signTransaction(palletAdmin, helper.api!.tx.promotion.payoutStakers(100));697 let totalStakedPerBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).map(s => s[1]);702 let totalStakedPerBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).map(s => s[1]);698 expect(totalStakedPerBlock).to.deep.equal([calculateIncome(100n * nominal, 10n), calculateIncome(200n * nominal, 10n), calculateIncome(300n * nominal, 10n)]);703 expect(totalStakedPerBlock).to.deep.equal([calculateIncome(100n * nominal, 10n), calculateIncome(200n * nominal, 10n), calculateIncome(300n * nominal, 10n)]);699 704 700 await waitForRelayBlock(helper.api!, 20);705 await waitForRelayBlock(helper.api!, 20);701 await helper.signTransaction(palletAdmin, helper.api!.tx.promotion.payoutStakers(50));706 await helper.signTransaction(palletAdmin, helper.api!.tx.promotion.payoutStakers(100));702 totalStakedPerBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).map(s => s[1]);707 totalStakedPerBlock = (await helper.staking.getTotalStakedPerBlock({Substrate: staker.address})).map(s => s[1]);703 expect(totalStakedPerBlock).to.deep.equal([calculateIncome(100n * nominal, 10n, 2), calculateIncome(200n * nominal, 10n, 2), calculateIncome(300n * nominal, 10n, 2)]); 708 expect(totalStakedPerBlock).to.deep.equal([calculateIncome(100n * nominal, 10n, 2), calculateIncome(200n * nominal, 10n, 2), calculateIncome(300n * nominal, 10n, 2)]); 704 });709 });