From 1f667e0184c49bb09f1ef21c4dc3885f1b09b58b Mon Sep 17 00:00:00 2001 From: Philipp Fromme Date: Mon, 9 Jan 2017 14:30:39 +0100 Subject: [PATCH] fix(move-to-origin): ignore children of subprocesses Closes camunda/camunda-modeler#444 --- .../editor-actions/BpmnEditorActions.js | 2 +- .../editor-actions/BpmnEditorActionsSpec.js | 21 ++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/features/editor-actions/BpmnEditorActions.js b/lib/features/editor-actions/BpmnEditorActions.js index 6c508d97..fb2b26d0 100644 --- a/lib/features/editor-actions/BpmnEditorActions.js +++ b/lib/features/editor-actions/BpmnEditorActions.js @@ -100,7 +100,7 @@ function BpmnEditorActions( }); } else { elements = elementRegistry.filter(function(element) { - return element !== rootElement; + return element !== rootElement && !is(element.parent, 'bpmn:SubProcess'); }); } diff --git a/test/spec/features/editor-actions/BpmnEditorActionsSpec.js b/test/spec/features/editor-actions/BpmnEditorActionsSpec.js index b30c3706..64565694 100644 --- a/test/spec/features/editor-actions/BpmnEditorActionsSpec.js +++ b/test/spec/features/editor-actions/BpmnEditorActionsSpec.js @@ -8,12 +8,14 @@ var pick = require('lodash/object/pick'); var getBBox = require('diagram-js/lib/util/Elements').getBBox; +var getParent = require('lib/features/modeling/util/ModelingUtil').getParent; + var bpmnEditorActionsModule = require('../../../../lib/features/editor-actions'), modelingModule = require('../../../../lib/features/modeling'), coreModule = require('../../../../lib/core'); -var basicXML = require('../../../fixtures/bpmn/simple.bpmn'), +var basicXML = require('../../../fixtures/bpmn/nested-subprocesses.bpmn'), collaborationXML = require('../../../fixtures/bpmn/collaboration.bpmn'); @@ -48,6 +50,23 @@ describe('features/editor-actions', function() { describe('collaboration', testMoveToOrigin(collaborationXML)); + describe('subprocesses', function() { + + beforeEach(bootstrapModeler(basicXML, { modules: [ bpmnEditorActionsModule, modelingModule, coreModule ] })); + + it('should ignore children of subprocesses', inject(function(editorActions, elementRegistry) { + // given + var startEvent = elementRegistry.get('StartEvent_3'), + startEventParent = getParent(startEvent); + + // when + editorActions.trigger('moveToOrigin'); + + // then + expect(getParent(startEvent)).to.equal(startEventParent); + })); + }); + }); });