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
1import {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';
55
6describeGov('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;
12
13 const expectedAlexFellowRank = 7;
14 const expectedFellowRank = 6;
1115
12 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');
2327
28 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,
37
38 greg,
39 andy,
40 constantine,
41
42 yaroslav,
43 daniel,
44 ] = await helper.arrange.createAccounts(new Array(counselorsNum + techCommsNum + coreDevsNum).fill(10_000n), donor);
45
25 counselors = {46 counselors = {
26 alex,47 alex,
30 irina,51 irina,
31 };52 };
3253
54 techcomms = {
33 const [greg, andy, constantine] = await helper.arrange.createAccounts([10_000n, 10_000n, 10_000n], donor);55 greg,
56 andy,
57 constantine,
58 };
59
34 techcomms = {60 coreDevs = {
35 greg,61 yaroslav: yaroslav,
36 andy,62 daniel: daniel,
37 constantine,
38 };63 };
39 });64 });
40 });65 });
4166
42 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 };
71
72 const expectFellowRank = async (fellow: string, expectedRank: number) => {
73 expect(await helper.fellowship.collective.getMemberRank(fellow)).to.be.equal(expectedRank);
74 };
75
43 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),
80
81 helper.fellowship.collective.addMemberCall(counselors.alex.address),
82 ...promoteFellow(counselors.alex.address, expectedAlexFellowRank),
47 ]);83 ]);
4884
49 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);
5391
54 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),
121
122 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),
131
132 ...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);
84142
85 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);
177
178 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 });
120188
121 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 });
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> {