From b76c1c8dedcb870a8c93cde74b2c88b30ed80e3d Mon Sep 17 00:00:00 2001 From: pedesen Date: Mon, 13 Jul 2015 15:18:18 +0200 Subject: [PATCH] chore(replace): add test case for bpmn containment Related to bpmn-io/diagram-js#101 --- .../bpmn/features/replace/01_replace.bpmn | 52 ++++++++++++++----- test/spec/features/replace/BpmnReplaceSpec.js | 40 +++++++++++++- 2 files changed, 76 insertions(+), 16 deletions(-) diff --git a/test/fixtures/bpmn/features/replace/01_replace.bpmn b/test/fixtures/bpmn/features/replace/01_replace.bpmn index 4d5f5605..bd8746fe 100644 --- a/test/fixtures/bpmn/features/replace/01_replace.bpmn +++ b/test/fixtures/bpmn/features/replace/01_replace.bpmn @@ -2,23 +2,31 @@ - SequenceFlow_0fn1a6r + SequenceFlow_1 - SequenceFlow_0fn1a6r - SequenceFlow_0fg7s2y + SequenceFlow_1 + SequenceFlow_2 - + - SequenceFlow_0fg7s2y - SequenceFlow_0rxcijf + SequenceFlow_2 + SequenceFlow_3 - + - SequenceFlow_0rxcijf + SequenceFlow_3 - - + + + + SequenceFlow_4 + + + SequenceFlow_4 + + + @@ -32,7 +40,7 @@ - + @@ -45,7 +53,7 @@ - + @@ -58,7 +66,7 @@ - + @@ -68,9 +76,25 @@ - + + + + + + + + + + + + + + + + + diff --git a/test/spec/features/replace/BpmnReplaceSpec.js b/test/spec/features/replace/BpmnReplaceSpec.js index 9e475a12..71264daf 100644 --- a/test/spec/features/replace/BpmnReplaceSpec.js +++ b/test/spec/features/replace/BpmnReplaceSpec.js @@ -61,7 +61,7 @@ describe('features/replace', function() { it('expanded sub process', inject(function(elementRegistry, modeling, bpmnReplace, canvas) { - + // given var subProcess = elementRegistry.get('SubProcess_1'), newElementData = { @@ -80,7 +80,7 @@ describe('features/replace', function() { it('transaction', inject(function(elementRegistry, modeling, bpmnReplace, canvas) { - + var transaction = elementRegistry.get('Transaction_1'), newElementData = { type: 'bpmn:SubProcess', @@ -449,4 +449,40 @@ describe('features/replace', function() { }); + + describe('children handling', function() { + + it('should update bpmn containment properly', inject(function(elementRegistry, modeling, bpmnReplace) { + + // given + var subProcessShape = elementRegistry.get('SubProcess_1'); + var startEventShape = elementRegistry.get('StartEvent_2'); + var taskShape = elementRegistry.get('Task_2'); + var sequenceFlowConnection = elementRegistry.get('SequenceFlow_4'); + + var transactionShapeData = { + type: 'bpmn:Transaction' + }; + + // when + var transactionShape = bpmnReplace.replaceElement(subProcessShape, transactionShapeData); + + // then + var subProcess = subProcessShape.businessObject, + transaction = transactionShape.businessObject; + + var transactionChildren = transaction.get('flowElements'); + var subProcessChildren = subProcess.get('flowElements'); + + expect(transactionChildren).toContain(startEventShape.businessObject); + expect(transactionChildren).toContain(taskShape.businessObject); + expect(transactionChildren).toContain(sequenceFlowConnection.businessObject); + + expect(subProcessChildren).not.toContain(startEventShape.businessObject); + expect(subProcessChildren).not.toContain(taskShape.businessObject); + expect(subProcessChildren).not.toContain(sequenceFlowConnection.businessObject); + })); + + }); + });