ProgramNode.test.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import {
  2. accountNode,
  3. definedTypeNode,
  4. enumTypeNode,
  5. errorNode,
  6. instructionNode,
  7. pdaNode,
  8. programNode,
  9. structTypeNode,
  10. } from '@kinobi-so/nodes';
  11. import test from 'ava';
  12. import {
  13. deleteNodesVisitorMacro,
  14. getDebugStringVisitorMacro,
  15. identityVisitorMacro,
  16. mergeVisitorMacro,
  17. } from './_setup.js';
  18. const node = programNode({
  19. accounts: [
  20. accountNode({ data: structTypeNode([]), name: 'mint' }),
  21. accountNode({ data: structTypeNode([]), name: 'token' }),
  22. ],
  23. definedTypes: [definedTypeNode({ name: 'tokenState', type: enumTypeNode([]) })],
  24. errors: [
  25. errorNode({ code: 1, message: 'Invalid mint', name: 'invalidMint' }),
  26. errorNode({ code: 2, message: 'Invalid token', name: 'invalidToken' }),
  27. ],
  28. instructions: [instructionNode({ name: 'mintTokens' }), instructionNode({ name: 'transferTokens' })],
  29. name: 'splToken',
  30. pdas: [pdaNode({ name: 'associatedToken', seeds: [] })],
  31. publicKey: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
  32. version: '1.2.3',
  33. });
  34. test(mergeVisitorMacro, node, 13);
  35. test(identityVisitorMacro, node);
  36. test(deleteNodesVisitorMacro, node, '[programNode]', null);
  37. test(deleteNodesVisitorMacro, node, '[pdaNode]', { ...node, pdas: [] });
  38. test(deleteNodesVisitorMacro, node, '[accountNode]', { ...node, accounts: [] });
  39. test(deleteNodesVisitorMacro, node, '[instructionNode]', {
  40. ...node,
  41. instructions: [],
  42. });
  43. test(deleteNodesVisitorMacro, node, '[definedTypeNode]', {
  44. ...node,
  45. definedTypes: [],
  46. });
  47. test(deleteNodesVisitorMacro, node, '[errorNode]', { ...node, errors: [] });
  48. test(
  49. getDebugStringVisitorMacro,
  50. node,
  51. `
  52. programNode [splToken.TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA]
  53. | pdaNode [associatedToken]
  54. | accountNode [mint]
  55. | | structTypeNode
  56. | accountNode [token]
  57. | | structTypeNode
  58. | instructionNode [mintTokens]
  59. | instructionNode [transferTokens]
  60. | definedTypeNode [tokenState]
  61. | | enumTypeNode
  62. | | | numberTypeNode [u8]
  63. | errorNode [1.invalidMint]
  64. | errorNode [2.invalidToken]`,
  65. );