bpmn-js/test/spec/features/modeling/lanes/ResizeLaneSpec.js

367 lines
12 KiB
JavaScript

'use strict';
require('../../../../TestHelper');
/* global bootstrapModeler, inject */
var modelingModule = require('lib/features/modeling'),
coreModule = require('lib/core');
var resizeTRBL = require('diagram-js/lib/features/resize/ResizeUtil').resizeTRBL;
var pick = require('lodash/object/pick');
function getBounds(element) {
return pick(element, [ 'x', 'y', 'width', 'height']);
}
describe('features/modeling - resize lane', function() {
var diagramXML = require('./lanes.bpmn');
var testModules = [ coreModule, modelingModule ];
beforeEach(bootstrapModeler(diagramXML, { modules: testModules }));
describe('vertical', function() {
describe('compensating', function() {
it('should expand Lane top', inject(function(elementRegistry, modeling) {
// given
var laneShape = elementRegistry.get('Lane_A'),
participantShape = elementRegistry.get('Participant_Lane');
var newLaneBounds = resizeTRBL(laneShape, { top: -50 });
var expectedParticipantBounds = resizeTRBL(participantShape, { top: -50 });
// when
modeling.resizeLane(laneShape, newLaneBounds, false);
// then
expect(laneShape).to.have.bounds(newLaneBounds);
expect(participantShape).to.have.bounds(expectedParticipantBounds);
}));
it('should shrink Lane top', inject(function(elementRegistry, modeling) {
// given
var laneShape = elementRegistry.get('Lane_A'),
participantShape = elementRegistry.get('Participant_Lane');
var newLaneBounds = resizeTRBL(laneShape, { top: 50 });
var expectedParticipantBounds = resizeTRBL(participantShape, { top: 50 });
// when
modeling.resizeLane(laneShape, newLaneBounds, false);
// then
expect(laneShape).to.have.bounds(newLaneBounds);
expect(participantShape).to.have.bounds(expectedParticipantBounds);
}));
it('should shrink Participant top', inject(function(elementRegistry, modeling) {
// given
var laneShape = elementRegistry.get('Lane_A'),
participantShape = elementRegistry.get('Participant_Lane');
var newParticipantBounds = resizeTRBL(participantShape, { top: 50 });
var expectedLaneBounds = resizeTRBL(laneShape, { top: 50 });
// when
modeling.resizeLane(participantShape, newParticipantBounds, false);
// then
expect(participantShape).to.have.bounds(newParticipantBounds);
expect(laneShape).to.have.bounds(expectedLaneBounds);
}));
it('should shrink Lane bottom', inject(function(elementRegistry, modeling) {
// given
var laneShape = elementRegistry.get('Lane_A'),
nextLaneShape = elementRegistry.get('Lane_B'),
nestedLaneShape = elementRegistry.get('Nested_Lane_C'),
participantShape = elementRegistry.get('Participant_Lane');
var newLaneBounds = resizeTRBL(laneShape, { bottom: -50 });
var expectedParticipantBounds = resizeTRBL(participantShape, { bottom: -50 }),
expectedNextLaneBounds = resizeTRBL(nextLaneShape, { top: -50, bottom: -50 }),
expectedNestedLaneBounds = resizeTRBL(nestedLaneShape, { bottom: -50 });
// when
modeling.resizeLane(laneShape, newLaneBounds, false);
// then
expect(laneShape).to.have.bounds(newLaneBounds);
expect(participantShape).to.have.bounds(expectedParticipantBounds);
expect(nestedLaneShape).to.have.bounds(expectedNestedLaneBounds);
expect(nextLaneShape).to.have.bounds(expectedNextLaneBounds);
}));
it('should expand Lane bottom', inject(function(elementRegistry, modeling) {
// given
var laneShape = elementRegistry.get('Lane_A'),
nextLaneShape = elementRegistry.get('Lane_B'),
nestedLaneShape = elementRegistry.get('Nested_Lane_C'),
participantShape = elementRegistry.get('Participant_Lane');
var newLaneBounds = resizeTRBL(laneShape, { bottom: 50 });
var expectedParticipantBounds = resizeTRBL(participantShape, { bottom: 50 }),
expectedNextLaneBounds = resizeTRBL(nextLaneShape, { top: 50, bottom: 50 }),
expectedNestedLaneBounds = resizeTRBL(nestedLaneShape, { bottom: 50 });
// when
modeling.resizeLane(laneShape, newLaneBounds, false);
// then
expect(laneShape).to.have.bounds(newLaneBounds);
expect(participantShape).to.have.bounds(expectedParticipantBounds);
expect(nestedLaneShape).to.have.bounds(expectedNestedLaneBounds);
expect(nextLaneShape).to.have.bounds(expectedNextLaneBounds);
}));
});
describe('enlarging / shrinking', function() {
it('should expand Lane top', inject(function(elementRegistry, modeling) {
// given
var laneShape = elementRegistry.get('Lane_A'),
participantShape = elementRegistry.get('Participant_Lane');
var newLaneBounds = resizeTRBL(laneShape, { top: -50 });
var expectedParticipantBounds = resizeTRBL(participantShape, { top: -50 });
// when
modeling.resizeLane(laneShape, newLaneBounds);
// then
expect(laneShape).to.have.bounds(newLaneBounds);
expect(participantShape).to.have.bounds(expectedParticipantBounds);
}));
it('should shrink Lane top', inject(function(elementRegistry, modeling) {
// given
var laneShape = elementRegistry.get('Lane_A'),
participantShape = elementRegistry.get('Participant_Lane');
var newLaneBounds = resizeTRBL(laneShape, { top: 50 });
var expectedParticipantBounds = resizeTRBL(participantShape, { top: 50 });
// when
modeling.resizeLane(laneShape, newLaneBounds);
// then
expect(laneShape).to.have.bounds(newLaneBounds);
expect(participantShape).to.have.bounds(expectedParticipantBounds);
}));
it('should shrink Participant top', inject(function(elementRegistry, modeling) {
// given
var laneShape = elementRegistry.get('Lane_A'),
participantShape = elementRegistry.get('Participant_Lane');
var newParticipantBounds = resizeTRBL(participantShape, { top: 50 });
var expectedLaneBounds = resizeTRBL(laneShape, { top: 50 });
// when
modeling.resizeLane(participantShape, newParticipantBounds);
// then
expect(participantShape).to.have.bounds(newParticipantBounds);
expect(laneShape).to.have.bounds(expectedLaneBounds);
}));
it('should move up above Lane', inject(function(elementRegistry, modeling) {
// given
var laneShape = elementRegistry.get('Lane_A'),
nextLaneShape = elementRegistry.get('Lane_B'),
nestedLaneShape = elementRegistry.get('Nested_Lane_C'),
participantShape = elementRegistry.get('Participant_Lane');
var newLaneBounds = resizeTRBL(laneShape, { bottom: -50 });
var expectedParticipantBounds = getBounds(participantShape),
expectedNextLaneBounds = resizeTRBL(nextLaneShape, { top: -50 + 1 /* compensation */ }),
expectedNestedLaneBounds = resizeTRBL(nestedLaneShape, { bottom: -50 });
// when
modeling.resizeLane(laneShape, newLaneBounds);
// then
expect(laneShape).to.have.bounds(newLaneBounds);
expect(participantShape).to.have.bounds(expectedParticipantBounds);
expect(nestedLaneShape).to.have.bounds(expectedNestedLaneBounds);
expect(nextLaneShape).to.have.bounds(expectedNextLaneBounds);
}));
it('should move down below Lane', inject(function(elementRegistry, modeling) {
// given
var laneShape = elementRegistry.get('Lane_A'),
nextLaneShape = elementRegistry.get('Lane_B'),
nestedLaneShape = elementRegistry.get('Nested_Lane_C'),
participantShape = elementRegistry.get('Participant_Lane');
var newLaneBounds = resizeTRBL(laneShape, { bottom: 50 });
var expectedParticipantBounds = getBounds(participantShape),
expectedNextLaneBounds = resizeTRBL(nextLaneShape, { top: 50 + 1 /* compensation */ }),
expectedNestedLaneBounds = resizeTRBL(nestedLaneShape, { bottom: 50 });
// when
modeling.resizeLane(laneShape, newLaneBounds);
// then
expect(laneShape).to.have.bounds(newLaneBounds);
expect(participantShape).to.have.bounds(expectedParticipantBounds);
expect(nestedLaneShape).to.have.bounds(expectedNestedLaneBounds);
expect(nextLaneShape).to.have.bounds(expectedNextLaneBounds);
}));
});
});
describe('horizontal', function() {
it('should expand Lane left', inject(function(elementRegistry, modeling) {
// given
var laneShape = elementRegistry.get('Lane_A'),
participantShape = elementRegistry.get('Participant_Lane');
var newLaneBounds = resizeTRBL(laneShape, { left: -50 });
var expectedParticipantBounds = resizeTRBL(participantShape, { left: -50 });
// when
modeling.resizeLane(laneShape, newLaneBounds);
// then
expect(laneShape).to.have.bounds(newLaneBounds);
expect(participantShape).to.have.bounds(expectedParticipantBounds);
}));
it('should shrink Lane left', inject(function(elementRegistry, modeling) {
// given
var laneShape = elementRegistry.get('Lane_A'),
participantShape = elementRegistry.get('Participant_Lane');
var newLaneBounds = resizeTRBL(laneShape, { left: 50 });
var expectedParticipantBounds = resizeTRBL(participantShape, { left: 50 });
// when
modeling.resizeLane(laneShape, newLaneBounds);
// then
expect(laneShape).to.have.bounds(newLaneBounds);
expect(participantShape).to.have.bounds(expectedParticipantBounds);
}));
it('should shrink Participant left', inject(function(elementRegistry, modeling) {
// given
var laneShape = elementRegistry.get('Lane_A'),
participantShape = elementRegistry.get('Participant_Lane');
var newParticipantBounds = resizeTRBL(participantShape, { left: 50 });
var expectedLaneBounds = resizeTRBL(laneShape, { left: 50 });
// when
modeling.resizeLane(participantShape, newParticipantBounds);
// then
expect(participantShape).to.have.bounds(newParticipantBounds);
expect(laneShape).to.have.bounds(expectedLaneBounds);
}));
it('should shrink Lane right', inject(function(elementRegistry, modeling) {
// given
var laneShape = elementRegistry.get('Lane_A'),
nextLaneShape = elementRegistry.get('Lane_B'),
nestedLaneShape = elementRegistry.get('Nested_Lane_C'),
participantShape = elementRegistry.get('Participant_Lane');
var newLaneBounds = resizeTRBL(laneShape, { right: -50 });
var expectedParticipantBounds = resizeTRBL(participantShape, { right: -50 }),
expectedNextLaneBounds = resizeTRBL(nextLaneShape, { right: -50 }),
expectedNestedLaneBounds = resizeTRBL(nestedLaneShape, { right: -50 });
// when
modeling.resizeLane(laneShape, newLaneBounds);
// then
expect(laneShape).to.have.bounds(newLaneBounds);
expect(participantShape).to.have.bounds(expectedParticipantBounds);
expect(nestedLaneShape).to.have.bounds(expectedNestedLaneBounds);
expect(nextLaneShape).to.have.bounds(expectedNextLaneBounds);
}));
it('should expand Lane right', inject(function(elementRegistry, modeling) {
// given
var laneShape = elementRegistry.get('Lane_A'),
nextLaneShape = elementRegistry.get('Lane_B'),
nestedLaneShape = elementRegistry.get('Nested_Lane_C'),
participantShape = elementRegistry.get('Participant_Lane');
var newLaneBounds = resizeTRBL(laneShape, { right: 50 });
var expectedParticipantBounds = resizeTRBL(participantShape, { right: 50 }),
expectedNextLaneBounds = resizeTRBL(nextLaneShape, { right: 50 }),
expectedNestedLaneBounds = resizeTRBL(nestedLaneShape, { right: 50 });
// when
modeling.resizeLane(laneShape, newLaneBounds);
// then
expect(laneShape).to.have.bounds(newLaneBounds);
expect(participantShape).to.have.bounds(expectedParticipantBounds);
expect(nestedLaneShape).to.have.bounds(expectedNestedLaneBounds);
expect(nextLaneShape).to.have.bounds(expectedNextLaneBounds);
}));
});
});