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

difftreelog

Add helper to get total payout

Max Andreev2022-09-15parent: #7586abb.patch.diff
in: master

2 files changed

modifiedtests/src/app-promotion.test.tsdiffbeforeafterboth
--- 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));
modifiedtests/src/util/playgrounds/unique.dev.tsdiffbeforeafterboth
60 */60 */
61 arrange: ArrangeGroup;61 arrange: ArrangeGroup;
62 wait: WaitGroup;62 wait: WaitGroup;
63 sudo: SudoGroup;
6364
64 constructor(logger: { log: (msg: any, level: any) => void, level: any }) {65 constructor(logger: { log: (msg: any, level: any) => void, level: any }) {
65 super(logger);66 super(logger);
66 this.arrange = new ArrangeGroup(this);67 this.arrange = new ArrangeGroup(this);
67 this.wait = new WaitGroup(this);68 this.wait = new WaitGroup(this);
69 this.sudo = new SudoGroup(this);
68 }70 }
6971
70 async connect(wsEndpoint: string, _listeners?: any): Promise<void> {72 async connect(wsEndpoint: string, _listeners?: any): Promise<void> {
282 }284 }
283}285}
284286
287class SudoGroup {
288 helper: UniqueHelper;
289
290 constructor(helper: UniqueHelper) {
291 this.helper = helper;
292 }
293
294 async payoutStakers(signer: IKeyringPair, stakersToPayout: number) {
295 const payoutResult = await this.helper.executeExtrinsic(signer, 'api.tx.appPromotion.payoutStakers', [stakersToPayout], true);
296 return payoutResult.result.events.filter(e => e.event.method === 'StakingRecalculation').map(e => {
297 return {
298 staker: e.event.data[0].toString(),
299 stake: e.event.data[1].toBigInt(),
300 payout: e.event.data[2].toBigInt(),
301 };
302 });
303 }
304}