From b75ceadca458670ab558ad6621e59e0f14668e18 Mon Sep 17 00:00:00 2001 From: Max Andreev Date: Thu, 15 Sep 2022 07:49:03 +0000 Subject: [PATCH] Add helper to get total payout --- --- a/tests/src/app-promotion.test.ts +++ b/tests/src/app-promotion.test.ts @@ -619,11 +619,11 @@ // Wait for rewards and pay const [stakedInBlock] = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address}); await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stakedInBlock.block)); - await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.payoutStakers(100)); + // await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.payoutStakers(100)); + const totalPayout = (await helper.sudo.payoutStakers(palletAdmin, 100)).reduce((prev, payout) => prev + payout.payout, 0n); const totalStakedAfter = await helper.staking.getTotalStaked(); - expect(totalStakedAfter >= totalStakedBefore + calculateIncome(100n * nominal, 10n)).to.be.true; - + expect(totalStakedAfter).to.equal(totalStakedBefore + (100n * nominal) + totalPayout); // staker can unstake await helper.staking.unstake(staker); expect(await helper.staking.getTotalStaked()).to.be.equal(totalStakedAfter - calculateIncome(100n * nominal, 10n)); --- a/tests/src/util/playgrounds/unique.dev.ts +++ b/tests/src/util/playgrounds/unique.dev.ts @@ -60,11 +60,13 @@ */ arrange: ArrangeGroup; wait: WaitGroup; + sudo: SudoGroup; constructor(logger: { log: (msg: any, level: any) => void, level: any }) { super(logger); this.arrange = new ArrangeGroup(this); this.wait = new WaitGroup(this); + this.sudo = new SudoGroup(this); } async connect(wsEndpoint: string, _listeners?: any): Promise { @@ -281,3 +283,22 @@ }); } } + +class SudoGroup { + helper: UniqueHelper; + + constructor(helper: UniqueHelper) { + this.helper = helper; + } + + async payoutStakers(signer: IKeyringPair, stakersToPayout: number) { + const payoutResult = await this.helper.executeExtrinsic(signer, 'api.tx.appPromotion.payoutStakers', [stakersToPayout], true); + return payoutResult.result.events.filter(e => e.event.method === 'StakingRecalculation').map(e => { + return { + staker: e.event.data[0].toString(), + stake: e.event.data[1].toBigInt(), + payout: e.event.data[2].toBigInt(), + }; + }); + } +} \ No newline at end of file -- gitstuff