mirror of
https://gitee.com/newgateway/vtj.git
synced 2026-06-25 14:39:02 +08:00
44 lines
1.4 KiB
TypeScript
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([]);
|
|
});
|
|
});
|