index.test.ts 1.0 KB

12345678910111213141516171819202122232425
  1. import { expect, test } from 'vitest';
  2. import { createFromRoot, identityVisitor, programNode, rootNode, rootNodeVisitor, voidVisitor } from '../src';
  3. test('it exports node helpers', () => {
  4. expect(typeof rootNode).toBe('function');
  5. });
  6. test('it exports visitors', () => {
  7. expect(typeof identityVisitor).toBe('function');
  8. });
  9. test('it accepts visitors', () => {
  10. const kinobi = createFromRoot(rootNode(programNode({ name: 'myProgram', publicKey: '1111' })));
  11. const visitor = voidVisitor(['rootNode']);
  12. const result = kinobi.accept(visitor) satisfies void;
  13. expect(typeof result).toBe('undefined');
  14. });
  15. test('it updates the root node returned by visitors', () => {
  16. const kinobi = createFromRoot(rootNode(programNode({ name: 'myProgram', publicKey: '1111' })));
  17. const visitor = rootNodeVisitor(node => rootNode(programNode({ ...node.program, name: 'myTransformedProgram' })));
  18. kinobi.update(visitor) satisfies void;
  19. expect(kinobi.getRoot()).toEqual(rootNode(programNode({ name: 'myTransformedProgram', publicKey: '1111' })));
  20. });