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
619 // Wait for rewards and pay619 // Wait for rewards and pay
620 const [stakedInBlock] = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});620 const [stakedInBlock] = await helper.staking.getTotalStakedPerBlock({Substrate: staker.address});
621 await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stakedInBlock.block));621 await helper.wait.forRelayBlockNumber(rewardAvailableInBlock(stakedInBlock.block));
622 // await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.payoutStakers(100));
622 await helper.signTransaction(palletAdmin, helper.api!.tx.appPromotion.payoutStakers(100));623 const totalPayout = (await helper.sudo.payoutStakers(palletAdmin, 100)).reduce((prev, payout) => prev + payout.payout, 0n);
623624
624 const totalStakedAfter = await helper.staking.getTotalStaked();625 const totalStakedAfter = await helper.staking.getTotalStaked();
625 expect(totalStakedAfter >= totalStakedBefore + calculateIncome(100n * nominal, 10n)).to.be.true;626 expect(totalStakedAfter).to.equal(totalStakedBefore + (100n * nominal) + totalPayout);
626
627 // staker can unstake627 // staker can unstake
628 await helper.staking.unstake(staker);628 await helper.staking.unstake(staker);
modifiedtests/src/util/playgrounds/unique.dev.tsdiffbeforeafterboth
--- 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<void> {
@@ -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