diff --git a/packages/core/test/specs/commands/index.ts b/packages/core/test/specs/commands/index.ts index 0aed392ae..14651266c 100644 --- a/packages/core/test/specs/commands/index.ts +++ b/packages/core/test/specs/commands/index.ts @@ -1,6 +1,6 @@ -import Commands from '../../../src/commands'; import EditorModel from '../../../src/editor/model/Editor'; -import { Command, CommandFunction } from '../../../src/commands/view/CommandAbstract'; +import type Commands from '../../../src/commands'; +import type { Command, CommandFunction, CommandOptions } from '../../../src/commands/view/CommandAbstract'; describe('Commands', () => { describe('Main', () => { @@ -95,54 +95,34 @@ describe('Commands', () => { expect(Object.keys(obj.getActive()).length).toBe(0); }); - test('Run command and check if defaultOptions are passed or not', () => { - const defaultOptions = { key: 'defaultValue' }; - const customOptions = { key: 'customValue' }; - const mergedOptions = { ...defaultOptions, ...customOptions }; + test('Run command and check if none, custom, and default options are passed', () => { + const customOptions = { customValue: 'customValue' }; + const defaultOptions = { defaultValue: 'defaultValue' }; - const comm = { - run: jest.fn(() => commResultRun), // Mock the run method - }; + // Create a function that returns the options + const runFn = (_editor: any, _sender: any, options: any) => options; // Add the command - obj.add(commName, comm); - expect(obj.isActive(commName)).toBe(false); + obj.add(commName, { run: runFn }); - // Run the command without defaultOptions - let result = obj.run(commName, customOptions); - expect(result).toBe(commResultRun); - expect(comm.run).toHaveBeenCalledWith( - expect.any(Object), // The `em` object - expect.objectContaining(customOptions), - ); - expect(obj.isActive(commName)).toBe(false); + // Run the command without custom options + let result = obj.run(commName); + expect(result).toEqual({}); + + // Run the command with custom options + result = obj.run(commName, customOptions); + expect(result).toEqual(customOptions); - // Configure defaultOptions - em.config.commands = { - defaultOptions: { - [commName]: { - run: (opts) => ({ ...defaultOptions, ...opts }), // Merge defaultOptions with provided options - }, + // Set default options for the command + obj.config.defaultOptions = { + [commName]: { + run: (options: CommandOptions) => ({ ...options, ...defaultOptions }), }, }; - // Run the command without custom options - result = obj.run(commName); - expect(result).toBe(commResultRun); - expect(comm.run).toHaveBeenCalledWith( - expect.any(Object), // The `em` object - expect.objectContaining(defaultOptions), - ); - expect(obj.isActive(commName)).toBe(false); - - // Run the command with custom options + // Run the command with default options result = obj.run(commName, customOptions); - expect(result).toBe(commResultRun); - expect(comm.run).toHaveBeenCalledWith( - expect.any(Object), // The `em` object - expect.objectContaining(mergedOptions), - ); - expect(obj.isActive(commName)).toBe(false); + expect(result).toEqual({ ...customOptions, ...defaultOptions }); }); }); });