diff --git a/lib/features/modeling/behavior/SubProcessStartEventBehavior.js b/lib/features/modeling/behavior/SubProcessStartEventBehavior.js index 0f1ca99a..ba115a20 100644 --- a/lib/features/modeling/behavior/SubProcessStartEventBehavior.js +++ b/lib/features/modeling/behavior/SubProcessStartEventBehavior.js @@ -20,7 +20,7 @@ export default function SubProcessStartEventBehavior(injector, modeling) { if ( !is(newShape, 'bpmn:SubProcess') || - !is(oldShape, 'bpmn:Task') || + ! (is(oldShape, 'bpmn:Task') || is(oldShape, 'bpmn:CallActivity')) || !isExpanded(newShape) ) { return; diff --git a/test/spec/features/modeling/behavior/SubProcessBehavior.start-event.bpmn b/test/spec/features/modeling/behavior/SubProcessBehavior.start-event.bpmn index 25d99d99..b61abbda 100644 --- a/test/spec/features/modeling/behavior/SubProcessBehavior.start-event.bpmn +++ b/test/spec/features/modeling/behavior/SubProcessBehavior.start-event.bpmn @@ -2,6 +2,7 @@ + @@ -9,6 +10,9 @@ + + + diff --git a/test/spec/features/modeling/behavior/SubProcessStartEventBehaviorSpec.js b/test/spec/features/modeling/behavior/SubProcessStartEventBehaviorSpec.js index 91f0589c..f31938f2 100644 --- a/test/spec/features/modeling/behavior/SubProcessStartEventBehaviorSpec.js +++ b/test/spec/features/modeling/behavior/SubProcessStartEventBehaviorSpec.js @@ -99,6 +99,56 @@ describe('features/modeling/behavior - subprocess start event', function() { }); + + describe('call activity -> expanded subprocess', function() { + + it('should add start event child to subprocess', inject( + function(elementRegistry, bpmnReplace) { + + // given + var callActivity = elementRegistry.get('CallActivity_1'), + expandedSubProcess, + startEvents; + + // when + expandedSubProcess = bpmnReplace.replaceElement(callActivity, { + type: 'bpmn:SubProcess', + isExpanded: true + }); + + // then + startEvents = getChildStartEvents(expandedSubProcess); + + expect(startEvents).to.have.length(1); + } + )); + + + it('should wire startEvent di correctly', inject( + function(elementRegistry, bpmnReplace) { + + // given + var callActivity = elementRegistry.get('CallActivity_1'), + expandedSubProcess, + startEvent, + startEventDi; + + // when + expandedSubProcess = bpmnReplace.replaceElement(callActivity, { + type: 'bpmn:SubProcess', + isExpanded: true + }); + + // then + startEvent = getChildStartEvents(expandedSubProcess)[0]; + startEventDi = getDi(startEvent); + + expect(startEventDi.$parent).to.exist; + } + )); + + }); + }); });