mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2026-01-13 17:48:13 +00:00
183 lines
4.8 KiB
TypeScript
183 lines
4.8 KiB
TypeScript
import '../fixtures/window';
|
|
// import { Project } from '../../src/project/project';
|
|
// import { Node } from '../../src/document/node/node';
|
|
// import { Editor } from '@ali/lowcode-editor-core';
|
|
// import { Designer } from '@ali/lowcode-designer';
|
|
import { designer } from '../../src/reducers';
|
|
import DragEngine from '../../src/drag-engine';
|
|
import formSchema from '../fixtures/schema/form';
|
|
|
|
// const editor = new Editor();
|
|
// const designer = new Designer({ editor });
|
|
designer.project.open(formSchema);
|
|
|
|
const mockBoostPrototype = jest.fn((e: MouseEvent) => {
|
|
return {
|
|
isPrototype: true,
|
|
getComponentName() {
|
|
return 'Div';
|
|
},
|
|
};
|
|
});
|
|
|
|
const mockBoostNode = jest.fn((e: MouseEvent) => {
|
|
return designer.currentDocument?.getNode('node_k1ow3cbo');
|
|
});
|
|
|
|
const mockBoostNodeData = jest.fn((e: MouseEvent) => {
|
|
return {
|
|
type: 'NodeData',
|
|
componentName: 'Div',
|
|
};
|
|
});
|
|
|
|
const mockBoostNull = jest.fn((e: MouseEvent) => {
|
|
return null;
|
|
});
|
|
|
|
const mockDragstart = jest.fn();
|
|
const mockDrag = jest.fn();
|
|
const mockDragend = jest.fn();
|
|
|
|
describe('drag-engine 测试', () => {
|
|
it('prototype', async () => {
|
|
DragEngine.from(document, mockBoostPrototype);
|
|
|
|
DragEngine.onDragstart(mockDragstart);
|
|
DragEngine.onDrag(mockDrag);
|
|
DragEngine.onDragend(mockDragend);
|
|
|
|
const mousedownEvt = new MouseEvent('mousedown');
|
|
document.dispatchEvent(mousedownEvt);
|
|
designer.dragon.emitter.emit('dragstart', {
|
|
dragObject: {
|
|
nodes: [designer.currentDocument?.getNode('node_k1ow3cbo')],
|
|
},
|
|
originalEvent: mousedownEvt,
|
|
});
|
|
|
|
// await new Promise(resolve => resolve(setTimeout, 500));
|
|
|
|
expect(mockDragstart).toHaveBeenCalled();
|
|
|
|
designer.dragon.emitter.emit('drag', {
|
|
dragObject: {
|
|
nodes: [designer.currentDocument?.getNode('node_k1ow3cbo')],
|
|
},
|
|
originalEvent: mousedownEvt,
|
|
});
|
|
|
|
expect(mockDrag).toHaveBeenCalled();
|
|
expect(DragEngine.inDragging()).toBeTruthy;
|
|
|
|
designer.dragon.emitter.emit('dragend', {
|
|
dragObject: {
|
|
nodes: [designer.currentDocument?.getNode('node_k1ow3cbo')],
|
|
},
|
|
originalEvent: mousedownEvt,
|
|
});
|
|
|
|
expect(mockDragend).toHaveBeenCalled();
|
|
});
|
|
|
|
it('Node', async () => {
|
|
DragEngine.from(document, mockBoostNode);
|
|
|
|
DragEngine.onDragstart(mockDragstart);
|
|
DragEngine.onDrag(mockDrag);
|
|
DragEngine.onDragend(mockDragend);
|
|
|
|
const mousedownEvt = new MouseEvent('mousedown');
|
|
document.dispatchEvent(mousedownEvt);
|
|
designer.dragon.emitter.emit('dragstart', {
|
|
dragObject: {
|
|
nodes: [designer.currentDocument?.getNode('node_k1ow3cbo')],
|
|
},
|
|
originalEvent: mousedownEvt,
|
|
});
|
|
|
|
// await new Promise(resolve => resolve(setTimeout, 500));
|
|
|
|
expect(mockDragstart).toHaveBeenCalled();
|
|
|
|
designer.dragon.emitter.emit('drag', {
|
|
dragObject: {
|
|
nodes: [designer.currentDocument?.getNode('node_k1ow3cbo')],
|
|
},
|
|
originalEvent: mousedownEvt,
|
|
});
|
|
|
|
expect(mockDrag).toHaveBeenCalled();
|
|
|
|
designer.dragon.emitter.emit('dragend', {
|
|
dragObject: {
|
|
nodes: [designer.currentDocument?.getNode('node_k1ow3cbo')],
|
|
},
|
|
originalEvent: mousedownEvt,
|
|
});
|
|
|
|
expect(mockDragend).toHaveBeenCalled();
|
|
});
|
|
|
|
it('NodeData', async () => {
|
|
DragEngine.from(document, mockBoostNodeData);
|
|
|
|
DragEngine.onDragstart(mockDragstart);
|
|
DragEngine.onDrag(mockDrag);
|
|
DragEngine.onDragend(mockDragend);
|
|
|
|
const mousedownEvt = new MouseEvent('mousedown');
|
|
document.dispatchEvent(mousedownEvt);
|
|
designer.dragon.emitter.emit('dragstart', {
|
|
dragObject: {
|
|
nodes: [designer.currentDocument?.getNode('node_k1ow3cbo')],
|
|
},
|
|
originalEvent: mousedownEvt,
|
|
});
|
|
|
|
// await new Promise(resolve => resolve(setTimeout, 500));
|
|
|
|
expect(mockDragstart).toHaveBeenCalled();
|
|
|
|
designer.dragon.emitter.emit('drag', {
|
|
dragObject: {
|
|
nodes: [designer.currentDocument?.getNode('node_k1ow3cbo')],
|
|
},
|
|
originalEvent: mousedownEvt,
|
|
});
|
|
|
|
expect(mockDrag).toHaveBeenCalled();
|
|
|
|
designer.dragon.emitter.emit('dragend', {
|
|
dragObject: {
|
|
type: 'nodedata',
|
|
data: {
|
|
componentName: 'Div',
|
|
},
|
|
},
|
|
originalEvent: mousedownEvt,
|
|
});
|
|
|
|
expect(mockDragend).toHaveBeenCalled();
|
|
});
|
|
|
|
it('null', async () => {
|
|
DragEngine.from(document, mockBoostNull);
|
|
|
|
DragEngine.onDragstart(mockDragstart);
|
|
DragEngine.onDrag(mockDrag);
|
|
DragEngine.onDragend(mockDragend);
|
|
|
|
const mousedownEvt = new MouseEvent('mousedown');
|
|
document.dispatchEvent(mousedownEvt);
|
|
designer.dragon.emitter.emit('dragstart', {
|
|
dragObject: {
|
|
nodes: [designer.currentDocument?.getNode('node_k1ow3cbo')],
|
|
},
|
|
originalEvent: mousedownEvt,
|
|
});
|
|
|
|
expect(mockDragstart).toHaveBeenCalled();
|
|
});
|
|
});
|