test.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import * as anchor from "@coral-xyz/anchor"
  2. import { AnchorProgramExample } from "../target/types/anchor_program_example"
  3. import { PublicKey } from "@solana/web3.js"
  4. describe("PDAs", () => {
  5. const provider = anchor.AnchorProvider.env()
  6. anchor.setProvider(provider)
  7. const payer = provider.wallet as anchor.Wallet
  8. const program = anchor.workspace
  9. .AnchorProgramExample as anchor.Program<AnchorProgramExample>
  10. // PDA for the page visits account
  11. const [pageVisitPDA] = PublicKey.findProgramAddressSync(
  12. [Buffer.from("page_visits"), payer.publicKey.toBuffer()],
  13. program.programId
  14. )
  15. it("Create the page visits tracking PDA", async () => {
  16. await program.methods
  17. .createPageVisits()
  18. .accounts({
  19. payer: payer.publicKey,
  20. pageVisits: pageVisitPDA,
  21. })
  22. .rpc()
  23. })
  24. it("Visit the page!", async () => {
  25. await program.methods
  26. .incrementPageVisits()
  27. .accounts({
  28. user: payer.publicKey,
  29. pageVisits: pageVisitPDA,
  30. })
  31. .rpc()
  32. })
  33. it("Visit the page!", async () => {
  34. await program.methods
  35. .incrementPageVisits()
  36. .accounts({
  37. user: payer.publicKey,
  38. pageVisits: pageVisitPDA,
  39. })
  40. .rpc()
  41. })
  42. it("View page visits", async () => {
  43. const pageVisits = await program.account.pageVisits.fetch(pageVisitPDA)
  44. console.log(`Number of page visits: ${pageVisits.pageVisits}`)
  45. })
  46. })