AccountNode.test.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import {
  2. accountNode,
  3. numberTypeNode,
  4. pdaLinkNode,
  5. publicKeyTypeNode,
  6. sizeDiscriminatorNode,
  7. structFieldTypeNode,
  8. structTypeNode,
  9. } from '@kinobi-so/nodes';
  10. import test from 'ava';
  11. import {
  12. deleteNodesVisitorMacro,
  13. getDebugStringVisitorMacro,
  14. identityVisitorMacro,
  15. mergeVisitorMacro,
  16. } from './_setup.js';
  17. const node = accountNode({
  18. data: structTypeNode([
  19. structFieldTypeNode({ name: 'mint', type: publicKeyTypeNode() }),
  20. structFieldTypeNode({ name: 'owner', type: publicKeyTypeNode() }),
  21. structFieldTypeNode({ name: 'amount', type: numberTypeNode('u64') }),
  22. ]),
  23. discriminators: [sizeDiscriminatorNode(72)],
  24. name: 'token',
  25. pda: pdaLinkNode('associatedToken'),
  26. size: 72,
  27. });
  28. test(mergeVisitorMacro, node, 10);
  29. test(identityVisitorMacro, node);
  30. test(deleteNodesVisitorMacro, node, '[accountNode]', null);
  31. test(deleteNodesVisitorMacro, node, '[pdaLinkNode]', accountNode({ ...node, pda: undefined }));
  32. test(
  33. getDebugStringVisitorMacro,
  34. node,
  35. `
  36. accountNode [token]
  37. | structTypeNode
  38. | | structFieldTypeNode [mint]
  39. | | | publicKeyTypeNode
  40. | | structFieldTypeNode [owner]
  41. | | | publicKeyTypeNode
  42. | | structFieldTypeNode [amount]
  43. | | | numberTypeNode [u64]
  44. | pdaLinkNode [associatedToken]
  45. | sizeDiscriminatorNode [72]`,
  46. );