mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2025-12-12 03:01:16 +00:00
test(builtin-hotkey): increase designer's code branch coverage to 84.18%
This commit is contained in:
parent
969a130b37
commit
37654cd040
@ -4,7 +4,7 @@ import { focusing } from './focusing';
|
||||
import { insertChildren, TransformStage } from '../document';
|
||||
import clipboard from './clipboard';
|
||||
|
||||
function isInLiveEditing() {
|
||||
export function isInLiveEditing() {
|
||||
if (globalContext.has(Editor)) {
|
||||
return Boolean(
|
||||
globalContext.get(Editor).get('designer')?.project?.simulator?.liveEditing?.editing,
|
||||
@ -12,6 +12,7 @@ function isInLiveEditing() {
|
||||
}
|
||||
}
|
||||
|
||||
/* istanbul ignore next */
|
||||
function getNextForSelect(next: any, head?: any, parent?: any): any {
|
||||
if (next) {
|
||||
if (!head) {
|
||||
@ -42,6 +43,7 @@ function getNextForSelect(next: any, head?: any, parent?: any): any {
|
||||
return null;
|
||||
}
|
||||
|
||||
/* istanbul ignore next */
|
||||
function getPrevForSelect(prev: any, head?: any, parent?: any): any {
|
||||
if (prev) {
|
||||
let ret;
|
||||
@ -150,6 +152,7 @@ hotkey.bind(['command+v', 'ctrl+v'], (e) => {
|
||||
if (isFormEvent(e) || !designer || !doc) {
|
||||
return;
|
||||
}
|
||||
/* istanbul ignore next */
|
||||
clipboard.waitPasteData(e, ({ componentsTree }) => {
|
||||
if (componentsTree) {
|
||||
const { target, index } = designer.getSuitableInsertion(componentsTree) || {};
|
||||
@ -179,7 +182,7 @@ hotkey.bind(['command+z', 'ctrl+z'], (e) => {
|
||||
|
||||
e.preventDefault();
|
||||
const selection = focusing.focusDesigner?.currentSelection;
|
||||
const curSelected = Array.from(selection?.selected || []);
|
||||
const curSelected = Array.from(selection?.selected);
|
||||
his.back();
|
||||
selection?.selectAll(curSelected);
|
||||
});
|
||||
@ -193,7 +196,7 @@ hotkey.bind(['command+y', 'ctrl+y', 'command+shift+z'], (e) => {
|
||||
}
|
||||
e.preventDefault();
|
||||
const selection = focusing.focusDesigner?.currentSelection;
|
||||
const curSelected = Array.from(selection?.selected || []);
|
||||
const curSelected = Array.from(selection?.selected);
|
||||
his.forward();
|
||||
selection?.selectAll(curSelected);
|
||||
});
|
||||
|
||||
@ -4,10 +4,21 @@ import { Designer } from '../../src/designer/designer';
|
||||
import formSchema from '../fixtures/schema/form';
|
||||
import '../../src/designer/builtin-hotkey';
|
||||
import { fireEvent } from '@testing-library/react';
|
||||
import { isInLiveEditing } from '../../src/designer/builtin-hotkey';
|
||||
|
||||
const editor = new Editor();
|
||||
|
||||
let designer: Designer;
|
||||
|
||||
describe('error scenarios', () => {
|
||||
it('edtior not registered', () => {
|
||||
expect(isInLiveEditing()).toBeUndefined();
|
||||
});
|
||||
});
|
||||
|
||||
// keyCode 对应表:https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode
|
||||
// hotkey 模块底层用的 keyCode,所以还不能用 key / code 测试
|
||||
describe('快捷键测试', () => {
|
||||
beforeAll(() => {
|
||||
globalContext.register(editor, Editor);
|
||||
});
|
||||
@ -20,9 +31,6 @@ afterEach(() => {
|
||||
designer = null;
|
||||
});
|
||||
|
||||
// keyCode 对应表:https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode
|
||||
// hotkey 模块底层用的 keyCode,所以还不能用 key / code 测试
|
||||
describe('快捷键测试', () => {
|
||||
it('right', () => {
|
||||
const firstCardNode = designer.currentDocument?.getNode('node_k1ow3cbj')!;
|
||||
firstCardNode.select();
|
||||
@ -242,8 +250,10 @@ describe('快捷键测试', () => {
|
||||
fireEvent.keyDown(document, { keyCode: 46 });
|
||||
expect(designer.currentDocument?.selection.selected[0]).toBe('page');
|
||||
});
|
||||
|
||||
it('isFormEvent: true', () => {
|
||||
const inputDOMNode = document.createElement('INPUT');
|
||||
document.body.appendChild(inputDOMNode);
|
||||
designer.currentDocument?.selection.select('page');
|
||||
// nothing happened
|
||||
|
||||
@ -289,5 +299,68 @@ describe('快捷键测试', () => {
|
||||
fireEvent.keyDown(inputDOMNode, { keyCode: 46 });
|
||||
expect(designer.currentDocument?.selection.selected[0]).toBe('page');
|
||||
});
|
||||
|
||||
it('doc is null', () => {
|
||||
designer.currentDocument?.selection.select('page');
|
||||
designer.project.documents = [];
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 39 });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 37 });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 40 });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 38 });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 39, altKey: true });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 37, altKey: true });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 40, altKey: true });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 38, altKey: true });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 90, metaKey: true });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 89, metaKey: true });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 67, metaKey: true });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 86, metaKey: true });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 27 });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 46 });
|
||||
});
|
||||
|
||||
it('selected is []', () => {
|
||||
fireEvent.keyDown(document, { keyCode: 39 });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 37 });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 40 });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 38 });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 39, altKey: true });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 37, altKey: true });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 40, altKey: true });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 38, altKey: true });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 90, metaKey: true });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 89, metaKey: true });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 67, metaKey: true });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 86, metaKey: true });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 27 });
|
||||
|
||||
fireEvent.keyDown(document, { keyCode: 46 });
|
||||
});
|
||||
});
|
||||
});
|
||||
@ -128,7 +128,7 @@ it('isRowContainer', () => {
|
||||
.fn(() => {
|
||||
return {
|
||||
getPropertyValue: (pName) => {
|
||||
return pName === 'display' ? 'flex' : 'row';
|
||||
return pName === 'display' ? 'flex' : '';
|
||||
},
|
||||
};
|
||||
})
|
||||
@ -138,9 +138,17 @@ it('isRowContainer', () => {
|
||||
return pName === 'display' ? 'flex' : 'column';
|
||||
},
|
||||
};
|
||||
})
|
||||
.mockImplementationOnce(() => {
|
||||
return {
|
||||
getPropertyValue: (pName) => {
|
||||
return pName === 'display' ? 'grid' : 'column';
|
||||
},
|
||||
};
|
||||
});
|
||||
expect(isRowContainer(getMockElement('div'))).toBeFalsy();
|
||||
expect(isRowContainer(getMockElement('div'))).toBeTruthy();
|
||||
expect(isRowContainer(getMockElement('div'))).toBeTruthy();
|
||||
});
|
||||
|
||||
it('isChildInline', () => {
|
||||
@ -179,6 +187,10 @@ it('isVerticalContainer', () => {
|
||||
it('isVertical', () => {
|
||||
expect(isVertical({ elements: [] })).toBeFalsy();
|
||||
expect(isVertical({ elements: [getMockElement('div')] })).toBeFalsy();
|
||||
const e1 = getMockElement('div');
|
||||
const e2 = getMockElement('div');
|
||||
e2.appendChild(e1);
|
||||
expect(isVertical({ elements: [e1] })).toBeTruthy();
|
||||
window.getComputedStyle = jest
|
||||
.fn(() => {
|
||||
return {
|
||||
@ -193,4 +205,5 @@ it('isVertical', () => {
|
||||
it('getWindow', () => {
|
||||
const mockElem = getMockElement('div');
|
||||
expect(getWindow(mockElem)).toBe(window);
|
||||
expect(getWindow(document)).toBe(window);
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user