diff --git a/lib/features/snapping/BpmnSnapping.js b/lib/features/snapping/BpmnSnapping.js
index 1c06e293..d2b93c6b 100644
--- a/lib/features/snapping/BpmnSnapping.js
+++ b/lib/features/snapping/BpmnSnapping.js
@@ -130,7 +130,7 @@ function BpmnSnapping(eventBus, canvas) {
}
if (is(shape, 'bpmn:Participant')) {
- context.minDimensions = { width: 400, height: 200 };
+ context.minDimensions = { width: 300, height: 150 };
context.childrenBoxPadding = {
left: 50,
right: 35
diff --git a/test/fixtures/bpmn/collaboration-resize.bpmn b/test/spec/features/snapping/BpmnSnapping.collaboration-resize.bpmn
similarity index 58%
rename from test/fixtures/bpmn/collaboration-resize.bpmn
rename to test/spec/features/snapping/BpmnSnapping.collaboration-resize.bpmn
index 637faff0..2b203fc1 100644
--- a/test/fixtures/bpmn/collaboration-resize.bpmn
+++ b/test/spec/features/snapping/BpmnSnapping.collaboration-resize.bpmn
@@ -3,31 +3,48 @@
+
-
+
+
+
+
+
-
+
-
+
-
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/spec/features/snapping/BpmnSnappingSpec.js b/test/spec/features/snapping/BpmnSnappingSpec.js
index 6408a0b8..8db637d6 100644
--- a/test/spec/features/snapping/BpmnSnappingSpec.js
+++ b/test/spec/features/snapping/BpmnSnappingSpec.js
@@ -26,150 +26,154 @@ describe('features/snapping - BpmnSnapping', function() {
var testModules = [ coreModule, snappingModule, modelingModule, createModule, rulesModule ];
- describe('when dropping on non-empty process', function() {
+ describe('on Participant create', function() {
- var diagramXML = require('../../../fixtures/bpmn/collaboration/process.bpmn');
+ describe('in non-empty process', function() {
- beforeEach(bootstrapModeler(diagramXML, { modules: testModules }));
+ var diagramXML = require('../../../fixtures/bpmn/collaboration/process.bpmn');
+
+ beforeEach(bootstrapModeler(diagramXML, { modules: testModules }));
- var createEvent;
+ var createEvent;
- beforeEach(inject(function(canvas, dragging) {
- createEvent = Events.scopedCreate(canvas);
- dragging.setOptions({ manual: true });
- }));
+ beforeEach(inject(function(canvas, dragging) {
+ createEvent = Events.scopedCreate(canvas);
+ dragging.setOptions({ manual: true });
+ }));
- it('should snap to process children bounds / top left',
- inject(function(canvas, create, dragging, elementFactory) {
+ it('should snap to process children bounds / top left',
+ inject(function(canvas, create, dragging, elementFactory) {
- // given
- var participantShape = elementFactory.createParticipantShape(false),
- rootElement = canvas.getRootElement(),
- rootGfx = canvas.getGraphics(rootElement);
+ // given
+ var participantShape = elementFactory.createParticipantShape(false),
+ rootElement = canvas.getRootElement(),
+ rootGfx = canvas.getGraphics(rootElement);
- // when
- create.start(createEvent({ x: 50, y: 50 }), participantShape);
+ // when
+ create.start(createEvent({ x: 50, y: 50 }), participantShape);
- dragging.hover({ element: rootElement, gfx: rootGfx });
+ dragging.hover({ element: rootElement, gfx: rootGfx });
- dragging.move(createEvent({ x: 65, y: 65 }));
- dragging.end(createEvent({ x: 65, y: 65 }));
+ dragging.move(createEvent({ x: 65, y: 65 }));
+ dragging.end(createEvent({ x: 65, y: 65 }));
- // then
- expect(bounds(participantShape)).toEqual({
- width: 600, height: 250, x: 18, y: -8
- });
- }));
+ // then
+ expect(bounds(participantShape)).toEqual({
+ width: 600, height: 250, x: 18, y: -8
+ });
+ }));
- it('should snap to process children bounds / bottom right',
- inject(function(canvas, create, dragging, elementFactory) {
+ it('should snap to process children bounds / bottom right',
+ inject(function(canvas, create, dragging, elementFactory) {
- // given
- var participantShape = elementFactory.createParticipantShape(false),
- rootElement = canvas.getRootElement(),
- rootGfx = canvas.getGraphics(rootElement);
+ // given
+ var participantShape = elementFactory.createParticipantShape(false),
+ rootElement = canvas.getRootElement(),
+ rootGfx = canvas.getGraphics(rootElement);
- // when
- create.start(createEvent({ x: 50, y: 50 }), participantShape);
+ // when
+ create.start(createEvent({ x: 50, y: 50 }), participantShape);
- dragging.hover({ element: rootElement, gfx: rootGfx });
+ dragging.hover({ element: rootElement, gfx: rootGfx });
- dragging.move(createEvent({ x: 400, y: 400 }));
- dragging.end(createEvent({ x: 400, y: 400 }));
+ dragging.move(createEvent({ x: 400, y: 400 }));
+ dragging.end(createEvent({ x: 400, y: 400 }));
- // then
- expect(bounds(participantShape)).toEqual({
- width: 600, height: 250, x: 100, y: 52
- });
- }));
+ // then
+ expect(bounds(participantShape)).toEqual({
+ width: 600, height: 250, x: 100, y: 52
+ });
+ }));
+
+ });
+
+
+ describe('in empty process', function() {
+
+ var diagramXML = require('../../../fixtures/bpmn/collaboration/process-empty.bpmn');
+
+ beforeEach(bootstrapModeler(diagramXML, { modules: testModules }));
+
+
+ var createEvent;
+
+ beforeEach(inject(function(canvas, dragging) {
+ createEvent = Events.scopedCreate(canvas);
+ dragging.setOptions({ manual: true });
+ }));
+
+
+ it('should not snap', inject(function(canvas, create, dragging, elementFactory) {
+
+ // given
+ var participantShape = elementFactory.createParticipantShape(false),
+ rootElement = canvas.getRootElement(),
+ rootGfx = canvas.getGraphics(rootElement);
+
+ // when
+ create.start(createEvent({ x: 50, y: 50 }), participantShape);
+
+ dragging.hover({ element: rootElement, gfx: rootGfx });
+
+ dragging.move(createEvent({ x: 400, y: 400 }));
+ dragging.end(createEvent({ x: 400, y: 400 }));
+
+ // then
+ expect(bounds(participantShape)).toEqual({
+ x: 100, y: 275, width: 600, height: 250
+ });
+ }));
+
+ });
+
+
+ describe('in collaboration', function() {
+
+ var diagramXML = require('../../../fixtures/bpmn/collaboration/collaboration-participant.bpmn');
+
+ beforeEach(bootstrapModeler(diagramXML, { modules: testModules }));
+
+
+ var createEvent;
+
+ beforeEach(inject(function(canvas, dragging) {
+ createEvent = Events.scopedCreate(canvas);
+ dragging.setOptions({ manual: true });
+ }));
+
+
+ it('should not snap', inject(function(canvas, create, dragging, elementFactory) {
+
+ // given
+ var participantShape = elementFactory.createParticipantShape(false),
+ rootElement = canvas.getRootElement(),
+ rootGfx = canvas.getGraphics(rootElement);
+
+ // when
+ create.start(createEvent({ x: 50, y: 50 }), participantShape);
+
+ dragging.hover({ element: rootElement, gfx: rootGfx });
+
+ dragging.move(createEvent({ x: 400, y: 400 }));
+ dragging.end(createEvent({ x: 400, y: 400 }));
+
+ // then
+ expect(bounds(participantShape)).toEqual({
+ x: 100, y: 275, width: 600, height: 250
+ });
+ }));
+
+ });
});
- describe('when dropping on empty process', function() {
+ describe('on Participant resize', function () {
- var diagramXML = require('../../../fixtures/bpmn/collaboration/process-empty.bpmn');
-
- beforeEach(bootstrapModeler(diagramXML, { modules: testModules }));
-
-
- var createEvent;
-
- beforeEach(inject(function(canvas, dragging) {
- createEvent = Events.scopedCreate(canvas);
- dragging.setOptions({ manual: true });
- }));
-
-
- it('should not snap', inject(function(canvas, create, dragging, elementFactory) {
-
- // given
- var participantShape = elementFactory.createParticipantShape(false),
- rootElement = canvas.getRootElement(),
- rootGfx = canvas.getGraphics(rootElement);
-
- // when
- create.start(createEvent({ x: 50, y: 50 }), participantShape);
-
- dragging.hover({ element: rootElement, gfx: rootGfx });
-
- dragging.move(createEvent({ x: 400, y: 400 }));
- dragging.end(createEvent({ x: 400, y: 400 }));
-
- // then
- expect(bounds(participantShape)).toEqual({
- x: 100, y: 275, width: 600, height: 250
- });
- }));
-
- });
-
-
- describe('when dropping on collaboration', function() {
-
- var diagramXML = require('../../../fixtures/bpmn/collaboration/collaboration-participant.bpmn');
-
- beforeEach(bootstrapModeler(diagramXML, { modules: testModules }));
-
-
- var createEvent;
-
- beforeEach(inject(function(canvas, dragging) {
- createEvent = Events.scopedCreate(canvas);
- dragging.setOptions({ manual: true });
- }));
-
-
- it('should not snap', inject(function(canvas, create, dragging, elementFactory) {
-
- // given
- var participantShape = elementFactory.createParticipantShape(false),
- rootElement = canvas.getRootElement(),
- rootGfx = canvas.getGraphics(rootElement);
-
- // when
- create.start(createEvent({ x: 50, y: 50 }), participantShape);
-
- dragging.hover({ element: rootElement, gfx: rootGfx });
-
- dragging.move(createEvent({ x: 400, y: 400 }));
- dragging.end(createEvent({ x: 400, y: 400 }));
-
- // then
- expect(bounds(participantShape)).toEqual({
- x: 100, y: 275, width: 600, height: 250
- });
- }));
-
- });
-
-
- describe('on shape resize', function () {
-
- var diagramXML = require('../../../fixtures/bpmn/collaboration-resize.bpmn');
+ var diagramXML = require('./BpmnSnapping.collaboration-resize.bpmn');
var testResizeModules = [ coreModule, resizeModule, rulesModule, snappingModule ];
@@ -182,31 +186,83 @@ describe('features/snapping - BpmnSnapping', function() {
}));
- describe('Participant min bounds', function() {
+ describe('snap min bounds', function() {
- it('should snap ', inject(function(canvas, elementRegistry, resize, dragging) {
+ it('should snap to children from ', inject(function(canvas, elementRegistry, resize, dragging) {
var participant = elementRegistry.get('Participant_2');
- resize.activate(Events.create(canvas._svg, { x: 500, y: 500 }), participant, 'se');
- dragging.move(Events.create(canvas._svg, { x: 0, y: 0 }));
+ resize.activate(createEvent({ x: 500, y: 500 }), participant, 'se');
+ dragging.move(createEvent({ x: 0, y: 0 }));
dragging.end();
- expect(participant.width).toEqual(400);
- expect(participant.height).toEqual(200);
+ expect(participant.width).toEqual(497);
+ expect(participant.height).toEqual(252);
}));
- it('should snap from ', inject(function(canvas, elementRegistry, resize, dragging) {
+ it('should snap to children from ', inject(function(canvas, elementRegistry, resize, dragging) {
var participant = elementRegistry.get('Participant_2');
- resize.activate(Events.create(canvas._svg, { x: 0, y: 0 }), participant, 'nw');
- dragging.move(Events.create(canvas._svg, { x: 500, y: 500 }));
+ resize.activate(createEvent({ x: 0, y: 0 }), participant, 'nw');
+ dragging.move(createEvent({ x: 500, y: 500 }));
dragging.end();
- expect(participant.width).toEqual(400);
- expect(participant.height).toEqual(200);
+ expect(participant.width).toEqual(467);
+ expect(participant.height).toEqual(287);
+ }));
+
+
+ it('should snap to min dimensions from ', inject(function(canvas, elementRegistry, resize, dragging) {
+
+ var participant = elementRegistry.get('Participant_1');
+
+ resize.activate(createEvent({ x: 500, y: 500 }), participant, 'se');
+ dragging.move(createEvent({ x: 0, y: 0 }));
+ dragging.end();
+
+ expect(participant.width).toEqual(300);
+ expect(participant.height).toEqual(150);
+ }));
+
+
+ it('should snap to min dimensions from ', inject(function(canvas, elementRegistry, resize, dragging) {
+
+ var participant = elementRegistry.get('Participant_1');
+
+ resize.activate(createEvent({ x: 0, y: 0 }), participant, 'nw');
+ dragging.move(createEvent({ x: 500, y: 500 }));
+ dragging.end();
+
+ expect(participant.width).toEqual(300);
+ expect(participant.height).toEqual(150);
+ }));
+
+
+ it('should snap to min dimensions + children from ', inject(function(canvas, elementRegistry, resize, dragging) {
+
+ var participant = elementRegistry.get('Participant_3');
+
+ resize.activate(createEvent({ x: 500, y: 500 }), participant, 'se');
+ dragging.move(createEvent({ x: 0, y: 0 }));
+ dragging.end();
+
+ expect(participant.width).toEqual(320);
+ expect(participant.height).toEqual(150);
+ }));
+
+
+ it('should snap to min dimensions + children from ', inject(function(canvas, elementRegistry, resize, dragging) {
+
+ var participant = elementRegistry.get('Participant_3');
+
+ resize.activate(createEvent({ x: 0, y: 0 }), participant, 'nw');
+ dragging.move(createEvent({ x: 500, y: 500 }));
+ dragging.end();
+
+ expect(participant.width).toEqual(353);
+ expect(participant.height).toEqual(177);
}));
});
@@ -216,8 +272,8 @@ describe('features/snapping - BpmnSnapping', function() {
var subProcess = elementRegistry.get('SubProcess_1');
- resize.activate(Events.create(canvas._svg, { x: 453, y: 624 }), subProcess, 'se');
- dragging.move(Events.create(canvas._svg, { x: -453, y: -624 }));
+ resize.activate(createEvent({ x: 453, y: 624 }), subProcess, 'se');
+ dragging.move(createEvent({ x: -453, y: -624 }));
dragging.end();
expect(subProcess.width).toEqual(140);
@@ -229,12 +285,12 @@ describe('features/snapping - BpmnSnapping', function() {
var participant = elementRegistry.get('Participant_1');
- resize.activate(Events.create(canvas._svg, { x: 614, y: 310 }), participant, 'se');
- dragging.move(Events.create(canvas._svg, { x: -614, y: -310 }));
+ resize.activate(createEvent({ x: 614, y: 310 }), participant, 'se');
+ dragging.move(createEvent({ x: -614, y: -310 }));
dragging.end();
- expect(participant.width).toEqual(400);
- expect(participant.height).toEqual(200);
+ expect(participant.width).toEqual(300);
+ expect(participant.height).toEqual(150);
}));
@@ -242,8 +298,8 @@ describe('features/snapping - BpmnSnapping', function() {
var textAnnotation = elementRegistry.get('TextAnnotation_1');
- resize.activate(Events.create(canvas._svg, { x: 592, y: 452 }), textAnnotation, 'se');
- dragging.move(Events.create(canvas._svg, { x: -592, y: -452 }));
+ resize.activate(createEvent({ x: 592, y: 452 }), textAnnotation, 'se');
+ dragging.move(createEvent({ x: -592, y: -452 }));
dragging.end();
expect(textAnnotation.width).toEqual(50);