2021-10-05 13:40:01 -07:00
|
|
|
import * as anchor from '@project-serum/anchor';
|
2021-10-12 12:34:05 -07:00
|
|
|
import { Program } from '@project-serum/anchor';
|
2021-10-05 13:40:01 -07:00
|
|
|
import { PublicKey, Keypair, SystemProgram, SYSVAR_RENT_PUBKEY } from '@solana/web3.js';
|
|
|
|
import { TOKEN_PROGRAM_ID } from '@solana/spl-token';
|
2021-10-12 12:34:05 -07:00
|
|
|
import { GovernanceRegistry } from '../target/types/governance_registry';
|
2021-10-05 13:40:01 -07:00
|
|
|
|
|
|
|
describe('voting-rights', () => {
|
|
|
|
anchor.setProvider(anchor.Provider.env());
|
|
|
|
|
2021-10-12 12:34:05 -07:00
|
|
|
const program = anchor.workspace.GovernanceRegistry as Program<GovernanceRegistry>;
|
2021-10-05 13:40:01 -07:00
|
|
|
|
2021-10-12 12:34:05 -07:00
|
|
|
// Initialized variables shared across tests.
|
|
|
|
const realm = Keypair.generate().publicKey;
|
2021-10-05 13:40:01 -07:00
|
|
|
const votingMintDecimals = 6;
|
|
|
|
|
2021-10-12 12:34:05 -07:00
|
|
|
// Uninitialized variables shared across tests.
|
2021-10-05 13:40:01 -07:00
|
|
|
let registrar: PublicKey, votingMint: PublicKey, voter: PublicKey;
|
|
|
|
let registrarBump: number, votingMintBump: number, voterBump: number;
|
|
|
|
|
|
|
|
it('Creates PDAs', async () => {
|
|
|
|
const [_registrar, _registrarBump] = await PublicKey.findProgramAddress(
|
|
|
|
[realm.toBuffer()],
|
|
|
|
program.programId,
|
|
|
|
);
|
|
|
|
const [_votingMint, _votingMintBump] = await PublicKey.findProgramAddress(
|
|
|
|
[_registrar.toBuffer()],
|
|
|
|
program.programId,
|
|
|
|
);
|
|
|
|
const [_voter, _voterBump] = await PublicKey.findProgramAddress(
|
|
|
|
[_registrar.toBuffer(), program.provider.wallet.publicKey.toBuffer()],
|
|
|
|
program.programId,
|
|
|
|
);
|
|
|
|
|
|
|
|
registrar = _registrar;
|
|
|
|
votingMint = _votingMint;
|
|
|
|
voter = _voter;
|
|
|
|
|
|
|
|
registrarBump = _registrarBump;
|
|
|
|
votingMintBump = _votingMintBump;
|
|
|
|
voterBump = _voterBump;
|
|
|
|
});
|
|
|
|
|
|
|
|
it('Initializes a registrar', async () => {
|
2021-10-12 12:34:05 -07:00
|
|
|
await program.rpc.initRegistrar(registrarBump, votingMintBump, votingMintDecimals, {
|
2021-10-05 13:40:01 -07:00
|
|
|
accounts: {
|
|
|
|
registrar,
|
|
|
|
votingMint,
|
|
|
|
realm,
|
|
|
|
authority: program.provider.wallet.publicKey,
|
|
|
|
payer: program.provider.wallet.publicKey,
|
|
|
|
systemProgram: SystemProgram.programId,
|
|
|
|
tokenProgram: TOKEN_PROGRAM_ID,
|
|
|
|
rent: SYSVAR_RENT_PUBKEY,
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
const registrarAccount = await program.account.registrar.fetch(registrar);
|
|
|
|
console.log(registrarAccount);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('Initializes a voter', async () => {
|
|
|
|
await program.rpc.initVoter(voterBump, {
|
|
|
|
accounts: {
|
|
|
|
voter,
|
|
|
|
registrar,
|
|
|
|
authority: program.provider.wallet.publicKey,
|
|
|
|
systemProgram: SystemProgram.programId,
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
const voterAccount = await program.account.voter.fetch(voter);
|
|
|
|
console.log(voterAccount);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('Adds an exchange rate', async () => {
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
it('Mints voting rights', async () => {
|
|
|
|
|
|
|
|
});
|
|
|
|
});
|