Quellcode durchsuchen

Add fixture setLeaderInvitationQuota

Anuj Bansal vor 3 Jahren
Ursprung
Commit
d16037419b

+ 60 - 0
tests/integration-tests/src/fixtures/workingGroups/SetLeaderInvitationQuotaFixture.ts

@@ -0,0 +1,60 @@
+import BN from 'bn.js'
+import { assert } from 'chai'
+import { Api } from '../../Api'
+import { QueryNodeApi } from '../../QueryNodeApi'
+import { EventDetails, WorkingGroupModuleName } from '../../types'
+import { BaseWorkingGroupFixture } from './BaseWorkingGroupFixture'
+import { SubmittableExtrinsic } from '@polkadot/api/types'
+import { ISubmittableResult } from '@polkadot/types/types/'
+import { Utils } from '../../utils'
+import {
+  ProposalFieldsFragment,
+  BudgetSetEventFieldsFragment,
+  WorkingGroupFieldsFragment,
+} from '../../graphql/generated/queries'
+
+export class SetLeaderInvitationQuotaFixture extends BaseWorkingGroupFixture {
+  protected group: WorkingGroupModuleName
+  protected quota: number
+
+  public constructor(api: Api, query: QueryNodeApi, group: WorkingGroupModuleName, quota: number) {
+    super(api, query, group)
+    this.group = group
+    this.quota = quota
+  }
+
+  protected async getSignerAccountOrAccounts(): Promise<string> {
+    return (await this.api.query.sudo.key()).toString()
+  }
+
+  protected async getExtrinsics(): Promise<SubmittableExtrinsic<'promise'>[]> {
+    const extrinsics = [this.api.tx.members.setLeaderInvitationQuota(this.quota)]
+    return extrinsics.map((tx) => this.api.tx.sudo.sudo(tx))
+  }
+
+  protected async getEventFromResult(result: ISubmittableResult): Promise<EventDetails> {
+    return await this.api.retrieveMembershipEventDetails(result, 'LeaderInvitationQuotaUpdated')
+  }
+
+  protected assertQueryNodeEventIsValid(qEvent: BudgetSetEventFieldsFragment, i: number): void {
+    assert.equal('1', '1')
+  }
+
+  protected assertQueriedGroupIsValid(qGroup: WorkingGroupFieldsFragment | null): void {
+    Utils.assert(qGroup, 'Query node: Working group not found!')
+  }
+
+  async runQueryNodeChecks(): Promise<void> {
+    await super.runQueryNodeChecks()
+
+    // Query and check the events
+    await this.query.tryQueryWithTimeout(
+      () => this.query.getBudgetSetEvents(this.events),
+      (qEvents) => this.assertQueryNodeEventsAreValid(qEvents)
+    )
+
+    // Check the group
+    const qGroup = await this.query.getWorkingGroup(this.group)
+    this.assertQueriedGroupIsValid(qGroup)
+  }
+}

+ 12 - 10
tests/integration-tests/src/flows/faucet/initFaucet.ts

@@ -3,6 +3,7 @@ import { extendDebug } from '../../Debugger'
 import { FixtureRunner } from '../../Fixture'
 import { BuyMembershipHappyCaseFixture, TransferInvitesHappyCaseFixture } from '../../fixtures/membership'
 import { SetBudgetFixture } from '../../fixtures/workingGroups/SetBudgetFixture'
+import { SetLeaderInvitationQuotaFixture } from '../../fixtures/workingGroups/SetLeaderInvitationQuotaFixture'
 import _ from 'lodash'
 import BN from 'bn.js'
 
@@ -15,7 +16,8 @@ export default async function initFaucet({ api, env, query }: FlowProps): Promis
   const [, membershipLeader] = await api.getLeader(membershipWorkingGroup)
 
   // Grant lead invitation quota
-  const proposalDetails = api.createType('ProposalDetails', { SetMembershipLeadInvitationQuota: 50 })
+  const setLeaderInvitationQuotaFixture = new SetLeaderInvitationQuotaFixture(api, query, membershipWorkingGroup, 50)
+  await new FixtureRunner(setLeaderInvitationQuotaFixture).runWithQueryNodeChecks()
 
   // The membership working group should have a budget allocated
   const budgets: BN[] = [new BN(1000000)]
@@ -23,7 +25,7 @@ export default async function initFaucet({ api, env, query }: FlowProps): Promis
   await new FixtureRunner(setGroupBudgetFixture).runWithQueryNodeChecks()
 
   // Create a membership account for faucet
-  const faucetAccounts = (await api.createKeyPairs(1)).map(({ key }) => key.address)
+  const faucetAccounts = [api.createCustomKeyPair(env.SCREENING_AUTHORITY_SEED || '//Faucet').address]
   const happyCaseFixture = new BuyMembershipHappyCaseFixture(api, query, faucetAccounts)
   await new FixtureRunner(happyCaseFixture).runWithQueryNodeChecks()
   const [faucetMemberId] = happyCaseFixture.getCreatedMembers()
@@ -32,14 +34,14 @@ export default async function initFaucet({ api, env, query }: FlowProps): Promis
   await api.treasuryTransferBalanceToAccounts(faucetAccounts, new BN(200))
 
   // Use the above membershipLeader to give faucet account permission to invite other members
-  // const transferInvitesHappyCaseFixture = new TransferInvitesHappyCaseFixture(
-  //   api,
-  //   query,
-  //   { memberId: membershipLeader.member_id, account: membershipLeader.role_account_id.toString() },
-  //   { memberId: faucetMemberId, account: faucetAccounts[0] },
-  //   10
-  // )
-  // await new FixtureRunner(transferInvitesHappyCaseFixture).runWithQueryNodeChecks()
+  const transferInvitesHappyCaseFixture = new TransferInvitesHappyCaseFixture(
+    api,
+    query,
+    { memberId: membershipLeader.member_id, account: membershipLeader.role_account_id.toString() },
+    { memberId: faucetMemberId, account: faucetAccounts[0] },
+    10
+  )
+  await new FixtureRunner(transferInvitesHappyCaseFixture).runWithQueryNodeChecks()
 
   debug('Done')
 }