2018-04-02 19:01:53 +00:00
|
|
|
import {
|
|
|
|
bootstrapModeler,
|
|
|
|
inject
|
|
|
|
} from 'test/TestHelper';
|
2015-10-09 23:40:52 +00:00
|
|
|
|
2018-04-02 19:01:53 +00:00
|
|
|
import {
|
|
|
|
pick
|
|
|
|
} from 'min-dash';
|
2015-10-09 23:40:52 +00:00
|
|
|
|
2018-04-02 19:01:53 +00:00
|
|
|
import modelingModule from 'lib/features/modeling';
|
|
|
|
import coreModule from 'lib/core';
|
2015-10-09 23:40:52 +00:00
|
|
|
|
2018-04-02 19:01:53 +00:00
|
|
|
import {
|
|
|
|
getChildLanes
|
|
|
|
} from 'lib/features/modeling/util/LaneUtil';
|
2015-10-09 23:40:52 +00:00
|
|
|
|
|
|
|
var DEFAULT_LANE_HEIGHT = 120;
|
|
|
|
|
|
|
|
|
|
|
|
function getBounds(element) {
|
|
|
|
return pick(element, [ 'x', 'y', 'width', 'height' ]);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
describe('features/modeling - add Lane', function() {
|
|
|
|
|
|
|
|
describe('nested Lanes', function() {
|
|
|
|
|
|
|
|
var diagramXML = require('./lanes.bpmn');
|
|
|
|
|
|
|
|
var testModules = [ coreModule, modelingModule ];
|
|
|
|
|
|
|
|
beforeEach(bootstrapModeler(diagramXML, { modules: testModules }));
|
|
|
|
|
|
|
|
it('should add after Lane', inject(function(elementRegistry, modeling) {
|
|
|
|
|
|
|
|
// given
|
|
|
|
var laneShape = elementRegistry.get('Lane_A'),
|
|
|
|
belowLaneShape = elementRegistry.get('Lane_B');
|
|
|
|
|
|
|
|
// when
|
|
|
|
var newLane = modeling.addLane(laneShape, 'bottom');
|
|
|
|
|
|
|
|
// then
|
|
|
|
expect(newLane).to.have.bounds({
|
|
|
|
x: laneShape.x,
|
|
|
|
y: laneShape.y + laneShape.height,
|
|
|
|
width: laneShape.width,
|
|
|
|
height: DEFAULT_LANE_HEIGHT
|
|
|
|
});
|
|
|
|
|
|
|
|
// below lanes got moved by { dy: + LANE_HEIGHT }
|
|
|
|
expect(belowLaneShape).to.have.bounds({
|
|
|
|
x: laneShape.x,
|
|
|
|
y: laneShape.y + laneShape.height + DEFAULT_LANE_HEIGHT - 1,
|
|
|
|
width: laneShape.width,
|
|
|
|
height: belowLaneShape.height
|
|
|
|
});
|
|
|
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
|
|
it('should add before Lane', inject(function(elementRegistry, modeling) {
|
|
|
|
|
|
|
|
// given
|
|
|
|
var laneShape = elementRegistry.get('Lane_B'),
|
|
|
|
aboveLaneShape = elementRegistry.get('Lane_A');
|
|
|
|
|
|
|
|
// when
|
|
|
|
var newLane = modeling.addLane(laneShape, 'top');
|
|
|
|
|
|
|
|
// then
|
|
|
|
expect(newLane).to.have.bounds({
|
|
|
|
x: laneShape.x,
|
|
|
|
y: laneShape.y - DEFAULT_LANE_HEIGHT,
|
|
|
|
width: laneShape.width,
|
|
|
|
height: DEFAULT_LANE_HEIGHT
|
|
|
|
});
|
|
|
|
|
|
|
|
// below lanes got moved by { dy: + LANE_HEIGHT }
|
|
|
|
expect(aboveLaneShape).to.have.bounds({
|
|
|
|
x: laneShape.x,
|
|
|
|
y: laneShape.y - aboveLaneShape.height - DEFAULT_LANE_HEIGHT + 1,
|
|
|
|
width: laneShape.width,
|
|
|
|
height: aboveLaneShape.height
|
|
|
|
});
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
|
|
it('should add before nested Lane', inject(function(elementRegistry, modeling) {
|
|
|
|
|
|
|
|
// given
|
|
|
|
var laneShape = elementRegistry.get('Nested_Lane_A'),
|
|
|
|
participantShape = elementRegistry.get('Participant_Lane'),
|
|
|
|
participantBounds = getBounds(participantShape);
|
|
|
|
|
|
|
|
// when
|
|
|
|
var newLane = modeling.addLane(laneShape, 'top');
|
|
|
|
|
|
|
|
// then
|
|
|
|
expect(newLane).to.have.bounds({
|
|
|
|
x: laneShape.x,
|
|
|
|
y: laneShape.y - DEFAULT_LANE_HEIGHT,
|
|
|
|
width: laneShape.width,
|
|
|
|
height: DEFAULT_LANE_HEIGHT
|
|
|
|
});
|
|
|
|
|
|
|
|
// participant got enlarged { top: + LANE_HEIGHT }
|
|
|
|
expect(participantShape).to.have.bounds({
|
|
|
|
x: participantBounds.x,
|
|
|
|
y: participantBounds.y - newLane.height,
|
|
|
|
width: participantBounds.width,
|
|
|
|
height: participantBounds.height + newLane.height
|
|
|
|
});
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
|
|
it('should add after Participant', inject(function(elementRegistry, modeling) {
|
|
|
|
|
|
|
|
// given
|
|
|
|
var participantShape = elementRegistry.get('Participant_Lane'),
|
|
|
|
participantBounds = getBounds(participantShape),
|
|
|
|
lastLaneShape = elementRegistry.get('Lane_B'),
|
|
|
|
lastLaneBounds = getBounds(lastLaneShape);
|
|
|
|
|
|
|
|
// when
|
|
|
|
var newLane = modeling.addLane(participantShape, 'bottom');
|
|
|
|
|
|
|
|
// then
|
|
|
|
expect(newLane).to.have.bounds({
|
|
|
|
x: participantBounds.x + 30,
|
|
|
|
y: participantBounds.y + participantBounds.height,
|
|
|
|
width: participantBounds.width - 30,
|
|
|
|
height: DEFAULT_LANE_HEIGHT
|
|
|
|
});
|
|
|
|
|
|
|
|
// last lane kept position
|
|
|
|
expect(lastLaneShape).to.have.bounds(lastLaneBounds);
|
|
|
|
|
|
|
|
// participant got enlarged by { dy: + LANE_HEIGHT } at bottom
|
|
|
|
expect(participantShape).to.have.bounds({
|
|
|
|
x: participantBounds.x,
|
|
|
|
y: participantBounds.y,
|
|
|
|
width: participantBounds.width,
|
|
|
|
height: participantBounds.height + DEFAULT_LANE_HEIGHT
|
|
|
|
});
|
|
|
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
|
|
it('should add before Participant', inject(function(elementRegistry, modeling) {
|
|
|
|
|
|
|
|
// given
|
|
|
|
var participantShape = elementRegistry.get('Participant_Lane'),
|
|
|
|
participantBounds = getBounds(participantShape),
|
|
|
|
firstLaneShape = elementRegistry.get('Lane_A'),
|
|
|
|
firstLaneBounds = getBounds(firstLaneShape);
|
|
|
|
|
|
|
|
// when
|
|
|
|
var newLane = modeling.addLane(participantShape, 'top');
|
|
|
|
|
|
|
|
// then
|
|
|
|
expect(newLane).to.have.bounds({
|
|
|
|
x: participantBounds.x + 30,
|
|
|
|
y: participantBounds.y - DEFAULT_LANE_HEIGHT,
|
|
|
|
width: participantBounds.width - 30,
|
|
|
|
height: DEFAULT_LANE_HEIGHT
|
|
|
|
});
|
|
|
|
|
|
|
|
// last lane kept position
|
|
|
|
expect(firstLaneShape).to.have.bounds(firstLaneBounds);
|
|
|
|
|
|
|
|
// participant got enlarged by { dy: + LANE_HEIGHT } at bottom
|
|
|
|
expect(participantShape).to.have.bounds({
|
|
|
|
x: participantBounds.x,
|
|
|
|
y: participantBounds.y - DEFAULT_LANE_HEIGHT,
|
|
|
|
width: participantBounds.width,
|
|
|
|
height: participantBounds.height + DEFAULT_LANE_HEIGHT
|
|
|
|
});
|
|
|
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
describe('Participant without Lane', function() {
|
|
|
|
|
|
|
|
var diagramXML = require('./participant-no-lane.bpmn');
|
|
|
|
|
|
|
|
var testModules = [ coreModule, modelingModule ];
|
|
|
|
|
|
|
|
beforeEach(bootstrapModeler(diagramXML, { modules: testModules }));
|
|
|
|
|
|
|
|
|
|
|
|
it('should add after Participant', inject(function(elementRegistry, modeling) {
|
|
|
|
|
|
|
|
// given
|
|
|
|
var participantShape = elementRegistry.get('Participant_No_Lane'),
|
|
|
|
participantBounds = getBounds(participantShape);
|
|
|
|
|
|
|
|
// when
|
|
|
|
modeling.addLane(participantShape, 'bottom');
|
|
|
|
|
|
|
|
var childLanes = getChildLanes(participantShape);
|
|
|
|
|
|
|
|
// then
|
|
|
|
expect(childLanes.length).to.eql(2);
|
|
|
|
|
|
|
|
var firstLane = childLanes[0],
|
|
|
|
secondLane = childLanes[1];
|
|
|
|
|
|
|
|
// new lane was added at participant location
|
|
|
|
expect(firstLane).to.have.bounds({
|
|
|
|
x: participantBounds.x + 30,
|
|
|
|
y: participantBounds.y,
|
|
|
|
width: participantBounds.width - 30,
|
|
|
|
height: participantBounds.height
|
|
|
|
});
|
|
|
|
|
|
|
|
expect(secondLane).to.have.bounds({
|
|
|
|
x: participantBounds.x + 30,
|
|
|
|
y: participantBounds.y + participantBounds.height,
|
|
|
|
width: participantBounds.width - 30,
|
|
|
|
height: DEFAULT_LANE_HEIGHT
|
|
|
|
});
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
|
|
it('should add before Participant', inject(function(elementRegistry, modeling) {
|
|
|
|
|
|
|
|
// given
|
|
|
|
var participantShape = elementRegistry.get('Participant_No_Lane'),
|
|
|
|
participantBounds = getBounds(participantShape);
|
|
|
|
|
|
|
|
// when
|
|
|
|
modeling.addLane(participantShape, 'top');
|
|
|
|
|
|
|
|
var childLanes = getChildLanes(participantShape);
|
|
|
|
|
|
|
|
// then
|
|
|
|
expect(childLanes.length).to.eql(2);
|
|
|
|
|
|
|
|
var firstLane = childLanes[0],
|
|
|
|
secondLane = childLanes[1];
|
|
|
|
|
|
|
|
// new lane was added at participant location
|
|
|
|
expect(firstLane).to.have.bounds({
|
|
|
|
x: participantBounds.x + 30,
|
|
|
|
y: participantBounds.y,
|
|
|
|
width: participantBounds.width - 30,
|
|
|
|
height: participantBounds.height
|
|
|
|
});
|
|
|
|
|
|
|
|
expect(secondLane).to.have.bounds({
|
|
|
|
x: participantBounds.x + 30,
|
|
|
|
y: participantBounds.y - DEFAULT_LANE_HEIGHT,
|
|
|
|
width: participantBounds.width - 30,
|
|
|
|
height: DEFAULT_LANE_HEIGHT
|
|
|
|
});
|
|
|
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|