|
| 1 | +'use strict'; |
| 2 | + |
| 3 | +var Matchers = require('../../../Matchers'), |
| 4 | + TestHelper = require('../../../TestHelper'); |
| 5 | + |
| 6 | +/* global bootstrapModeler, inject */ |
| 7 | + |
| 8 | + |
| 9 | +var modelingModule = require('../../../../lib/features/modeling'), |
| 10 | + coreModule = require('../../../../lib/core'); |
| 11 | + |
| 12 | + |
| 13 | +describe('features/modeling - create/remove space', function() { |
| 14 | + |
| 15 | + beforeEach(Matchers.addDeepEquals); |
| 16 | + |
| 17 | + |
| 18 | + var diagramXML = require('../../../fixtures/bpmn/simple.bpmn'); |
| 19 | + |
| 20 | + var testModules = [ coreModule, modelingModule ]; |
| 21 | + |
| 22 | + beforeEach(bootstrapModeler(diagramXML, { modules: testModules })); |
| 23 | + |
| 24 | + |
| 25 | + describe('create space', function() { |
| 26 | + |
| 27 | + |
| 28 | + it('should create space to the right', inject(function(elementRegistry, modeling) { |
| 29 | + |
| 30 | + // given |
| 31 | + var sequenceFlowElement = elementRegistry.get('SequenceFlow_3'), |
| 32 | + sequenceFlow = sequenceFlowElement.businessObject; |
| 33 | + |
| 34 | + var subProcessElement = elementRegistry.get('SubProcess_1'), |
| 35 | + subProcess = subProcessElement.businessObject; |
| 36 | + |
| 37 | + var endEventElement = elementRegistry.get('EndEvent_1'), |
| 38 | + endEvent = endEventElement.businessObject; |
| 39 | + |
| 40 | + |
| 41 | + var subProcOldPos = { |
| 42 | + x: subProcessElement.x, |
| 43 | + y: subProcessElement.y |
| 44 | + }; |
| 45 | + |
| 46 | + var endEventOldPos = { |
| 47 | + x: endEventElement.x, |
| 48 | + y: endEventElement.y |
| 49 | + }; |
| 50 | + |
| 51 | + var delta = { x: 50, y: 0 }, |
| 52 | + direction = 'e'; |
| 53 | + |
| 54 | + // when |
| 55 | + modeling.createSpace([subProcessElement, endEventElement], [], delta, direction); |
| 56 | + |
| 57 | + // then |
| 58 | + expect(subProcess.di.bounds.x).toBe(subProcOldPos.x + 50); |
| 59 | + expect(subProcess.di.bounds.y).toBe(subProcOldPos.y); |
| 60 | + |
| 61 | + expect(endEvent.di.bounds.x).toBe(endEventOldPos.x + 50); |
| 62 | + expect(endEvent.di.bounds.y).toBe(endEventOldPos.y); |
| 63 | + |
| 64 | + expect(sequenceFlow.di.waypoint).toDeepEqual([ |
| 65 | + { $type: 'dc:Point', x: 144, y: 230 }, |
| 66 | + { $type: 'dc:Point', x: 350, y: 230 }, |
| 67 | + ]); |
| 68 | + })); |
| 69 | + |
| 70 | + |
| 71 | + it('should create space downwards', inject(function(elementRegistry, modeling) { |
| 72 | + |
| 73 | + // given |
| 74 | + var startEventElement = elementRegistry.get('StartEvent_2'), |
| 75 | + startEvent = startEventElement.businessObject; |
| 76 | + |
| 77 | + var sequenceFlowElement = elementRegistry.get('SequenceFlow_3'), |
| 78 | + sequenceFlow = sequenceFlowElement.businessObject; |
| 79 | + |
| 80 | + var subProcessElement = elementRegistry.get('SubProcess_1'), |
| 81 | + subProcess = subProcessElement.businessObject; |
| 82 | + |
| 83 | + var endEventElement = elementRegistry.get('EndEvent_1'), |
| 84 | + endEvent = endEventElement.businessObject; |
| 85 | + |
| 86 | + var startEventOldPos = { |
| 87 | + x: startEventElement.x, |
| 88 | + y: startEventElement.y |
| 89 | + }; |
| 90 | + |
| 91 | + var subProcOldPos = { |
| 92 | + x: subProcessElement.x, |
| 93 | + y: subProcessElement.y |
| 94 | + }; |
| 95 | + |
| 96 | + var endEventOldPos = { |
| 97 | + x: endEventElement.x, |
| 98 | + y: endEventElement.y |
| 99 | + }; |
| 100 | + |
| 101 | + var delta = { x: 0, y: 50 }, |
| 102 | + direction = 's'; |
| 103 | + |
| 104 | + // when |
| 105 | + modeling.createSpace([startEventElement ,subProcessElement, endEventElement], [], delta, direction); |
| 106 | + |
| 107 | + // then |
| 108 | + expect(startEvent.di.bounds.x).toBe(startEventOldPos.x); |
| 109 | + expect(startEvent.di.bounds.y).toBe(startEventOldPos.y + 50); |
| 110 | + |
| 111 | + expect(subProcess.di.bounds.x).toBe(subProcOldPos.x); |
| 112 | + expect(subProcess.di.bounds.y).toBe(subProcOldPos.y + 50); |
| 113 | + |
| 114 | + expect(endEvent.di.bounds.x).toBe(endEventOldPos.x); |
| 115 | + expect(endEvent.di.bounds.y).toBe(endEventOldPos.y + 50); |
| 116 | + |
| 117 | + expect(sequenceFlow.di.waypoint).toDeepEqual([ |
| 118 | + { $type: 'dc:Point', x: 144, y: 280 }, |
| 119 | + { $type: 'dc:Point', x: 300, y: 280 }, |
| 120 | + ]); |
| 121 | + })); |
| 122 | + |
| 123 | + |
| 124 | + it('should remove space to the left', inject(function(elementRegistry, modeling) { |
| 125 | + |
| 126 | + // given |
| 127 | + var sequenceFlowElement = elementRegistry.get('SequenceFlow_3'), |
| 128 | + sequenceFlow = sequenceFlowElement.businessObject; |
| 129 | + |
| 130 | + var subProcessElement = elementRegistry.get('SubProcess_1'), |
| 131 | + subProcess = subProcessElement.businessObject; |
| 132 | + |
| 133 | + var endEventElement = elementRegistry.get('EndEvent_1'), |
| 134 | + endEvent = endEventElement.businessObject; |
| 135 | + |
| 136 | + var subProcOldPos = { |
| 137 | + x: subProcessElement.x, |
| 138 | + y: subProcessElement.y |
| 139 | + }; |
| 140 | + |
| 141 | + var endEventOldPos = { |
| 142 | + x: endEventElement.x, |
| 143 | + y: endEventElement.y |
| 144 | + }; |
| 145 | + |
| 146 | + var delta = { x: -50, y: 0 }, |
| 147 | + direction = 'w'; |
| 148 | + |
| 149 | + // when |
| 150 | + modeling.createSpace([subProcessElement, endEventElement], [], delta, direction); |
| 151 | + |
| 152 | + // then |
| 153 | + expect(subProcess.di.bounds.x).toBe(subProcOldPos.x - 50); |
| 154 | + expect(subProcess.di.bounds.y).toBe(subProcOldPos.y); |
| 155 | + |
| 156 | + expect(endEvent.di.bounds.x).toBe(endEventOldPos.x - 50); |
| 157 | + expect(endEvent.di.bounds.y).toBe(endEventOldPos.y); |
| 158 | + |
| 159 | + expect(sequenceFlow.di.waypoint).toDeepEqual([ |
| 160 | + { $type: 'dc:Point', x: 144, y: 230 }, |
| 161 | + { $type: 'dc:Point', x: 250, y: 230 }, |
| 162 | + ]); |
| 163 | + })); |
| 164 | + |
| 165 | + |
| 166 | + it('should resize to the right', inject(function(elementRegistry, modeling) { |
| 167 | + |
| 168 | + // given |
| 169 | + var taskElement = elementRegistry.get('Task_1'), |
| 170 | + task = taskElement.businessObject; |
| 171 | + |
| 172 | + var subProcessElement = elementRegistry.get('SubProcess_1'), |
| 173 | + subProcess = subProcessElement.businessObject; |
| 174 | + |
| 175 | + var startEventElement = elementRegistry.get('StartEvent_1'), |
| 176 | + startEvent = startEventElement.businessObject; |
| 177 | + |
| 178 | + var startEventElement2 = elementRegistry.get('StartEvent_2'), |
| 179 | + startEvent2 = startEventElement2.businessObject; |
| 180 | + |
| 181 | + var subProcOldPos = { |
| 182 | + x: subProcessElement.x, |
| 183 | + y: subProcessElement.y, |
| 184 | + width: subProcessElement.width, |
| 185 | + height: subProcessElement.height |
| 186 | + }; |
| 187 | + |
| 188 | + var startEventOldPos2 = { |
| 189 | + x: startEventElement2.x, |
| 190 | + y: startEventElement2.y |
| 191 | + }; |
| 192 | + |
| 193 | + var startEventOldPos = { |
| 194 | + x: startEventElement.x, |
| 195 | + y: startEventElement.y |
| 196 | + }; |
| 197 | + |
| 198 | + var taskOldPos = { |
| 199 | + x: taskElement.x, |
| 200 | + y: taskElement.y |
| 201 | + }; |
| 202 | + |
| 203 | + var delta = { x: 50, y: 0 }, |
| 204 | + direction = 'w'; |
| 205 | + |
| 206 | + // when |
| 207 | + modeling.createSpace([startEventElement, startEventElement2, taskElement], [subProcessElement], delta, direction); |
| 208 | + |
| 209 | + // then |
| 210 | + expect(subProcess.di.bounds.x).toBe(subProcOldPos.x + 50); |
| 211 | + expect(subProcess.di.bounds.y).toBe(subProcOldPos.y); |
| 212 | + expect(subProcess.di.bounds.width).toBe(subProcOldPos.width - 50); |
| 213 | + expect(subProcess.di.bounds.height).toBe(subProcOldPos.height); |
| 214 | + |
| 215 | + expect(startEvent.di.bounds.x).toBe(startEventOldPos.x + 50); |
| 216 | + expect(startEvent.di.bounds.y).toBe(startEventOldPos.y); |
| 217 | + |
| 218 | + expect(startEvent2.di.bounds.x).toBe(startEventOldPos2.x + 50); |
| 219 | + expect(startEvent2.di.bounds.y).toBe(startEventOldPos2.y); |
| 220 | + |
| 221 | + expect(task.di.bounds.x).toBe(taskOldPos.x + 50); |
| 222 | + expect(task.di.bounds.y).toBe(taskOldPos.y); |
| 223 | + })); |
| 224 | + }); |
| 225 | +}); |
0 commit comments