1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import * as anchor from "@project-serum/anchor";
- import { AnchorProgramExample } from "../target/types/anchor_program_example";
- describe("PDAs", () => {
- const provider = anchor.AnchorProvider.env();
- anchor.setProvider(provider);
- const payer = provider.wallet as anchor.Wallet;
- const program = anchor.workspace.AnchorProgramExample as anchor.Program<AnchorProgramExample>;
- let testUser = anchor.web3.Keypair.generate();
- it("Create a test user", async () => {
- let ix = anchor.web3.SystemProgram.createAccount({
- fromPubkey: payer.publicKey,
- lamports: await provider.connection.getMinimumBalanceForRentExemption(0),
- newAccountPubkey: testUser.publicKey,
- programId: anchor.web3.SystemProgram.programId,
- space: 0,
- });
- await anchor.web3.sendAndConfirmTransaction(
- provider.connection,
- new anchor.web3.Transaction().add(ix),
- [payer.payer, testUser]
- );
- console.log(`Local Wallet: ${payer.publicKey}`);
- console.log(`Created User: ${testUser.publicKey}`);
- });
- function derivePageVisitsPda(userPubkey: anchor.web3.PublicKey) {
- return anchor.web3.PublicKey.findProgramAddressSync(
- [Buffer.from("page_visits"), userPubkey.toBuffer()],
- program.programId,
- )[0]
- }
- it("Create the page visits tracking PDA", async () => {
- await program.methods.createPageVisits()
- .accounts({
- pageVisits: derivePageVisitsPda(testUser.publicKey),
- user: testUser.publicKey,
- payer: payer.publicKey,
- systemProgram: anchor.web3.SystemProgram.programId,
- })
- .signers([payer.payer])
- .rpc();
- });
- it("Visit the page!", async () => {
- await program.methods.incrementPageVisits()
- .accounts({
- pageVisits: derivePageVisitsPda(testUser.publicKey),
- user: testUser.publicKey,
- payer: payer.publicKey,
- })
- .signers([payer.payer])
- .rpc();
- });
- it("Visit the page!", async () => {
- await program.methods.incrementPageVisits()
- .accounts({
- pageVisits: derivePageVisitsPda(testUser.publicKey),
- user: testUser.publicKey,
- payer: payer.publicKey,
- })
- .signers([payer.payer])
- .rpc();
- });
- it("View page visits", async () => {
- const pageVisits = await program.account.pageVisits.fetch(
- await derivePageVisitsPda(testUser.publicKey)
- );
- console.log(`Number of page visits: ${pageVisits.pageVisits}`);
- });
- });
|