Merge branch 'master' into develop

This commit is contained in:
Philipp Fromme 2019-12-09 12:54:24 +01:00
commit 448a8250ab
4 changed files with 115 additions and 17 deletions

View File

@ -30,7 +30,7 @@ export default function LayoutConnectionBehavior(eventBus, gridSnapping, modelin
hints = context.hints || {}, hints = context.hints || {},
waypoints = connection.waypoints; waypoints = connection.waypoints;
if (hints.connectionStart || hints.connectionEnd) { if (hints.connectionStart || hints.connectionEnd || hints.createElementsBehavior === false) {
return; return;
} }

View File

@ -72,8 +72,9 @@ export default function UpdateFlowNodeRefsBehavior(eventBus, modeling, translate
'lane.add', 'lane.add',
'lane.resize', 'lane.resize',
'lane.split', 'lane.split',
'elements.move', 'elements.create',
'elements.delete', 'elements.delete',
'elements.move',
'shape.create', 'shape.create',
'shape.delete', 'shape.delete',
'shape.move', 'shape.move',

View File

@ -7,24 +7,27 @@ import coreModule from 'lib/core';
import gridSnappingModule from 'lib/features/grid-snapping'; import gridSnappingModule from 'lib/features/grid-snapping';
import modelingModule from 'lib/features/modeling'; import modelingModule from 'lib/features/modeling';
import moveModule from 'diagram-js/lib/features/move'; import moveModule from 'diagram-js/lib/features/move';
import copyPasteModule from 'lib/features/copy-paste';
/* global sinon */
describe('features/grid-snapping - layout connection', function() { describe('features/grid-snapping - layout connection', function() {
var diagramXML = require('./LayoutConnectionBehavior.bpmn');
beforeEach(bootstrapModeler(diagramXML, {
modules: [
coreModule,
gridSnappingModule,
modelingModule,
moveModule
]
}));
describe('on connection create', function() { describe('on connection create', function() {
var diagramXML = require('./LayoutConnectionBehavior.bpmn');
beforeEach(bootstrapModeler(diagramXML, {
modules: [
coreModule,
gridSnappingModule,
modelingModule,
moveModule
]
}));
it('should snap 3 segment connection (1 middle segment)', inject( it('should snap 3 segment connection (1 middle segment)', inject(
function(elementRegistry, modeling) { function(elementRegistry, modeling) {
@ -64,6 +67,17 @@ describe('features/grid-snapping - layout connection', function() {
describe('on connection layout', function() { describe('on connection layout', function() {
var diagramXML = require('./LayoutConnectionBehavior.bpmn');
beforeEach(bootstrapModeler(diagramXML, {
modules: [
coreModule,
gridSnappingModule,
modelingModule,
moveModule
]
}));
var task1, task2, connection; var task1, task2, connection;
beforeEach(inject(function(elementRegistry, modeling) { beforeEach(inject(function(elementRegistry, modeling) {
@ -129,4 +143,50 @@ describe('features/grid-snapping - layout connection', function() {
}); });
describe('on paste multiple', function() {
var diagramXML = require('./LayoutConnectionBehavior.bpmn');
beforeEach(bootstrapModeler(diagramXML, {
modules: [
coreModule,
gridSnappingModule,
modelingModule,
moveModule,
copyPasteModule
]
}));
it('should not update waypoints', inject(
function(canvas, eventBus, copyPaste, elementRegistry) {
// given
var layoutSpy = sinon.spy();
copyPaste.copy([
elementRegistry.get('Task_2'),
elementRegistry.get('SequenceFlow_1'),
elementRegistry.get('Task_5')
]);
eventBus.on('commandStack.connection.updateWaypoints.execute', layoutSpy);
// when
copyPaste.paste({
element: canvas.getRootElement(),
point: {
x: 100,
y: 200
}
});
// then
expect(layoutSpy).not.to.have.been.called;
}
));
});
}); });

View File

@ -5,15 +5,22 @@ import {
import modelingModule from 'lib/features/modeling'; import modelingModule from 'lib/features/modeling';
import coreModule from 'lib/core'; import coreModule from 'lib/core';
import copyPasteModule from 'lib/features/copy-paste';
/* global sinon */
describe('features/modeling - lanes - flowNodeRefs', function() { describe('features/modeling - lanes - flowNodeRefs', function() {
var diagramXML = require('./flowNodeRefs.bpmn'); var diagramXML = require('./flowNodeRefs.bpmn');
var testModules = [ coreModule, modelingModule ]; beforeEach(bootstrapModeler(diagramXML, {
modules: [
beforeEach(bootstrapModeler(diagramXML, { modules: testModules })); coreModule,
modelingModule,
copyPasteModule
]
}));
describe('should unwire during move', function() { describe('should unwire during move', function() {
@ -290,4 +297,34 @@ describe('features/modeling - lanes - flowNodeRefs', function() {
expect(lane1.flowNodeRef).to.have.length(1); expect(lane1.flowNodeRef).to.have.length(1);
expect(lane2.flowNodeRef).to.have.length(2); expect(lane2.flowNodeRef).to.have.length(2);
})); }));
describe('should wire once during paste', function() {
it('execute', inject(function(canvas, eventBus, elementRegistry, copyPaste) {
// given
var participant = elementRegistry.get('Participant_A');
var updateRefsSpy = sinon.spy();
eventBus.on('commandStack.lane.updateRefs.execute', updateRefsSpy);
// when
copyPaste.copy(participant);
copyPaste.paste({
element: canvas.getRootElement(),
point: {
x: 350,
y: 150
}
});
// then
expect(updateRefsSpy).to.have.been.calledOnce;
}));
});
}); });