git.delta.rocks / unique-network / refs/commits / 8a54415cf31b

difftreelog

test governance init fellowship

Daniel Shiposha2023-09-12parent: #a6d8651.patch.diff
in: master

2 files changed

modifiedtests/src/governance/init.test.tsdiffbeforeafterboth
--- a/tests/src/governance/init.test.ts
+++ b/tests/src/governance/init.test.ts
@@ -1,13 +1,17 @@
 import {IKeyringPair} from '@polkadot/types/types';
 import {usingPlaygrounds, itSub, expect, Pallets, requirePalletsOrSkip, describeGov} from '../util';
 import {Event} from '../util/playgrounds/unique.dev';
-import {ICounselors, democracyLaunchPeriod, democracyVotingPeriod, ITechComms, democracyEnactmentPeriod, clearCouncil, clearTechComm} from './util';
+import {ICounselors, democracyLaunchPeriod, democracyVotingPeriod, ITechComms, democracyEnactmentPeriod, clearCouncil, clearTechComm, clearFellowship} from './util';
 
 describeGov('Governance: Initialization', () => {
   let donor: IKeyringPair;
   let sudoer: IKeyringPair;
   let counselors: ICounselors;
   let techcomms: ITechComms;
+  let coreDevs: any;
+
+  const expectedAlexFellowRank = 7;
+  const expectedFellowRank = 6;
 
   before(async function() {
     await usingPlaygrounds(async (helper, privateKey) => {
@@ -21,7 +25,24 @@
       donor = await privateKey({url: import.meta.url});
       sudoer = await privateKey('//Alice');
 
-      const [alex, ildar, charu, filip, irina] = await helper.arrange.createAccounts([10_000n, 10_000n, 10_000n, 10_000n, 10_000n], donor);
+      const counselorsNum = 5;
+      const techCommsNum = 3;
+      const coreDevsNum = 2;
+      const [
+        alex,
+        ildar,
+        charu,
+        filip,
+        irina,
+
+        greg,
+        andy,
+        constantine,
+
+        yaroslav,
+        daniel,
+    ] = await helper.arrange.createAccounts(new Array(counselorsNum + techCommsNum + coreDevsNum).fill(10_000n), donor);
+
       counselors = {
         alex,
         ildar,
@@ -30,26 +51,43 @@
         irina,
       };
 
-      const [greg, andy, constantine] = await helper.arrange.createAccounts([10_000n, 10_000n, 10_000n], donor);
       techcomms = {
         greg,
         andy,
         constantine,
       };
+
+      coreDevs = {
+        yaroslav: yaroslav,
+        daniel: daniel,
+      };
     });
   });
 
   itSub('Initialize Governance', async ({helper}) => {
+    const promoteFellow = (fellow: string, promotionsNum: number) => {
+        return new Array(promotionsNum).fill(helper.fellowship.collective.promoteCall(fellow));
+    };
+
+    const expectFellowRank = async (fellow: string, expectedRank: number) => {
+        expect(await helper.fellowship.collective.getMemberRank(fellow)).to.be.equal(expectedRank);
+    };
+
     console.log('\t- Setup the Prime of the Council via sudo');
     await helper.getSudo().utility.batchAll(sudoer, [
       helper.council.membership.addMemberCall(counselors.alex.address),
       helper.council.membership.setPrimeCall(counselors.alex.address),
+
+      helper.fellowship.collective.addMemberCall(counselors.alex.address),
+      ...promoteFellow(counselors.alex.address, expectedAlexFellowRank),
     ]);
 
     let councilMembers = await helper.council.membership.getMembers();
     const councilPrime = await helper.council.collective.getPrimeMember();
+    const alexFellowRank = await helper.fellowship.collective.getMemberRank(counselors.alex.address);
     expect(councilMembers).to.be.deep.equal([counselors.alex.address]);
     expect(councilPrime).to.be.equal(counselors.alex.address);
+    expect(alexFellowRank).to.be.equal(expectedAlexFellowRank);
 
     console.log('\t- The Council Prime initializes the Technical Commettee');
     const councilProposalThreshold = 1;
@@ -80,6 +118,26 @@
       helper.council.membership.addMemberCall(counselors.charu.address),
       helper.council.membership.addMemberCall(counselors.filip.address),
       helper.council.membership.addMemberCall(counselors.irina.address),
+
+      helper.fellowship.collective.addMemberCall(counselors.charu.address),
+      helper.fellowship.collective.addMemberCall(counselors.ildar.address),
+      helper.fellowship.collective.addMemberCall(counselors.irina.address),
+      helper.fellowship.collective.addMemberCall(counselors.filip.address),
+      helper.fellowship.collective.addMemberCall(techcomms.greg.address),
+      helper.fellowship.collective.addMemberCall(techcomms.andy.address),
+      helper.fellowship.collective.addMemberCall(techcomms.constantine.address),
+      helper.fellowship.collective.addMemberCall(coreDevs.yaroslav.address),
+      helper.fellowship.collective.addMemberCall(coreDevs.daniel.address),
+
+      ...promoteFellow(counselors.charu.address, expectedFellowRank),
+      ...promoteFellow(counselors.ildar.address, expectedFellowRank),
+      ...promoteFellow(counselors.irina.address, expectedFellowRank),
+      ...promoteFellow(counselors.filip.address, expectedFellowRank),
+      ...promoteFellow(techcomms.greg.address, expectedFellowRank),
+      ...promoteFellow(techcomms.andy.address, expectedFellowRank),
+      ...promoteFellow(techcomms.constantine.address, expectedFellowRank),
+      ...promoteFellow(coreDevs.yaroslav.address, expectedFellowRank),
+      ...promoteFellow(coreDevs.daniel.address, expectedFellowRank),
     ]), returnPreimageHash);
 
     await helper.council.collective.propose(
@@ -116,9 +174,20 @@
     ];
     expect(councilMembers.length).to.be.equal(expectedCounselors.length);
     expect(councilMembers).to.containSubset(expectedCounselors);
+
+    await expectFellowRank(counselors.ildar.address, expectedFellowRank);
+    await expectFellowRank(counselors.charu.address, expectedFellowRank);
+    await expectFellowRank(counselors.filip.address, expectedFellowRank);
+    await expectFellowRank(counselors.irina.address, expectedFellowRank);
+    await expectFellowRank(techcomms.greg.address, expectedFellowRank);
+    await expectFellowRank(techcomms.andy.address, expectedFellowRank);
+    await expectFellowRank(techcomms.constantine.address, expectedFellowRank);
+    await expectFellowRank(coreDevs.yaroslav.address, expectedFellowRank);
+    await expectFellowRank(coreDevs.daniel.address, expectedFellowRank);
   });
 
   after(async function() {
+    await clearFellowship(sudoer);
     await clearTechComm(sudoer);
     await clearCouncil(sudoer);
   });
modifiedtests/src/util/playgrounds/unique.tsdiffbeforeafterboth
3255 return this.helper.executeExtrinsic(signer, `api.tx.${this.collective}.promoteMember`, [member]);3255 return this.helper.executeExtrinsic(signer, `api.tx.${this.collective}.promoteMember`, [member]);
3256 }3256 }
32573257
3258 promoteCall(newMember: string) {3258 promoteCall(member: string) {
3259 return this.helper.constructApiCall(`api.tx.${this.collective}.promoteMember`, [newMember]);3259 return this.helper.constructApiCall(`api.tx.${this.collective}.promoteMember`, [member]);
3260 }3260 }
32613261
3262 demote(signer: TSigner, member: string) {3262 demote(signer: TSigner, member: string) {
3276 .map((key) => key.args[0].toString());3276 .map((key) => key.args[0].toString());
3277 }3277 }
3278
3279 async getMemberRank(member: string) {
3280 return (await this.helper.callRpc('api.query.fellowshipCollective.members', [member])).toJSON().rank;
3281 }
3278}3282}
32793283
3280class ReferendaGroup extends HelperGroup<UniqueHelper> {3284class ReferendaGroup extends HelperGroup<UniqueHelper> {