Browse Source

typos fixed, event checks added

Gleb Urvanov 4 years ago
parent
commit
da89092297

+ 3 - 3
tests/network-tests/.env

@@ -31,11 +31,11 @@ WORKING_GROUP_APPLICATION_STAKE = 10
 # Working group role stake
 WORKING_GROUP_ROLE_STAKE = 10
 # Reward interval for working group tests
-LONG_REWARD_INTERWAL = 99999
+LONG_REWARD_INTERVAL = 99999
 # First reward interval for working group reward test
-SHORT_FIRST_REWARD_INTERWAL = 3
+SHORT_FIRST_REWARD_INTERVAL = 3
 # Reward interval for working group reward test
-SHORT_REWARD_INTERWAL = 3
+SHORT_REWARD_INTERVAL = 3
 # Payout amount for working group tests
 PAYOUT_AMOUNT = 3
 # Mint capacity for storage working group

+ 14 - 9
tests/network-tests/src/nicaea/tests/proposals/addWorkingGroupLeaderTest.ts

@@ -13,10 +13,14 @@ import {
   createWorkingGroupLeaderOpening,
   voteForProposal,
   beginWorkingGroupLeaderApplicationReview,
-  expectLeadOpeningAdded,
   fillLeaderOpeningProposal,
 } from './impl/proposalsModule';
-import { applyForOpening } from '../workingGroup/impl/workingGroupModule';
+import {
+  applyForOpening,
+  expectLeadOpeningAdded,
+  expectLeaderSet,
+  expectBeganApplicationReview,
+} from '../workingGroup/impl/workingGroupModule';
 
 tap.mocha.describe('Set lead proposal scenario', async () => {
   initConfig();
@@ -66,7 +70,6 @@ tap.mocha.describe('Set lead proposal scenario', async () => {
     voteForProposal(apiWrapper, m2KeyPairs, sudo, createOpeningProposalId);
     openingId = await expectLeadOpeningAdded(apiWrapper);
   });
-  let applicationId: BN;
   tap.test(
     'Apply for lead opening',
     async () =>
@@ -93,9 +96,10 @@ tap.mocha.describe('Set lead proposal scenario', async () => {
         'Storage'
       ))
   );
-  tap.test('Approve begin review proposal', async () =>
-    voteForProposal(apiWrapper, m2KeyPairs, sudo, beginReviewProposalId)
-  );
+  tap.test('Approve begin review proposal', async () => {
+    voteForProposal(apiWrapper, m2KeyPairs, sudo, beginReviewProposalId);
+    expectBeganApplicationReview(apiWrapper);
+  });
   let fillLeaderOpeningProposalId: BN;
   tap.test(
     'Fill leader opening',
@@ -109,9 +113,10 @@ tap.mocha.describe('Set lead proposal scenario', async () => {
         'Storage'
       ))
   );
-  tap.test('Approve fill leaвer opening', async () =>
-    voteForProposal(apiWrapper, m2KeyPairs, sudo, fillLeaderOpeningProposalId)
-  );
+  tap.test('Approve fill leader opening', async () => {
+    voteForProposal(apiWrapper, m2KeyPairs, sudo, fillLeaderOpeningProposalId);
+    await expectLeaderSet(apiWrapper);
+  });
 
   closeApi(apiWrapper);
 });

+ 7 - 17
tests/network-tests/src/nicaea/tests/proposals/impl/proposalsModule.ts

@@ -1,12 +1,8 @@
 import { KeyringPair } from '@polkadot/keyring/types';
-import { Balance } from '@polkadot/types/interfaces';
-import { u32, u64 } from '@polkadot/types';
 import { ApiWrapper, WorkingGroups } from '../../../utils/apiWrapper';
 import { v4 as uuid } from 'uuid';
 import BN from 'bn.js';
-import { assert } from 'chai';
 import { WorkingGroupOpening } from '../../../dto/workingGroupOpening';
