bpmn-js/test/spec/features/modeling/behavior/SubProcessBehaviorSpec.js

209 lines
4.6 KiB
JavaScript

import {
bootstrapModeler,
inject
} from 'test/TestHelper';
import coreModule from 'lib/core';
import modelingModule from 'lib/features/modeling';
import replaceModule from 'lib/features/replace';
import { getMid } from 'diagram-js/lib/layout/LayoutUtil';
describe('features/modeling/behavior - sub process', function() {
var diagramXML = require('./SubProcessBehavior.bpmn');
beforeEach(bootstrapModeler(diagramXML, {
modules: [
coreModule,
modelingModule,
replaceModule
]
}));
describe('replace', function() {
describe('task -> expanded subprocess', function() {
describe('incoming sequence flows', function() {
it('should move', inject(function(bpmnReplace, elementRegistry) {
// given
var shape = elementRegistry.get('Task_1');
// when
var subProcess = bpmnReplace.replaceElement(shape, {
type: 'bpmn:SubProcess',
isExpanded: true
});
// then
var expectedBounds = {
x: 50,
y: -100,
width: 350,
height: 200
};
expect(subProcess).to.have.bounds(expectedBounds);
}));
});
describe('no incoming sequence flows', function() {
it('should NOT move', inject(function(bpmnReplace, elementRegistry, modeling) {
// given
var task = elementRegistry.get('Task_2'),
taskMid = getMid(task);
// when
var subProcess = bpmnReplace.replaceElement(task, {
type: 'bpmn:SubProcess',
isExpanded: true
});
// then
expect(getMid(subProcess)).to.eql(taskMid);
}));
});
describe('outgoing sequence flows', function() {
it('should NOT move', inject(function(bpmnReplace, elementRegistry, modeling) {
// given
var task = elementRegistry.get('Task_3'),
taskMid = getMid(task);
// when
var subProcess = bpmnReplace.replaceElement(task, {
type: 'bpmn:SubProcess',
isExpanded: true
});
// then
expect(getMid(subProcess)).to.eql(taskMid);
}));
});
});
describe('task -> non-subprocess', function() {
it('should NOT move', inject(function(bpmnReplace, elementRegistry, modeling) {
// given
var task = elementRegistry.get('Task_1'),
taskMid = getMid(task);
// when
var callActivity = bpmnReplace.replaceElement(task, {
type: 'bpmn:CallActivity'
});
// then
expect(getMid(callActivity)).to.eql(taskMid);
}));
});
});
describe('toggle', function() {
describe('collapsed subprocess -> expanded subprocess', function() {
describe('incoming sequence flows', function() {
it('should move', inject(function(elementRegistry, modeling) {
// given
var subProcess = elementRegistry.get('SubProcess_1');
// when
modeling.toggleCollapse(subProcess);
// then
var expectedBounds = {
x: 50,
y: 100,
width: 350,
height: 200
};
expect(subProcess).to.have.bounds(expectedBounds);
}));
});
describe('no incoming sequence flows', function() {
it('should NOT move', inject(function(elementRegistry, modeling) {
// given
var subProcess = elementRegistry.get('SubProcess_2'),
subProcessMid = getMid(subProcess);
// when
modeling.toggleCollapse(subProcess);
// then
expect(getMid(subProcess)).to.eql(subProcessMid);
}));
});
describe('outgoing sequence flows', function() {
it('should NOT move', inject(function(elementRegistry, modeling) {
// given
var subProcess = elementRegistry.get('SubProcess_3'),
subProcessMid = getMid(subProcess);
// when
modeling.toggleCollapse(subProcess);
// then
expect(getMid(subProcess)).to.eql(subProcessMid);
}));
});
});
describe('expanded sub process -> collapsed sub process', function() {
it('should NOT move', inject(function(elementRegistry, modeling) {
// given
var subProcess = elementRegistry.get('SubProcess_4'),
subProcessMid = getMid(subProcess);
// when
modeling.toggleCollapse(subProcess);
// then
expect(getMid(subProcess)).to.eql(subProcessMid);
}));
});
});
});