bpmn-js/test/spec/features/modeling/SpaceToolSpec.js

252 lines
6.5 KiB
JavaScript

'use strict';
var TestHelper = require('../../../TestHelper');
/* global bootstrapModeler, inject */
var modelingModule = require('../../../../lib/features/modeling'),
coreModule = require('../../../../lib/core');
describe('features/modeling - create/remove space', function() {
var diagramXML = require('../../../fixtures/bpmn/simple.bpmn');
var testModules = [ coreModule, modelingModule ];
beforeEach(bootstrapModeler(diagramXML, { modules: testModules }));
describe('create space', function() {
it('should create space to the right', inject(function(elementRegistry, modeling, bpmnFactory) {
// given
var sequenceFlowElement = elementRegistry.get('SequenceFlow_3'),
sequenceFlow = sequenceFlowElement.businessObject;
var subProcessElement = elementRegistry.get('SubProcess_1'),
subProcess = subProcessElement.businessObject;
var endEventElement = elementRegistry.get('EndEvent_1'),
endEvent = endEventElement.businessObject;
var subProcOldPos = {
x: subProcessElement.x,
y: subProcessElement.y
};
var endEventOldPos = {
x: endEventElement.x,
y: endEventElement.y
};
var delta = { x: 50, y: 0 },
direction = 'e';
// when
modeling.createSpace([subProcessElement, endEventElement], [], delta, direction);
// then
expect(subProcess.di).to.have.position({
x: subProcOldPos.x + 50,
y: subProcOldPos.y
});
expect(endEvent.di).to.have.position({
x: endEventOldPos.x + 50,
y: endEventOldPos.y
});
var diWaypoints = bpmnFactory.createDiWaypoints([
{ x: 144, y: 230 },
{ x: 350, y: 230 }
]);
expect(sequenceFlow.di.waypoint).eql(diWaypoints);
}));
it('should create space downwards', inject(function(elementRegistry, modeling, bpmnFactory) {
// given
var startEventElement = elementRegistry.get('StartEvent_2'),
startEvent = startEventElement.businessObject;
var sequenceFlowElement = elementRegistry.get('SequenceFlow_3'),
sequenceFlow = sequenceFlowElement.businessObject;
var subProcessElement = elementRegistry.get('SubProcess_1'),
subProcess = subProcessElement.businessObject;
var endEventElement = elementRegistry.get('EndEvent_1'),
endEvent = endEventElement.businessObject;
var startEventOldPos = {
x: startEventElement.x,
y: startEventElement.y
};
var subProcOldPos = {
x: subProcessElement.x,
y: subProcessElement.y
};
var endEventOldPos = {
x: endEventElement.x,
y: endEventElement.y
};
var delta = { x: 0, y: 50 },
direction = 's';
// when
modeling.createSpace([startEventElement ,subProcessElement, endEventElement], [], delta, direction);
// then
expect(startEvent.di).to.have.position({
x: startEventOldPos.x,
y: startEventOldPos.y + 50
});
expect(subProcess.di).to.have.position({
x: subProcOldPos.x,
y: subProcOldPos.y + 50
});
expect(endEvent.di).to.have.position({
x: endEventOldPos.x,
y: endEventOldPos.y + 50
});
var diWaypoints = bpmnFactory.createDiWaypoints([
{ x: 144, y: 280 },
{ x: 300, y: 280 }
]);
expect(sequenceFlow.di.waypoint).eql(diWaypoints);
}));
it('should remove space to the left', inject(function(elementRegistry, modeling, bpmnFactory) {
// given
var sequenceFlowElement = elementRegistry.get('SequenceFlow_3'),
sequenceFlow = sequenceFlowElement.businessObject;
var subProcessElement = elementRegistry.get('SubProcess_1'),
subProcess = subProcessElement.businessObject;
var endEventElement = elementRegistry.get('EndEvent_1'),
endEvent = endEventElement.businessObject;
var subProcOldPos = {
x: subProcessElement.x,
y: subProcessElement.y
};
var endEventOldPos = {
x: endEventElement.x,
y: endEventElement.y
};
var delta = { x: -50, y: 0 },
direction = 'w';
// when
modeling.createSpace([subProcessElement, endEventElement], [], delta, direction);
// then
expect(subProcess.di).to.have.position({
x: subProcOldPos.x - 50,
y: subProcOldPos.y
});
expect(endEvent.di).to.have.position({
x: endEventOldPos.x - 50,
y: endEventOldPos.y
});
var diWaypoints = bpmnFactory.createDiWaypoints([
{ x: 144, y: 230 },
{ x: 250, y: 230 }
]);
expect(sequenceFlow.di.waypoint).eql(diWaypoints);
}));
it('should resize to the right', inject(function(elementRegistry, modeling) {
// given
var taskElement = elementRegistry.get('Task_1'),
task = taskElement.businessObject;
var subProcessElement = elementRegistry.get('SubProcess_1'),
subProcess = subProcessElement.businessObject;
var startEventElement = elementRegistry.get('StartEvent_1'),
startEvent = startEventElement.businessObject;
var startEventElement2 = elementRegistry.get('StartEvent_2'),
startEvent2 = startEventElement2.businessObject;
var subProcOldPos = {
x: subProcessElement.x,
y: subProcessElement.y,
width: subProcessElement.width,
height: subProcessElement.height
};
var startEventOldPos2 = {
x: startEventElement2.x,
y: startEventElement2.y
};
var startEventOldPos = {
x: startEventElement.x,
y: startEventElement.y
};
var taskOldPos = {
x: taskElement.x,
y: taskElement.y
};
var delta = { x: 50, y: 0 },
direction = 'w';
// when
modeling.createSpace([startEventElement, startEventElement2, taskElement], [subProcessElement], delta, direction);
// then
expect(subProcess.di).to.have.bounds({
x: subProcOldPos.x + 50,
y: subProcOldPos.y,
width: subProcOldPos.width - 50,
height: subProcOldPos.height
});
expect(startEvent.di).to.have.position({
x: startEventOldPos.x + 50,
y: startEventOldPos.y
});
expect(startEvent2.di).to.have.position({
x: startEventOldPos2.x + 50,
y: startEventOldPos2.y
});
expect(task.di).to.have.position({
x: taskOldPos.x + 50,
y: taskOldPos.y
});
}));
});
});