git.delta.rocks / unique-network / refs/commits / 1021988cbcec

difftreelog

Tests up: remove unused methods

Maksandre2022-09-02parent: #06fa986.patch.diff
in: master

1 file changed

modifiedtests/src/app-promotion.test.tsdiffbeforeafterboth
35let 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[] = [];
4140
48 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 tests
56 });51 });
57});52});
58
59after(async function () {
60 await usingPlaygrounds(async (helper) => {
61 await helper.signTransaction(alice, helper.api!.tx.sudo.sudo(helper.api!.tx.promotion.stopAppPromotion()));
62 });
63});
6453
65describe('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 });
9382
94 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 }
90
91 // can have 10 stakes
92 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);
94
95 await expect(helper.staking.stake(staker, 100n * nominal)).to.be.rejected;
96
97 // After unstake can stake again
101 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 });
132
133 it('should allow to create maximum 10 stakes for account', async () => {
134
135 });
136});129});
137130
138describe('unstake balance extrinsic', () => { 131describe('unstake balance extrinsic', () => {
153 });146 });
154 });147 });
155148
156 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 test
157 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);
161155
162 // Wait for unstaking period. Balance now free ~1000; reserved, frozen, miscFrozeb: 0n156 // Wait for unstaking period. Balance now free ~1000; reserved, frozen, miscFrozeb: 0n
163 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);
166160
167 // 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]);
196190
197 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 });
643637
649 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));
653647
654 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 });
658652
659 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 test
660 await usingPlaygrounds(async (helper) => {655 await usingPlaygrounds(async (helper) => {
661 const staker = accounts.pop()!;656 const staker = accounts.pop()!;
662657
663 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);
665660
666 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 initialized
682 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 rewards
683 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);
686
687 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 });