|
@@ -1,6 +1,6 @@
|
|
|
import { expect, test } from 'vitest';
|
|
import { expect, test } from 'vitest';
|
|
|
|
|
|
|
|
-import { identityVisitor, rootNode } from '../src';
|
|
|
|
|
|
|
+import { createFromRoot, identityVisitor, programNode, rootNode, rootNodeVisitor, voidVisitor } from '../src';
|
|
|
|
|
|
|
|
test('it exports node helpers', () => {
|
|
test('it exports node helpers', () => {
|
|
|
expect(typeof rootNode).toBe('function');
|
|
expect(typeof rootNode).toBe('function');
|
|
@@ -9,3 +9,17 @@ test('it exports node helpers', () => {
|
|
|
test('it exports visitors', () => {
|
|
test('it exports visitors', () => {
|
|
|
expect(typeof identityVisitor).toBe('function');
|
|
expect(typeof identityVisitor).toBe('function');
|
|
|
});
|
|
});
|
|
|
|
|
+
|
|
|
|
|
+test('it accepts visitors', () => {
|
|
|
|
|
+ const kinobi = createFromRoot(rootNode(programNode({ name: 'myProgram', publicKey: '1111' })));
|
|
|
|
|
+ const visitor = voidVisitor(['rootNode']);
|
|
|
|
|
+ const result = kinobi.accept(visitor) satisfies void;
|
|
|
|
|
+ expect(typeof result).toBe('undefined');
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+test('it updates the root node returned by visitors', () => {
|
|
|
|
|
+ const kinobi = createFromRoot(rootNode(programNode({ name: 'myProgram', publicKey: '1111' })));
|
|
|
|
|
+ const visitor = rootNodeVisitor(node => rootNode(programNode({ ...node.program, name: 'myTransformedProgram' })));
|
|
|
|
|
+ kinobi.update(visitor) satisfies void;
|
|
|
|
|
+ expect(kinobi.getRoot()).toEqual(rootNode(programNode({ name: 'myTransformedProgram', publicKey: '1111' })));
|
|
|
|
|
+});
|