mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-08-15 19:24:23 +08:00
- 为 Monaco 编辑器及语言服务接入独立 Worker - 限制大规模对象元数据与列装饰扫描范围 - 仅在按下导航修饰键时更新悬停状态 - 避免同一数据库上下文重复重建装饰并补充回归测试
29 lines
1.3 KiB
TypeScript
29 lines
1.3 KiB
TypeScript
import { describe, expect, it, vi } from 'vitest';
|
|
|
|
import { installMonacoWorkerEnvironment } from './MonacoEditor';
|
|
|
|
describe('MonacoEditor worker environment', () => {
|
|
it('routes Monaco languages to bundled workers', () => {
|
|
const createWorker = (name: string) => vi.fn(() => ({ name } as unknown as Worker));
|
|
const workers = {
|
|
editor: createWorker('editor'),
|
|
json: createWorker('json'),
|
|
css: createWorker('css'),
|
|
html: createWorker('html'),
|
|
typescript: createWorker('typescript'),
|
|
};
|
|
const scope: Record<string, any> = {};
|
|
|
|
installMonacoWorkerEnvironment(scope, workers);
|
|
|
|
expect(scope.MonacoEnvironment.getWorker('', 'json')).toEqual({ name: 'json' });
|
|
expect(scope.MonacoEnvironment.getWorker('', 'css')).toEqual({ name: 'css' });
|
|
expect(scope.MonacoEnvironment.getWorker('', 'scss')).toEqual({ name: 'css' });
|
|
expect(scope.MonacoEnvironment.getWorker('', 'html')).toEqual({ name: 'html' });
|
|
expect(scope.MonacoEnvironment.getWorker('', 'handlebars')).toEqual({ name: 'html' });
|
|
expect(scope.MonacoEnvironment.getWorker('', 'typescript')).toEqual({ name: 'typescript' });
|
|
expect(scope.MonacoEnvironment.getWorker('', 'javascript')).toEqual({ name: 'typescript' });
|
|
expect(scope.MonacoEnvironment.getWorker('', 'sql')).toEqual({ name: 'editor' });
|
|
});
|
|
});
|