| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import {
- accountNode,
- constantPdaSeedNodeFromProgramId,
- constantPdaSeedNodeFromString,
- pdaLinkNode,
- pdaNode,
- programNode,
- publicKeyTypeNode,
- variablePdaSeedNode,
- } from '@codama/nodes';
- import { visit } from '@codama/visitors-core';
- import { test } from 'vitest';
- import { getRenderMapVisitor } from '../src';
- import { renderMapContains } from './_setup';
- test('it renders PDA helpers for PDA', async () => {
- // Given the following program with 1 account and 1 pda with seeds.
- const node = programNode({
- accounts: [accountNode({ name: 'foo', pda: pdaLinkNode('bar') })],
- name: 'myProgram',
- pdas: [
- pdaNode({
- name: 'bar',
- seeds: [
- constantPdaSeedNodeFromProgramId(),
- constantPdaSeedNodeFromString('utf8', 'bar'),
- variablePdaSeedNode('authority', publicKeyTypeNode()),
- ],
- }),
- ],
- publicKey: '1111',
- });
- // When we render it.
- const renderMap = visit(node, getRenderMapVisitor());
- // Then we expect the following fetch helper functions delegating to findBarPda.
- await renderMapContains(renderMap, 'accounts/foo.ts', [
- 'export function findFooPda',
- 'export async function fetchFooFromSeeds',
- 'export async function safeFetchFooFromSeeds',
- 'publicKeySerializer().serialize(programId)',
- "string({ size: 'variable' }).serialize('bar')",
- 'publicKeySerializer().serialize(seeds.authority)',
- ]);
- });
|