-import { RewardPolicy } from '@nicaea/types/working-group';
 import { FillOpeningParameters } from '../../../dto/fillOpeningParameters';
 
 export async function createWorkingGroupLeaderOpening(
@@ -96,6 +92,9 @@ export async function fillLeaderOpeningProposal(
   m1KeyPairs: KeyringPair[],
   applicantRoleAccountAddress: string,
   sudo: KeyringPair,
+  firstRewardInterval: BN,
+  rewardInterval: BN,
+  payoutAmount: BN,
   openingId: BN,
   workingGroup: string
 ): Promise<BN> {
@@ -103,13 +102,11 @@ export async function fillLeaderOpeningProposal(
   console.log('lead address: ' + applicantRoleAccountAddress);
   const proposalTitle: string = 'Testing proposal ' + uuid().substring(0, 8);
   const description: string = 'Testing fill opening proposal ' + uuid().substring(0, 8);
-  console.log('================================= 1');
 
   // Proposal stake calculation
   const proposalStake: BN = new BN(50000);
   const proposalFee: BN = apiWrapper.estimateProposeFillLeaderOpening();
   await apiWrapper.transferBalance(sudo, m1KeyPairs[0].address, proposalFee.add(proposalStake));
-  console.log('================================= 2');
 
   // Proposal creation
   const applicationId: BN = (
@@ -118,16 +115,15 @@ export async function fillLeaderOpeningProposal(
       WorkingGroups.storageWorkingGroup
     )
   )[0];
+  const now = await apiWrapper.getBestBlock();
   let fillOpeningParameters: FillOpeningParameters = new FillOpeningParameters();
-  fillOpeningParameters.setAmountPerPayout(new BN(1));
-  fillOpeningParameters.setNextPaymentAtBlock(new BN(99999));
-  fillOpeningParameters.setPayoutInterval(new BN(99999));
+  fillOpeningParameters.setAmountPerPayout(payoutAmount);
+  fillOpeningParameters.setNextPaymentAtBlock(now.add(firstRewardInterval));
+  fillOpeningParameters.setPayoutInterval(rewardInterval);
   fillOpeningParameters.setOpeningId(openingId);
   fillOpeningParameters.setSuccessfulApplicationId(applicationId);
   fillOpeningParameters.setWorkingGroup(workingGroup);
 
-  console.log('================================= 3');
-
   const proposalPromise = apiWrapper.expectProposalCreated();
   await apiWrapper.proposeFillLeaderOpening(
     m1KeyPairs[0],
@@ -136,9 +132,7 @@ export async function fillLeaderOpeningProposal(
     proposalStake,
     fillOpeningParameters
   );
-  console.log('================================= 4');
   const proposalNumber: BN = await proposalPromise;
-  console.log('================================= 5');
   return proposalNumber;
 }
 
@@ -156,7 +150,3 @@ export async function voteForProposal(
   await apiWrapper.batchApproveProposal(m2KeyPairs, proposalNumber);
   await proposalExecutionPromise;
 }
-
-export async function expectLeadOpeningAdded(apiWrapper: ApiWrapper): Promise<BN> {
-  return apiWrapper.expectOpeningAdded();
-}

+ 2 - 2
tests/network-tests/src/nicaea/tests/workingGroup/atLeastValueBugTest.ts

@@ -31,8 +31,8 @@ tap.mocha.describe('Worker application happy case scenario', async () => {
   const sudoUri: string = process.env.SUDO_ACCOUNT_URI!;
   const applicationStake: BN = new BN(process.env.WORKING_GROUP_APPLICATION_STAKE!);
   const roleStake: BN = new BN(process.env.WORKING_GROUP_ROLE_STAKE!);
-  const firstRewardInterval: BN = new BN(process.env.LONG_REWARD_INTERWAL!);
-  const rewardInterval: BN = new BN(process.env.LONG_REWARD_INTERWAL!);
+  const firstRewardInterval: BN = new BN(process.env.LONG_REWARD_INTERVAL!);
+  const rewardInterval: BN = new BN(process.env.LONG_REWARD_INTERVAL!);
   const payoutAmount: BN = new BN(process.env.PAYOUT_AMOUNT!);
   const unstakingPeriod: BN = new BN(process.env.STORAGE_WORKING_GROUP_UNSTAKING_PERIOD!);
   const durationInBlocks: number = 48;

+ 14 - 1
tests/network-tests/src/nicaea/tests/workingGroup/impl/workingGroupModule.ts

@@ -180,7 +180,7 @@ export async function beginApplicationReview(
   await apiWrapper.transferBalance(sudo, lead.address, beginReviewFee);
 
   // Begin application review
-  const beginApplicantReviewPromise: Promise<void> = apiWrapper.expectApplicationReviewBegan();
+  const beginApplicantReviewPromise: Promise<BN> = apiWrapper.expectApplicationReviewBegan();
   await apiWrapper.beginApplicantReview(lead, openingId, module);
   await beginApplicantReviewPromise;
 }
@@ -509,3 +509,16 @@ export async function awaitPayout(apiWrapper: ApiWrapper, membersKeyPairs: Keyri
 export async function setMintCapacity(apiWrapper: ApiWrapper, sudo: KeyringPair, capacity: BN, module: WorkingGroups) {
   await apiWrapper.sudoSetWorkingGroupMintCapacity(sudo, capacity, module);
 }
+
+export async function expectLeadOpeningAdded(apiWrapper: ApiWrapper): Promise<BN> {
+  return apiWrapper.expectOpeningAdded();
+}
+
+export async function expectLeaderSet(apiWrapper: ApiWrapper): Promise<BN> {
+  return apiWrapper.expectLeaderSet();
+}
+expectBeganApplicationReview;
+
+export async function expectBeganApplicationReview(apiWrapper: ApiWrapper): Promise<BN> {
+  return apiWrapper.expectApplicationReviewBegan();
+}

+ 2 - 2
tests/network-tests/src/nicaea/tests/workingGroup/manageWorkerAsLeadTest.ts

@@ -36,8 +36,8 @@ tap.mocha.describe('Manage worker as worker scenario', async () => {
   const sudoUri: string = process.env.SUDO_ACCOUNT_URI!;
   const applicationStake: BN = new BN(process.env.WORKING_GROUP_APPLICATION_STAKE!);
   const roleStake: BN = new BN(process.env.WORKING_GROUP_ROLE_STAKE!);
-  const firstRewardInterval: BN = new BN(process.env.LONG_REWARD_INTERWAL!);
-  const rewardInterval: BN = new BN(process.env.LONG_REWARD_INTERWAL!);
+  const firstRewardInterval: BN = new BN(process.env.LONG_REWARD_INTERVAL!);
+  const rewardInterval: BN = new BN(process.env.LONG_REWARD_INTERVAL!);
   const payoutAmount: BN = new BN(process.env.PAYOUT_AMOUNT!);
   const unstakingPeriod: BN = new BN(process.env.STORAGE_WORKING_GROUP_UNSTAKING_PERIOD!);
   const durationInBlocks: number = 60;

+ 2 - 2
tests/network-tests/src/nicaea/tests/workingGroup/manageWorkerAsWorkerTest.ts

@@ -36,8 +36,8 @@ tap.mocha.describe('Manage worker as worker scenario', async () => {
   const sudoUri: string = process.env.SUDO_ACCOUNT_URI!;
   const applicationStake: BN = new BN(process.env.WORKING_GROUP_APPLICATION_STAKE!);
   const roleStake: BN = new BN(process.env.WORKING_GROUP_ROLE_STAKE!);
-  const firstRewardInterval: BN = new BN(process.env.LONG_REWARD_INTERWAL!);
-  const rewardInterval: BN = new BN(process.env.LONG_REWARD_INTERWAL!);
+  const firstRewardInterval: BN = new BN(process.env.LONG_REWARD_INTERVAL!);
+  const rewardInterval: BN = new BN(process.env.LONG_REWARD_INTERVAL!);
   const payoutAmount: BN = new BN(process.env.PAYOUT_AMOUNT!);
   const unstakingPeriod: BN = new BN(process.env.STORAGE_WORKING_GROUP_UNSTAKING_PERIOD!);
   const durationInBlocks: number = 38;

+ 2 - 2
tests/network-tests/src/nicaea/tests/workingGroup/workerApplicationHappyCaseTest.ts

@@ -34,8 +34,8 @@ tap.mocha.describe('Worker application happy case scenario', async () => {
   const sudoUri: string = process.env.SUDO_ACCOUNT_URI!;
   const applicationStake: BN = new BN(process.env.WORKING_GROUP_APPLICATION_STAKE!);
   const roleStake: BN = new BN(process.env.WORKING_GROUP_ROLE_STAKE!);
-  const firstRewardInterval: BN = new BN(process.env.LONG_REWARD_INTERWAL!);
-  const rewardInterval: BN = new BN(process.env.LONG_REWARD_INTERWAL!);
+  const firstRewardInterval: BN = new BN(process.env.LONG_REWARD_INTERVAL!);
+  const rewardInterval: BN = new BN(process.env.LONG_REWARD_INTERVAL!);
   const payoutAmount: BN = new BN(process.env.PAYOUT_AMOUNT!);
   const unstakingPeriod: BN = new BN(process.env.STORAGE_WORKING_GROUP_UNSTAKING_PERIOD!);
   const durationInBlocks: number = 48;

+ 2 - 2
tests/network-tests/src/nicaea/tests/workingGroup/workerApplicationRejectionCaseTest.ts

@@ -33,8 +33,8 @@ tap.mocha.describe('Worker application happy case scenario', async () => {
   const sudoUri: string = process.env.SUDO_ACCOUNT_URI!;
   const applicationStake: BN = new BN(process.env.WORKING_GROUP_APPLICATION_STAKE!);
   const roleStake: BN = new BN(process.env.WORKING_GROUP_ROLE_STAKE!);
-  const firstRewardInterval: BN = new BN(process.env.LONG_REWARD_INTERWAL!);
-  const rewardInterval: BN = new BN(process.env.LONG_REWARD_INTERWAL!);
+  const firstRewardInterval: BN = new BN(process.env.LONG_REWARD_INTERVAL!);
+  const rewardInterval: BN = new BN(process.env.LONG_REWARD_INTERVAL!);
   const payoutAmount: BN = new BN(process.env.PAYOUT_AMOUNT!);
   const unstakingPeriod: BN = new BN(process.env.STORAGE_WORKING_GROUP_UNSTAKING_PERIOD!);
   const durationInBlocks: number = 38;

+ 2 - 2
tests/network-tests/src/nicaea/tests/workingGroup/workerPayout.ts

@@ -35,8 +35,8 @@ tap.mocha.describe('Worker application happy case scenario', async () => {
   const sudoUri: string = process.env.SUDO_ACCOUNT_URI!;
   const applicationStake: BN = new BN(process.env.WORKING_GROUP_APPLICATION_STAKE!);
   const roleStake: BN = new BN(process.env.WORKING_GROUP_ROLE_STAKE!);
-  const firstRewardInterval: BN = new BN(process.env.SHORT_FIRST_REWARD_INTERWAL!);
-  const rewardInterval: BN = new BN(process.env.SHORT_REWARD_INTERWAL!);
+  const firstRewardInterval: BN = new BN(process.env.SHORT_FIRST_REWARD_INTERVAL!);
+  const rewardInterval: BN = new BN(process.env.SHORT_REWARD_INTERVAL!);
   const payoutAmount: BN = new BN(process.env.PAYOUT_AMOUNT!);
   const unstakingPeriod: BN = new BN(process.env.STORAGE_WORKING_GROUP_UNSTAKING_PERIOD!);
   const mintCapacity: BN = new BN(process.env.STORAGE_WORKING_GROUP_MINTING_CAPACITY!);

+ 14 - 2
tests/network-tests/src/nicaea/utils/apiWrapper.ts

@@ -791,12 +791,24 @@ export class ApiWrapper {
     });
   }
 
-  public expectApplicationReviewBegan(): Promise<void> {
+  public expectLeaderSet(): Promise<BN> {
+    return new Promise(async resolve => {
+      await this.api.query.system.events<Vec<EventRecord>>(events => {
+        events.forEach(record => {
+          if (record.event.method && record.event.method.toString() === 'LeaderSet') {
+            resolve((record.event.data as unknown) as BN);
+          }
+        });
+      });
+    });
+  }
+
+  public expectApplicationReviewBegan(): Promise<BN> {
     return new Promise(async resolve => {
       await this.api.query.system.events<Vec<EventRecord>>(events => {
         events.forEach(record => {
           if (record.event.method && record.event.method.toString() === 'BeganApplicationReview') {
-            resolve();
+            resolve((record.event.data as unknown) as BN);
           }
         });
       });