git.delta.rocks / unique-network / refs/commits / d91b2e0730df

difftreelog

source

tests/src/governance/democracy.test.ts3.6 KiBsourcehistory
1import {IKeyringPair} from '@polkadot/types/types';2import {usingPlaygrounds, itSub, expect, Pallets, requirePalletsOrSkip, describeGov} from '../util';3import {clearFellowship, democracyLaunchPeriod, democracyTrackMinRank, dummyProposalCall, fellowshipConfirmPeriod, fellowshipMinEnactPeriod, fellowshipPreparePeriod, fellowshipPropositionOrigin, initFellowship, voteUnanimouslyInFellowship} from './util';4import {Event} from '../util/playgrounds/unique.dev';56describeGov('Governance: Democracy tests', () => {7  let regularUser: IKeyringPair;8  let donor: IKeyringPair;9  let sudoer: IKeyringPair;1011  before(async function() {12    await usingPlaygrounds(async (helper, privateKey) => {13      requirePalletsOrSkip(this, helper, [Pallets.Democracy]);1415      donor = await privateKey({url: import.meta.url});16      sudoer = await privateKey('//Alice');1718      [regularUser] = await helper.arrange.createAccounts([1000n], donor);19    });20  });2122  itSub('Regular user can vote', async ({helper}) => {23    const fellows = await initFellowship(donor, sudoer);24    const rank1Proposer = fellows[1][0];2526    const democracyProposalCall = dummyProposalCall(helper);27    const fellowshipProposal = {28      Inline: helper.democracy.proposeCall(democracyProposalCall, 0n).method.toHex(),29    };3031    const submitResult = await helper.fellowship.referenda.submit(32      rank1Proposer,33      fellowshipPropositionOrigin,34      fellowshipProposal,35      {After: 0},36    );3738    const fellowshipReferendumIndex = Event.FellowshipReferenda.Submitted.expect(submitResult).referendumIndex;39    await voteUnanimouslyInFellowship(helper, fellows, democracyTrackMinRank, fellowshipReferendumIndex);40    await helper.fellowship.referenda.placeDecisionDeposit(donor, fellowshipReferendumIndex);4142    await helper.wait.expectEvent(43      fellowshipPreparePeriod + fellowshipConfirmPeriod + fellowshipMinEnactPeriod,44      Event.Democracy.Proposed,45    );4647    const startedEvent = await helper.wait.expectEvent(democracyLaunchPeriod, Event.Democracy.Started);48    const referendumIndex = startedEvent.referendumIndex;4950    const ayeBalance = 10_000n;5152    await helper.democracy.vote(regularUser, referendumIndex, {53      Standard: {54        vote: {55          aye: true,56          conviction: 1,57        },58        balance: ayeBalance,59      },60    });6162    const referendumInfo = await helper.democracy.referendumInfo(referendumIndex);63    const tally = referendumInfo.ongoing.tally;6465    expect(BigInt(tally.ayes)).to.be.equal(ayeBalance);6667    await clearFellowship(sudoer);68  });6970  itSub('[Negative] Regular user cannot submit a regular proposal', async ({helper}) => {71    const submitResult = helper.democracy.propose(regularUser, dummyProposalCall(helper), 0n);72    await expect(submitResult).to.be.rejectedWith(/BadOrigin/);73  });7475  itSub('[Negative] Regular user cannot externally propose SuperMajorityAgainst', async ({helper}) => {76    const submitResult = helper.democracy.externalProposeDefault(regularUser, dummyProposalCall(helper));77    await expect(submitResult).to.be.rejectedWith(/BadOrigin/);78  });7980  itSub('[Negative] Regular user cannot externally propose SimpleMajority', async ({helper}) => {81    const submitResult = helper.democracy.externalProposeMajority(regularUser, dummyProposalCall(helper));82    await expect(submitResult).to.be.rejectedWith(/BadOrigin/);83  });8485  itSub('[Negative] Regular user cannot externally propose SuperMajorityApprove', async ({helper}) => {86    const submitResult = helper.democracy.externalPropose(regularUser, dummyProposalCall(helper));87    await expect(submitResult).to.be.rejectedWith(/BadOrigin/);88  });89});