bpmn-js/test/spec/features/distribute-elements/BpmnDistributeElementsSpec.js

114 lines
2.6 KiB
JavaScript

'use strict';
require('../../../TestHelper');
/* global bootstrapModeler, inject */
var bpmnDistributeElements = require('lib/features/distribute-elements'),
modelingModule = require('lib/features/modeling'),
coreModule = require('lib/core');
function last(arr) {
return arr[arr.length - 1];
}
describe('features/distribute-elements', function() {
var testModules = [ bpmnDistributeElements, modelingModule, coreModule ];
describe('basics', function() {
var basicXML = require('../../../fixtures/bpmn/distribute-elements.bpmn');
beforeEach(bootstrapModeler(basicXML, { modules: testModules }));
var elements;
beforeEach(inject(function(elementRegistry, canvas) {
elements = elementRegistry.filter(function(element) {
return element.parent;
});
}));
it('should align horizontally', inject(function(distributeElements) {
// when
var rangeGroups = distributeElements.trigger(elements, 'horizontal'),
margin = rangeGroups[1].range.min - rangeGroups[0].range.max;
// then
expect(rangeGroups).to.have.length(9);
expect(margin).to.equal(83);
expect(rangeGroups[0].range).to.eql({
min: 132, max: 158
});
expect(last(rangeGroups).range).to.eql({
min: 1195, max: 1221
});
}));
it('should align vertically', inject(function(distributeElements) {
// when
var rangeGroups = distributeElements.trigger(elements, 'vertical'),
margin = rangeGroups[1].range.min - rangeGroups[0].range.max;
// then
expect(rangeGroups).to.have.length(4);
expect(margin).to.equal(17);
expect(rangeGroups[0].range).to.eql({
min: -42, max: 38
});
expect(last(rangeGroups).range).to.eql({
min: 373, max: 413
});
}));
});
describe('filtering elements', function() {
var xml = require('../../../fixtures/bpmn/distribute-elements-filtering.bpmn');
beforeEach(bootstrapModeler(xml, { modules: testModules }));
var elements;
beforeEach(inject(function(elementRegistry, canvas) {
elements = elementRegistry.filter(function(element) {
return element.parent;
});
}));
it('should not distribute boundary events', inject(function(distributeElements, elementRegistry) {
// given
var boundaryEvent = elementRegistry.get('BoundaryEvent_1');
// when
var rangeGroups = distributeElements.trigger(elements, 'horizontal');
// then
expect(rangeGroups).to.have.length(3);
expect(rangeGroups[1].elements).to.not.include(boundaryEvent);
}));
});
});