Browse Source

tests: setup new chain assign council instead of electing

Mokhtar Naamani 3 years ago
parent
commit
b00765732f

+ 5 - 0
tests/network-tests/src/Api.ts

@@ -1892,4 +1892,9 @@ export class Api {
     const account = this.createCustomKeyPair(uri).address
     return this.assignWorkerRoleAccount(group, workerId, account)
   }
+
+  async assignCouncil(accounts: string[]): Promise<ISubmittableResult> {
+    const setCouncilCall = this.api.tx.council.setCouncil(accounts)
+    return this.makeSudoCall(setCouncilCall)
+  }
 }

+ 25 - 0
tests/network-tests/src/fixtures/councilAssignment.ts

@@ -0,0 +1,25 @@
+import { assert } from 'chai'
+import { Api } from '../Api'
+import { BaseFixture } from '../Fixture'
+
+export class AssignCouncilFixture extends BaseFixture {
+  private members: string[]
+
+  public constructor(api: Api, members: string[]) {
+    super(api)
+    this.members = members
+  }
+
+  public async execute(): Promise<void> {
+    // Assert no council exists
+    if ((await this.api.getCouncil()).length) {
+      return this.error(new Error('Council assignment fixture expects no council seats to be filled'))
+    }
+
+    await this.api.assignCouncil(this.members)
+
+    // Assert council was set
+    const councilSize = (await this.api.getCouncil()).length
+    assert.equal(councilSize, this.members.length, 'Not Expected council size after assignment')
+  }
+}

+ 40 - 0
tests/network-tests/src/flows/council/assign.ts

@@ -0,0 +1,40 @@
+import BN from 'bn.js'
+import { PaidTermId } from '@joystream/types/members'
+import { FlowProps } from '../../Flow'
+import { AssignCouncilFixture } from '../../fixtures/councilAssignment'
+import { BuyMembershipHappyCaseFixture } from '../../fixtures/membershipModule'
+import { extendDebug } from '../../Debugger'
+import { FixtureRunner } from '../../Fixture'
+import { Resource } from '../../Resources'
+
+export default async function assignCoundil({ api, env, lock }: FlowProps): Promise<void> {
+  const label = 'assignCouncil'
+  const debug = extendDebug(`flow:${label}`)
+
+  debug('Started')
+
+  await lock(Resource.Council)
+
+  // Skip creating council if already elected
+  if ((await api.getCouncil()).length) {
+    return debug('Skipping council setup. A Council is already elected')
+  }
+
+  debug('Assigning new council')
+
+  const councilSize = (await api.getCouncilSize()).toNumber()
+  const council = []
+  for (let i = 0; i < councilSize; i++) {
+    council.push(api.createCustomKeyPair(`CouncilMember//${i}`).address)
+  }
+
+  const paidTerms: PaidTermId = api.createPaidTermId(new BN(+env.MEMBERSHIP_PAID_TERMS!))
+
+  const createMembersFixture = new BuyMembershipHappyCaseFixture(api, council, paidTerms)
+  await new FixtureRunner(createMembersFixture).run()
+
+  const councilAssignment = new AssignCouncilFixture(api, council)
+  await new FixtureRunner(councilAssignment).run()
+
+  debug('Done')
+}

+ 2 - 2
tests/network-tests/src/scenarios/setup-new-chain.ts

@@ -1,4 +1,4 @@
-import councilSetup from '../flows/council/setup'
+import assignCouncil from '../flows/council/assign'
 import leaderSetup from '../flows/workingGroup/leaderSetup'
 import mockContentFlow from '../sumer/mockContentFlow'
 import updateAccountsFlow from '../sumer/updateAllWorkerRoleAccountsFlow'
@@ -6,7 +6,7 @@ import updateAccountsFlow from '../sumer/updateAllWorkerRoleAccountsFlow'
 import { scenario } from '../Scenario'
 
 scenario(async ({ job }) => {
-  const council = job('Create Council', councilSetup)
+  const council = job('Create Council', assignCouncil)
 
   const leads = job('Setup WorkingGroup Leads', [leaderSetup.storage, leaderSetup.content])