InstructionAccountNode.test.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { instructionAccountNode } from '@codama/nodes';
  2. import { expect, test } from 'vitest';
  3. import { instructionAccountNodeFromAnchorV00, instructionAccountNodesFromAnchorV00 } from '../../src';
  4. test('it creates instruction account nodes', () => {
  5. const node = instructionAccountNodeFromAnchorV00({
  6. docs: ['my docs'],
  7. isMut: true,
  8. isOptional: true,
  9. isSigner: false,
  10. name: 'myInstructionAccount',
  11. });
  12. expect(node).toEqual(
  13. instructionAccountNode({
  14. docs: ['my docs'],
  15. isOptional: true,
  16. isSigner: false,
  17. isWritable: true,
  18. name: 'myInstructionAccount',
  19. }),
  20. );
  21. });
  22. test('it flattens nested instruction accounts', () => {
  23. const nodes = instructionAccountNodesFromAnchorV00([
  24. { isMut: false, isSigner: false, name: 'accountA' },
  25. {
  26. accounts: [
  27. { isMut: true, isSigner: false, name: 'accountB' },
  28. { isMut: false, isSigner: true, name: 'accountC' },
  29. ],
  30. name: 'nested',
  31. },
  32. { isMut: true, isSigner: true, name: 'accountD' },
  33. ]);
  34. expect(nodes).toEqual([
  35. instructionAccountNode({ isSigner: false, isWritable: false, name: 'accountA' }),
  36. instructionAccountNode({ isSigner: false, isWritable: true, name: 'accountB' }),
  37. instructionAccountNode({ isSigner: true, isWritable: false, name: 'accountC' }),
  38. instructionAccountNode({ isSigner: true, isWritable: true, name: 'accountD' }),
  39. ]);
  40. });