editor.js/test/unit/components/modules/api/tools.test.ts
2025-11-16 07:32:01 +03:00

58 lines
1.7 KiB
TypeScript

import { describe, it, expect } from 'vitest';
import ToolsAPI from '../../../../../src/components/modules/api/tools';
import EventsDispatcher from '../../../../../src/components/utils/events';
import type { ModuleConfig } from '../../../../../src/types-internal/module-config';
import type { EditorModules } from '../../../../../src/types-internal/editor-modules';
import type { EditorConfig } from '../../../../../types';
import type { EditorEventMap } from '../../../../../src/components/events';
import type BlockToolAdapter from '../../../../../src/components/tools/block';
type CreateToolsApiResult = {
toolsApi: ToolsAPI;
blockTools: Map<string, BlockToolAdapter>;
};
const createToolsApi = (
blockToolsEntries: Array<[string, BlockToolAdapter]> = []
): CreateToolsApiResult => {
const eventsDispatcher = new EventsDispatcher<EditorEventMap>();
const moduleConfig: ModuleConfig = {
config: {} as EditorConfig,
eventsDispatcher,
};
const toolsApi = new ToolsAPI(moduleConfig);
const blockTools = new Map(blockToolsEntries);
toolsApi.state = {
Tools: {
blockTools,
},
} as unknown as EditorModules;
return {
toolsApi,
blockTools,
};
};
describe('ToolsAPI', () => {
it('exposes getBlockTools via methods getter', () => {
const toolA = { name: 'toolA' } as unknown as BlockToolAdapter;
const toolB = { name: 'toolB' } as unknown as BlockToolAdapter;
const { toolsApi } = createToolsApi([
['toolA', toolA],
['toolB', toolB],
]);
expect(toolsApi.methods.getBlockTools()).toEqual([toolA, toolB]);
});
it('returns empty list when no block tools are registered', () => {
const { toolsApi } = createToolsApi();
expect(toolsApi.methods.getBlockTools()).toEqual([]);
});
});