Files
vtj/packages/coder/tests/parser/composition/composables.test.ts

44 lines
1.4 KiB
TypeScript

import { expect, describe, test } from 'vitest';
import { parseComposables } from '../../../src/parser/composition/composables';
import { buildSymbolTable } from '../../../src/parser/composition/symbolTable';
describe('parseComposables', () => {
test('should parse composable with destructure', () => {
const dsl = {
id: 'test',
name: 'Test',
composables: [
{
composable: 'useUserStore',
from: '@/store/user',
destructure: ['user', 'login']
}
]
} as any;
const symbols = buildSymbolTable(dsl);
const result = parseComposables(dsl.composables, symbols);
expect(result.statements[0]).toContain(
'const { user, login } = useUserStore()'
);
});
test('should parse composable without destructure', () => {
const dsl = {
id: 'test',
name: 'Test',
composables: [
{ name: 'mouse', composable: 'useMouse', from: '@vueuse/core' }
]
} as any;
const symbols = buildSymbolTable(dsl);
const result = parseComposables(dsl.composables, symbols);
expect(result.statements[0]).toContain('const mouse = useMouse()');
});
test('should handle empty composables', () => {
const symbols = buildSymbolTable({ id: 'test', name: 'Test' } as any);
const result = parseComposables([], symbols);
expect(result.statements).toEqual([]);
});
});