difftreelog
test governance init fellowship
in: master
2 files changed
tests/src/governance/init.test.tsdiffbeforeafterboth1import {IKeyringPair} from '@polkadot/types/types';1import {IKeyringPair} from '@polkadot/types/types';2import {usingPlaygrounds, itSub, expect, Pallets, requirePalletsOrSkip, describeGov} from '../util';2import {usingPlaygrounds, itSub, expect, Pallets, requirePalletsOrSkip, describeGov} from '../util';3import {Event} from '../util/playgrounds/unique.dev';3import {Event} from '../util/playgrounds/unique.dev';4import {ICounselors, democracyLaunchPeriod, democracyVotingPeriod, ITechComms, democracyEnactmentPeriod, clearCouncil, clearTechComm} from './util';4import {ICounselors, democracyLaunchPeriod, democracyVotingPeriod, ITechComms, democracyEnactmentPeriod, clearCouncil, clearTechComm, clearFellowship} from './util';556describeGov('Governance: Initialization', () => {6describeGov('Governance: Initialization', () => {7 let donor: IKeyringPair;7 let donor: IKeyringPair;8 let sudoer: IKeyringPair;8 let sudoer: IKeyringPair;9 let counselors: ICounselors;9 let counselors: ICounselors;10 let techcomms: ITechComms;10 let techcomms: ITechComms;11 let coreDevs: any;1213 const expectedAlexFellowRank = 7;14 const expectedFellowRank = 6;111512 before(async function() {16 before(async function() {13 await usingPlaygrounds(async (helper, privateKey) => {17 await usingPlaygrounds(async (helper, privateKey) => {21 donor = await privateKey({url: import.meta.url});25 donor = await privateKey({url: import.meta.url});22 sudoer = await privateKey('//Alice');26 sudoer = await privateKey('//Alice');232728 const counselorsNum = 5;29 const techCommsNum = 3;30 const coreDevsNum = 2;24 const [alex, ildar, charu, filip, irina] = await helper.arrange.createAccounts([10_000n, 10_000n, 10_000n, 10_000n, 10_000n], donor);31 const [32 alex,33 ildar,34 charu,35 filip,36 irina,3738 greg,39 andy,40 constantine,4142 yaroslav,43 daniel,44 ] = await helper.arrange.createAccounts(new Array(counselorsNum + techCommsNum + coreDevsNum).fill(10_000n), donor);4525 counselors = {46 counselors = {26 alex,47 alex,30 irina,51 irina,31 };52 };325354 techcomms = {33 const [greg, andy, constantine] = await helper.arrange.createAccounts([10_000n, 10_000n, 10_000n], donor);55 greg,56 andy,57 constantine,58 };5934 techcomms = {60 coreDevs = {35 greg,61 yaroslav: yaroslav,36 andy,62 daniel: daniel,37 constantine,38 };63 };39 });64 });40 });65 });416642 itSub('Initialize Governance', async ({helper}) => {67 itSub('Initialize Governance', async ({helper}) => {68 const promoteFellow = (fellow: string, promotionsNum: number) => {69 return new Array(promotionsNum).fill(helper.fellowship.collective.promoteCall(fellow));70 };7172 const expectFellowRank = async (fellow: string, expectedRank: number) => {73 expect(await helper.fellowship.collective.getMemberRank(fellow)).to.be.equal(expectedRank);74 };7543 console.log('\t- Setup the Prime of the Council via sudo');76 console.log('\t- Setup the Prime of the Council via sudo');44 await helper.getSudo().utility.batchAll(sudoer, [77 await helper.getSudo().utility.batchAll(sudoer, [45 helper.council.membership.addMemberCall(counselors.alex.address),78 helper.council.membership.addMemberCall(counselors.alex.address),46 helper.council.membership.setPrimeCall(counselors.alex.address),79 helper.council.membership.setPrimeCall(counselors.alex.address),8081 helper.fellowship.collective.addMemberCall(counselors.alex.address),82 ...promoteFellow(counselors.alex.address, expectedAlexFellowRank),47 ]);83 ]);488449 let councilMembers = await helper.council.membership.getMembers();85 let councilMembers = await helper.council.membership.getMembers();50 const councilPrime = await helper.council.collective.getPrimeMember();86 const councilPrime = await helper.council.collective.getPrimeMember();87 const alexFellowRank = await helper.fellowship.collective.getMemberRank(counselors.alex.address);51 expect(councilMembers).to.be.deep.equal([counselors.alex.address]);88 expect(councilMembers).to.be.deep.equal([counselors.alex.address]);52 expect(councilPrime).to.be.equal(counselors.alex.address);89 expect(councilPrime).to.be.equal(counselors.alex.address);90 expect(alexFellowRank).to.be.equal(expectedAlexFellowRank);539154 console.log('\t- The Council Prime initializes the Technical Commettee');92 console.log('\t- The Council Prime initializes the Technical Commettee');55 const councilProposalThreshold = 1;93 const councilProposalThreshold = 1;81 helper.council.membership.addMemberCall(counselors.filip.address),119 helper.council.membership.addMemberCall(counselors.filip.address),82 helper.council.membership.addMemberCall(counselors.irina.address),120 helper.council.membership.addMemberCall(counselors.irina.address),121122 helper.fellowship.collective.addMemberCall(counselors.charu.address),123 helper.fellowship.collective.addMemberCall(counselors.ildar.address),124 helper.fellowship.collective.addMemberCall(counselors.irina.address),125 helper.fellowship.collective.addMemberCall(counselors.filip.address),126 helper.fellowship.collective.addMemberCall(techcomms.greg.address),127 helper.fellowship.collective.addMemberCall(techcomms.andy.address),128 helper.fellowship.collective.addMemberCall(techcomms.constantine.address),129 helper.fellowship.collective.addMemberCall(coreDevs.yaroslav.address),130 helper.fellowship.collective.addMemberCall(coreDevs.daniel.address),131132 ...promoteFellow(counselors.charu.address, expectedFellowRank),133 ...promoteFellow(counselors.ildar.address, expectedFellowRank),134 ...promoteFellow(counselors.irina.address, expectedFellowRank),135 ...promoteFellow(counselors.filip.address, expectedFellowRank),136 ...promoteFellow(techcomms.greg.address, expectedFellowRank),137 ...promoteFellow(techcomms.andy.address, expectedFellowRank),138 ...promoteFellow(techcomms.constantine.address, expectedFellowRank),139 ...promoteFellow(coreDevs.yaroslav.address, expectedFellowRank),140 ...promoteFellow(coreDevs.daniel.address, expectedFellowRank),83 ]), returnPreimageHash);141 ]), returnPreimageHash);8414285 await helper.council.collective.propose(143 await helper.council.collective.propose(117 expect(councilMembers.length).to.be.equal(expectedCounselors.length);175 expect(councilMembers.length).to.be.equal(expectedCounselors.length);118 expect(councilMembers).to.containSubset(expectedCounselors);176 expect(councilMembers).to.containSubset(expectedCounselors);177178 await expectFellowRank(counselors.ildar.address, expectedFellowRank);179 await expectFellowRank(counselors.charu.address, expectedFellowRank);180 await expectFellowRank(counselors.filip.address, expectedFellowRank);181 await expectFellowRank(counselors.irina.address, expectedFellowRank);182 await expectFellowRank(techcomms.greg.address, expectedFellowRank);183 await expectFellowRank(techcomms.andy.address, expectedFellowRank);184 await expectFellowRank(techcomms.constantine.address, expectedFellowRank);185 await expectFellowRank(coreDevs.yaroslav.address, expectedFellowRank);186 await expectFellowRank(coreDevs.daniel.address, expectedFellowRank);119 });187 });120188121 after(async function() {189 after(async function() {190 await clearFellowship(sudoer);122 await clearTechComm(sudoer);191 await clearTechComm(sudoer);123 await clearCouncil(sudoer);192 await clearCouncil(sudoer);124 });193 });tests/src/util/playgrounds/unique.tsdiffbeforeafterboth3255 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 }325732573258 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 }326132613262 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 }32783279 async getMemberRank(member: string) {3280 return (await this.helper.callRpc('api.query.fellowshipCollective.members', [member])).toJSON().rank;3281 }3278}3282}327932833280class ReferendaGroup extends HelperGroup<UniqueHelper> {3284class ReferendaGroup extends HelperGroup<UniqueHelper> {