2021-02-08 11:48:42 +08:00

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();
});
});