@ordojs/core
Version:
Core compiler and runtime for OrdoJS framework
51 lines (43 loc) • 1.43 kB
text/typescript
/**
* @fileoverview Simple Parser Tests - Basic functionality tests
*/
import { describe, expect, it } from 'vitest';
import { OrdoJSLexer } from './lexer.js';
import { OrdoJSParser } from './parser.js';
describe('OrdoJSParser - Basic Tests', () => {
it('should parse minimal component', () => {
const source = `
component TestComponent {
markup {
<div>Hello World</div>
}
}
`;
const lexer = new OrdoJSLexer(source, 'test.ordo');
const tokens = lexer.tokenize();
const parser = new OrdoJSParser(tokens, {}, 'test.ordo');
const ast = parser.parse();
expect(ast.component.name).toBe('TestComponent');
expect(ast.component.type).toBe('Component');
expect(ast.component.markupBlock).toBeDefined();
});
it('should parse component with reactive variable', () => {
const source = `
component TestComponent {
client {
let count = 0;
}
markup {
<div>{count}</div>
}
}
`;
const lexer = new OrdoJSLexer(source, 'test.ordo');
const tokens = lexer.tokenize();
const parser = new OrdoJSParser(tokens, {}, 'test.ordo');
const ast = parser.parse();
expect(ast.component.clientBlock).toBeDefined();
expect(ast.component.clientBlock!.reactiveVariables).toHaveLength(1);
expect(ast.component.clientBlock!.reactiveVariables[0].name).toBe('count');
});
});