diff --git a/packages/designer/jest.config.js b/packages/designer/jest.config.js index f602b9754..47c4472c5 100644 --- a/packages/designer/jest.config.js +++ b/packages/designer/jest.config.js @@ -1,13 +1,16 @@ -const esModules = ['@recore/obx-react'].join('|'); +const fs = require('fs'); +const { join } = require('path'); +const esModules = ['zen-logger'].join('|'); +const pkgNames = fs.readdirSync(join('..')).filter(pkgName => !pkgName.startsWith('.')); -module.exports = { +const jestConfig = { // transform: { // '^.+\\.[jt]sx?$': 'babel-jest', // // '^.+\\.(ts|tsx)$': 'ts-jest', // // '^.+\\.(js|jsx)$': 'babel-jest', // }, // testMatch: ['**/document/node/node.test.ts'], - // testMatch: ['**/designer/bultin-hotkey.test.ts'], + // testMatch: ['**/designer/builtin-hotkey.test.ts'], // testMatch: ['**/plugin/plugin-manager.test.ts'], // testMatch: ['(/tests?/.*(test))\\.[jt]s$'], transformIgnorePatterns: [ @@ -32,3 +35,9 @@ module.exports = { '!**/vendor/**', ], }; + +// 只对本仓库内的 pkg 做 mapping +jestConfig.moduleNameMapper = {}; +jestConfig.moduleNameMapper[`^@alilc/lowcode\\-(${pkgNames.join('|')})$`] = '/../$1/src'; + +module.exports = jestConfig; \ No newline at end of file diff --git a/packages/designer/tests/designer/active-tracker.test.ts b/packages/designer/tests/designer/active-tracker.test.ts index 860a03d08..cea47a08a 100644 --- a/packages/designer/tests/designer/active-tracker.test.ts +++ b/packages/designer/tests/designer/active-tracker.test.ts @@ -1,3 +1,4 @@ +import '../fixtures/window'; import { ActiveTracker } from '../../src/designer/active-tracker'; it('ActiveTracker 测试,Node', () => { diff --git a/packages/designer/tests/designer/builtin-hotkey.test.ts b/packages/designer/tests/designer/builtin-hotkey.test.ts index 31f178531..dafeeb612 100644 --- a/packages/designer/tests/designer/builtin-hotkey.test.ts +++ b/packages/designer/tests/designer/builtin-hotkey.test.ts @@ -2,6 +2,7 @@ import '../fixtures/window'; import { Editor, globalContext } from '@alilc/lowcode-editor-core'; import { Designer } from '../../src/designer/designer'; import formSchema from '../fixtures/schema/form'; +import '../../src/designer/builtin-hotkey'; import { fireEvent } from '@testing-library/react'; const editor = new Editor(); @@ -242,49 +243,50 @@ describe('快捷键测试', () => { expect(designer.currentDocument?.selection.selected[0]).toBe('page'); }); it('isFormEvent: true', () => { + const inputDOMNode = document.createElement('INPUT'); designer.currentDocument?.selection.select('page'); // nothing happened - fireEvent.keyDown(document, { keyCode: 39 }); + fireEvent.keyDown(inputDOMNode, { keyCode: 39 }); expect(designer.currentDocument?.selection.selected[0]).toBe('page'); - fireEvent.keyDown(document, { keyCode: 37 }); + fireEvent.keyDown(inputDOMNode, { keyCode: 37 }); expect(designer.currentDocument?.selection.selected[0]).toBe('page'); - fireEvent.keyDown(document, { keyCode: 40 }); + fireEvent.keyDown(inputDOMNode, { keyCode: 40 }); expect(designer.currentDocument?.selection.selected[0]).toBe('page'); - fireEvent.keyDown(document, { keyCode: 38 }); + fireEvent.keyDown(inputDOMNode, { keyCode: 38 }); expect(designer.currentDocument?.selection.selected[0]).toBe('page'); - fireEvent.keyDown(document, { keyCode: 39, altKey: true }); + fireEvent.keyDown(inputDOMNode, { keyCode: 39, altKey: true }); expect(designer.currentDocument?.selection.selected[0]).toBe('page'); - fireEvent.keyDown(document, { keyCode: 37, altKey: true }); + fireEvent.keyDown(inputDOMNode, { keyCode: 37, altKey: true }); expect(designer.currentDocument?.selection.selected[0]).toBe('page'); - fireEvent.keyDown(document, { keyCode: 40, altKey: true }); + fireEvent.keyDown(inputDOMNode, { keyCode: 40, altKey: true }); expect(designer.currentDocument?.selection.selected[0]).toBe('page'); - fireEvent.keyDown(document, { keyCode: 38, altKey: true }); + fireEvent.keyDown(inputDOMNode, { keyCode: 38, altKey: true }); expect(designer.currentDocument?.selection.selected[0]).toBe('page'); - fireEvent.keyDown(document, { keyCode: 90, metaKey: true }); + fireEvent.keyDown(inputDOMNode, { keyCode: 90, metaKey: true }); expect(designer.currentDocument?.selection.selected[0]).toBe('page'); - fireEvent.keyDown(document, { keyCode: 89, metaKey: true }); + fireEvent.keyDown(inputDOMNode, { keyCode: 89, metaKey: true }); expect(designer.currentDocument?.selection.selected[0]).toBe('page'); - fireEvent.keyDown(document, { keyCode: 67, metaKey: true }); + fireEvent.keyDown(inputDOMNode, { keyCode: 67, metaKey: true }); expect(designer.currentDocument?.selection.selected[0]).toBe('page'); - fireEvent.keyDown(document, { keyCode: 86, metaKey: true }); + fireEvent.keyDown(inputDOMNode, { keyCode: 86, metaKey: true }); expect(designer.currentDocument?.selection.selected[0]).toBe('page'); - fireEvent.keyDown(document, { keyCode: 27 }); + fireEvent.keyDown(inputDOMNode, { keyCode: 27 }); expect(designer.currentDocument?.selection.selected[0]).toBe('page'); - fireEvent.keyDown(document, { keyCode: 46 }); + fireEvent.keyDown(inputDOMNode, { keyCode: 46 }); expect(designer.currentDocument?.selection.selected[0]).toBe('page'); }); }); diff --git a/packages/designer/tests/designer/setting/setting-prop-entry.test.ts b/packages/designer/tests/designer/setting/setting-prop-entry.test.ts index 7dbc2805d..72b394035 100644 --- a/packages/designer/tests/designer/setting/setting-prop-entry.test.ts +++ b/packages/designer/tests/designer/setting/setting-prop-entry.test.ts @@ -75,7 +75,8 @@ describe('setting-prop-entry 测试', () => { const prop1 = mockTopEntry.getProp('a'); prop1.extraProps = { getValue: (prop, val) => `prefix ${val}`, - setValue: (prop, val) => { prop.setValue(`modified ${val}`, false, false, { disableMutator: true }) }, + // prop 是 shell prop entry + setValue: (prop, val) => { prop.setValue(`modified ${val}`, { disableMutator: true }) }, defaultValue: 'default', }; diff --git a/packages/designer/tests/fixtures/window.ts b/packages/designer/tests/fixtures/window.ts index fa28ee588..86d1787b7 100644 --- a/packages/designer/tests/fixtures/window.ts +++ b/packages/designer/tests/fixtures/window.ts @@ -18,5 +18,5 @@ Object.defineProperty(window, 'React', { }); window.scrollTo = () => {}; - window.console.warn = () => {}; +window.React = window.React || {}; diff --git a/packages/shell/src/setting-prop-entry.ts b/packages/shell/src/setting-prop-entry.ts index 53229c2b1..572b89f44 100644 --- a/packages/shell/src/setting-prop-entry.ts +++ b/packages/shell/src/setting-prop-entry.ts @@ -1,4 +1,4 @@ -import { SettingField } from '@alilc/lowcode-designer'; +import { SettingField, ISetValueOptions } from '@alilc/lowcode-designer'; import { CompositeValue, FieldConfig } from '@alilc/lowcode-types'; import { settingPropEntrySymbol } from './symbols'; import Node from './node'; @@ -111,8 +111,8 @@ export default class SettingPropEntry { * 设置值 * @param val 值 */ - setValue(val: CompositeValue) { - this[settingPropEntrySymbol].setValue(val); + setValue(val: CompositeValue, extraOptions?: ISetValueOptions) { + this[settingPropEntrySymbol].setValue(val, false, false, extraOptions); } /**