ProgramNode.test.ts 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import {
  2. accountNode,
  3. bytesTypeNode,
  4. bytesValueNode,
  5. constantPdaSeedNodeFromProgramId,
  6. definedTypeNode,
  7. errorNode,
  8. fieldDiscriminatorNode,
  9. fixedSizeTypeNode,
  10. instructionArgumentNode,
  11. instructionNode,
  12. pdaLinkNode,
  13. pdaNode,
  14. programNode,
  15. structTypeNode,
  16. } from '@codama/nodes';
  17. import { expect, test } from 'vitest';
  18. import { programNodeFromAnchorV00 } from '../../src';
  19. test('it creates program nodes', () => {
  20. const node = programNodeFromAnchorV00({
  21. accounts: [{ name: 'myAccount', seeds: [{ kind: 'programId' }], type: { fields: [], kind: 'struct' } }],
  22. errors: [{ code: 42, msg: 'my error message', name: 'myError' }],
  23. instructions: [{ accounts: [], args: [], name: 'myInstruction' }],
  24. metadata: { address: '1111', origin: 'shank' },
  25. name: 'myProgram',
  26. types: [{ name: 'myType', type: { fields: [], kind: 'struct' } }],
  27. version: '1.2.3',
  28. });
  29. expect(node).toEqual(
  30. programNode({
  31. accounts: [accountNode({ name: 'myAccount', pda: pdaLinkNode('myAccount') })],
  32. definedTypes: [definedTypeNode({ name: 'myType', type: structTypeNode([]) })],
  33. errors: [
  34. errorNode({
  35. code: 42,
  36. docs: ['myError: my error message'],
  37. message: 'my error message',
  38. name: 'myError',
  39. }),
  40. ],
  41. instructions: [
  42. instructionNode({
  43. arguments: [
  44. instructionArgumentNode({
  45. defaultValue: bytesValueNode('base16', (0).toString(16)),
  46. defaultValueStrategy: 'omitted',
  47. name: 'discriminator',
  48. type: fixedSizeTypeNode(bytesTypeNode(), 1),
  49. }),
  50. ],
  51. discriminators: [fieldDiscriminatorNode('discriminator')],
  52. name: 'myInstruction',
  53. }),
  54. ],
  55. name: 'myProgram',
  56. origin: 'shank',
  57. pdas: [pdaNode({ name: 'myAccount', seeds: [constantPdaSeedNodeFromProgramId()] })],
  58. publicKey: '1111',
  59. version: '1.2.3',
  60. }),
  61. );
  62. });