difftreelog
Add more event-tests
in: master
2 files changed
tests/src/sub/appPromotion/appPromotion.test.tsdiffbeforeafterboth--- a/tests/src/sub/appPromotion/appPromotion.test.ts
+++ b/tests/src/sub/appPromotion/appPromotion.test.ts
@@ -795,7 +795,7 @@
const [_stake1, stake2] = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});
await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stake2.block));
- const payoutToStaker = (await helper.admin.payoutStakers(palletAdmin, 100)).find((payout) => payout.staker === staker.address)?.payout;
+ const payoutToStaker = (await helper.admin.payoutStakers(palletAdmin, 100)).find((payout) => payout.staker === staker.address)!.payout;
expect(payoutToStaker + 300n * nominal).to.equal(calculateIncome(300n * nominal));
const totalStakedPerBlock = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});
@@ -906,17 +906,53 @@
{method: 'unstakePartial' as const},
{method: 'unstakeAll' as const},
].map(testCase => {
- itSub.only('unstakePartial', async ({helper}) => {
- const unstakeingParams = testCase.method === 'unstakePartial' ? [100n * nominal - 1n] : [];
+ itSub(testCase.method, async ({helper}) => {
+ const unstakeParams = testCase.method === 'unstakePartial'
+ ? [100n * nominal - 1n]
+ : [];
const [staker] = getAccount(1);
await helper.staking.stake(staker, 100n * nominal);
await helper.staking.stake(staker, 200n * nominal);
- const {result} = await helper.executeExtrinsic(staker, `api.tx.appPromotion.${testCase.method}`, unstakeingParams);
+ const {result} = await helper.executeExtrinsic(staker, `api.tx.appPromotion.${testCase.method}`, unstakeParams);
const event = result.events.find(e => e.event.section === 'appPromotion' && e.event.method === 'Unstake');
- expect(event).to.exist;
+ const unstakerEvents = event?.event.data[0].toString();
+ const unstakedEvents = BigInt(event?.event.data[1].toString());
+ expect(unstakerEvents).to.eq(staker.address);
+ expect(unstakedEvents).to.eq(testCase.method === 'unstakeAll' ? 300n * nominal : 100n * nominal - 1n);
});
});
+
+ itSub('stake', async ({helper}) => {
+ const [staker] = getAccount(1);
+ const {result} = await helper.executeExtrinsic(staker, 'api.tx.appPromotion.stake', [100n * nominal]);
+
+ const event = result.events.find(e => e.event.section === 'appPromotion' && e.event.method === 'Stake');
+ const stakerEvents = event?.event.data[0].toString();
+ const stakedEvents = BigInt(event?.event.data[1].toString());
+ expect(stakerEvents).to.eq(staker.address);
+ expect(stakedEvents).to.eq(100n * nominal);
+ });
+
+ // Flaky
+ itSub.skip('payoutStakers', async ({helper}) => {
+ const [staker1, staker2] = getAccount(2);
+ const STAKE1 = 100n * nominal;
+ const STAKE2 = 200n * nominal;
+ await helper.staking.stake(staker1, STAKE1);
+ await helper.staking.stake(staker2, STAKE2);
+
+ const [stake2] = await helper.staking.getTotalStakedPerBlock({Substrate: staker2.address});
+ await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stake2.block));
+
+ const results = await helper.admin.payoutStakers(palletAdmin, 100);
+ const stakersEvents = results.filter(ev => ev.staker === staker1.address || ev.staker === staker2.address);
+ expect(stakersEvents).has.length(2);
+ expect(stakersEvents).has.not.ordered.members([
+ {staker: staker1.address, stake: STAKE1, payout: calculateIncome(STAKE1) - STAKE1},
+ {staker: staker2.address, stake: STAKE2, payout: calculateIncome(STAKE2) - STAKE2},
+ ]);
+ });
});
});
tests/src/util/playgrounds/unique.dev.tsdiffbeforeafterboth733 this.helper = helper;733 this.helper = helper;734 }734 }735735736 async payoutStakers(signer: IKeyringPair, stakersToPayout: number) {736 async payoutStakers(signer: IKeyringPair, stakersToPayout: number): Promise<{staker: string, stake: bigint, payout: bigint}[]> {737 const payoutResult = await this.helper.executeExtrinsic(signer, 'api.tx.appPromotion.payoutStakers', [stakersToPayout], true);737 const payoutResult = await this.helper.executeExtrinsic(signer, 'api.tx.appPromotion.payoutStakers', [stakersToPayout], true);738 return payoutResult.result.events.filter(e => e.event.method === 'StakingRecalculation').map(e => {738 return payoutResult.result.events.filter(e => e.event.method === 'StakingRecalculation').map(e => {739 return {739 return {