bpmn-js 0.20.6 → 0.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) hide show
  1. package/.eslintrc +33 -33
  2. package/.npmignore +8 -8
  3. package/.travis.yml +19 -17
  4. package/.wiredeps +88 -88
  5. package/CONTRIBUTING.md +55 -55
  6. package/Gruntfile.js +129 -129
  7. package/LICENSE +22 -22
  8. package/README.md +113 -113
  9. package/assets/bpmn-font/css/bpmn-embedded.css +159 -159
  10. package/assets/bpmn-font/css/bpmn.css +161 -161
  11. package/assets/bpmn-font/font/bpmn.svg +116 -116
  12. package/docs/architecture/overview.svg +48 -48
  13. package/docs/project/COMMIT_MESSAGES.md +82 -82
  14. package/docs/project/SETUP.md +66 -66
  15. package/docs/project/setup-alternative.sh +41 -41
  16. package/docs/project/setup.bat +45 -45
  17. package/docs/project/setup.sh +40 -40
  18. package/docs/translations.json +97 -97
  19. package/lib/Modeler.js +208 -208
  20. package/lib/NavigatedViewer.js +27 -27
  21. package/lib/Viewer.js +503 -503
  22. package/lib/core/index.js +5 -5
  23. package/lib/draw/BpmnRenderer.js +1934 -1934
  24. package/lib/draw/PathMap.js +478 -478
  25. package/lib/draw/index.js +5 -5
  26. package/lib/features/auto-resize/BpmnAutoResize.js +34 -34
  27. package/lib/features/auto-resize/BpmnAutoResizeProvider.js +51 -51
  28. package/lib/features/auto-resize/index.js +5 -5
  29. package/lib/features/context-pad/ContextPadProvider.js +374 -374
  30. package/lib/features/context-pad/index.js +11 -11
  31. package/lib/features/copy-paste/BpmnCopyPaste.js +157 -154
  32. package/lib/features/copy-paste/index.js +7 -7
  33. package/lib/features/distribute-elements/BpmnDistributeElements.js +34 -34
  34. package/lib/features/distribute-elements/index.js +7 -7
  35. package/lib/features/editor-actions/BpmnEditorActions.js +130 -130
  36. package/lib/features/editor-actions/index.js +15 -15
  37. package/lib/features/global-connect/BpmnGlobalConnect.js +49 -49
  38. package/lib/features/global-connect/index.js +7 -7
  39. package/lib/features/keyboard/BpmnKeyBindings.js +72 -72
  40. package/lib/features/keyboard/index.js +7 -7
  41. package/lib/features/label-editing/LabelEditingPreview.js +122 -0
  42. package/lib/features/label-editing/LabelEditingProvider.js +292 -193
  43. package/lib/features/label-editing/LabelUtil.js +43 -43
  44. package/lib/features/label-editing/cmd/UpdateLabelHandler.js +116 -112
  45. package/lib/features/label-editing/index.js +14 -9
  46. package/lib/features/modeling/BpmnFactory.js +97 -97
  47. package/lib/features/modeling/BpmnLayouter.js +191 -191
  48. package/lib/features/modeling/BpmnUpdater.js +692 -688
  49. package/lib/features/modeling/ElementFactory.js +218 -218
  50. package/lib/features/modeling/Modeling.js +183 -183
  51. package/lib/features/modeling/behavior/AppendBehavior.js +42 -42
  52. package/lib/features/modeling/behavior/CopyPasteBehavior.js +69 -69
  53. package/lib/features/modeling/behavior/CreateBoundaryEventBehavior.js +51 -51
  54. package/lib/features/modeling/behavior/CreateDataObjectBehavior.js +37 -37
  55. package/lib/features/modeling/behavior/CreateParticipantBehavior.js +91 -91
  56. package/lib/features/modeling/behavior/DataInputAssociationBehavior.js +151 -151
  57. package/lib/features/modeling/behavior/DeleteLaneBehavior.js +107 -107
  58. package/lib/features/modeling/behavior/DropOnFlowBehavior.js +165 -131
  59. package/lib/features/modeling/behavior/ImportDockingFix.js +80 -80
  60. package/lib/features/modeling/behavior/LabelBehavior.js +222 -222
  61. package/lib/features/modeling/behavior/ModelingFeedback.js +50 -50
  62. package/lib/features/modeling/behavior/RemoveElementBehavior.js +73 -73
  63. package/lib/features/modeling/behavior/RemoveParticipantBehavior.js +50 -50
  64. package/lib/features/modeling/behavior/ReplaceConnectionBehavior.js +128 -128
  65. package/lib/features/modeling/behavior/ReplaceElementBehaviour.js +118 -116
  66. package/lib/features/modeling/behavior/ResizeLaneBehavior.js +59 -59
  67. package/lib/features/modeling/behavior/ToggleElementCollapseBehaviour.js +138 -138
  68. package/lib/features/modeling/behavior/UnclaimIdBehavior.js +27 -27
  69. package/lib/features/modeling/behavior/UnsetDefaultFlowBehavior.js +54 -54
  70. package/lib/features/modeling/behavior/UpdateFlowNodeRefsBehavior.js +156 -156
  71. package/lib/features/modeling/behavior/index.js +44 -44
  72. package/lib/features/modeling/behavior/util/GeometricUtil.js +129 -129
  73. package/lib/features/modeling/behavior/util/LabelLayoutUtil.js +218 -218
  74. package/lib/features/modeling/behavior/util/LineAttachmentUtil.js +233 -233
  75. package/lib/features/modeling/behavior/util/LineIntersect.js +36 -36
  76. package/lib/features/modeling/cmd/AddLaneHandler.js +83 -83
  77. package/lib/features/modeling/cmd/IdClaimHandler.js +41 -41
  78. package/lib/features/modeling/cmd/ResizeLaneHandler.js +125 -125
  79. package/lib/features/modeling/cmd/SplitLaneHandler.js +82 -82
  80. package/lib/features/modeling/cmd/UpdateCanvasRootHandler.js +78 -78
  81. package/lib/features/modeling/cmd/UpdateFlowNodeRefsHandler.js +185 -185
  82. package/lib/features/modeling/cmd/UpdatePropertiesHandler.js +264 -264
  83. package/lib/features/modeling/index.js +23 -23
  84. package/lib/features/modeling/util/LaneUtil.js +157 -157
  85. package/lib/features/modeling/util/ModelingUtil.js +48 -48
  86. package/lib/features/ordering/BpmnOrderingProvider.js +147 -147
  87. package/lib/features/ordering/index.js +6 -6
  88. package/lib/features/palette/PaletteProvider.js +158 -158
  89. package/lib/features/palette/index.js +13 -13
  90. package/lib/features/popup-menu/ReplaceMenuProvider.js +479 -479
  91. package/lib/features/popup-menu/index.js +7 -7
  92. package/lib/features/popup-menu/util/TypeUtil.js +41 -41
  93. package/lib/features/replace/BpmnReplace.js +197 -197
  94. package/lib/features/replace/ReplaceOptions.js +787 -787
  95. package/lib/features/replace/index.js +7 -7
  96. package/lib/features/replace-preview/BpmnReplacePreview.js +113 -113
  97. package/lib/features/replace-preview/index.js +5 -5
  98. package/lib/features/rules/BpmnRules.js +807 -806
  99. package/lib/features/rules/index.js +7 -7
  100. package/lib/features/search/BpmnSearchProvider.js +128 -128
  101. package/lib/features/search/index.js +7 -7
  102. package/lib/features/snapping/BpmnSnapping.js +511 -495
  103. package/lib/features/snapping/BpmnSnappingUtil.js +159 -159
  104. package/lib/features/snapping/index.js +3 -3
  105. package/lib/import/BpmnImporter.js +302 -302
  106. package/lib/import/BpmnTreeWalker.js +445 -445
  107. package/lib/import/Importer.js +69 -69
  108. package/lib/import/Util.js +8 -8
  109. package/lib/import/index.js +5 -5
  110. package/lib/util/DiUtil.js +60 -60
  111. package/lib/util/LabelUtil.js +139 -139
  112. package/lib/util/ModelUtil.js +31 -31
  113. package/lib/util/PoweredByUtil.js +82 -82
  114. package/lib/util/model/ModelCloneHelper.js +201 -201
  115. package/lib/util/model/ModelCloneUtils.js +35 -35
  116. package/package.json +22 -22
  117. package/resources/initial.bpmn +12 -12
  118. package/resources/screencast.gif +0 -0
  119. package/tasks/banner.txt +11 -11
  120. package/tasks/bundle.js +162 -162
  121. package/test/TestHelper.js +17 -17
  122. package/test/config/karma.unit.js +46 -46
  123. package/test/config/translation-reporter.js +48 -48
  124. package/test/fixtures/bpmn/align-elements.bpmn +136 -136
  125. package/test/fixtures/bpmn/basic.bpmn +17 -17
  126. package/test/fixtures/bpmn/boundary-events.bpmn +59 -59
  127. package/test/fixtures/bpmn/collaboration/collaboration-empty-participant.bpmn +13 -13
  128. package/test/fixtures/bpmn/collaboration/collaboration-message-flows.bpmn +89 -89
  129. package/test/fixtures/bpmn/collaboration/collaboration-participant.bpmn +59 -59
  130. package/test/fixtures/bpmn/collaboration/process-empty.bpmn +6 -6
  131. package/test/fixtures/bpmn/collaboration/process.bpmn +47 -47
  132. package/test/fixtures/bpmn/collaboration-data-items.bpmn +81 -81
  133. package/test/fixtures/bpmn/collaboration-message-flows.bpmn +82 -82
  134. package/test/fixtures/bpmn/collaboration-sequence-flows.bpmn +83 -83
  135. package/test/fixtures/bpmn/collaboration.bpmn +50 -50
  136. package/test/fixtures/bpmn/complex.bpmn +2151 -2151
  137. package/test/fixtures/bpmn/conditions.bpmn +82 -82
  138. package/test/fixtures/bpmn/containers.bpmn +128 -128
  139. package/test/fixtures/bpmn/distribute-elements-filtering.bpmn +58 -58
  140. package/test/fixtures/bpmn/distribute-elements.bpmn +232 -232
  141. package/test/fixtures/bpmn/draw/activity-markers-combination.bpmn +141 -141
  142. package/test/fixtures/bpmn/draw/activity-markers-simple.bpmn +47 -47
  143. package/test/fixtures/bpmn/draw/activity-markers.bpmn +212 -212
  144. package/test/fixtures/bpmn/draw/associations.bpmn +55 -55
  145. package/test/fixtures/bpmn/draw/boundary-event-with-refnode.bpmn +81 -81
  146. package/test/fixtures/bpmn/draw/boundary-event-without-refnode.bpmn +81 -81
  147. package/test/fixtures/bpmn/draw/boundary-event-z-index.bpmn +82 -82
  148. package/test/fixtures/bpmn/draw/call-activity.bpmn +12 -12
  149. package/test/fixtures/bpmn/draw/colors.bpmn +411 -411
  150. package/test/fixtures/bpmn/draw/conditional-flow-default.bpmn +100 -100
  151. package/test/fixtures/bpmn/draw/conditional-flow-gateways.bpmn +72 -72
  152. package/test/fixtures/bpmn/draw/conditional-flow-typed-task.bpmn +33 -33
  153. package/test/fixtures/bpmn/draw/conditional-flow.bpmn +248 -248
  154. package/test/fixtures/bpmn/draw/data-objects.bpmn +265 -265
  155. package/test/fixtures/bpmn/draw/event-subprocesses-collapsed.bpmn +200 -200
  156. package/test/fixtures/bpmn/draw/event-subprocesses-expanded.bpmn +274 -274
  157. package/test/fixtures/bpmn/draw/events-interrupting.bpmn +370 -370
  158. package/test/fixtures/bpmn/draw/events.bpmn +374 -374
  159. package/test/fixtures/bpmn/draw/gateway-type-default.bpmn +45 -45
  160. package/test/fixtures/bpmn/draw/gateways.bpmn +61 -61
  161. package/test/fixtures/bpmn/draw/group.bpmn +24 -24
  162. package/test/fixtures/bpmn/draw/message-marker.bpmn +112 -112
  163. package/test/fixtures/bpmn/draw/pools-with-collection-marker.bpmn +104 -104
  164. package/test/fixtures/bpmn/draw/pools.bpmn +82 -82
  165. package/test/fixtures/bpmn/draw/task-types.bpmn +77 -77
  166. package/test/fixtures/bpmn/draw/text-annotation.bpmn +71 -71
  167. package/test/fixtures/bpmn/draw/xor.bpmn +45 -45
  168. package/test/fixtures/bpmn/empty-definitions.bpmn +4 -4
  169. package/test/fixtures/bpmn/error/categoryValue.bpmn +26 -26
  170. package/test/fixtures/bpmn/error/di-plane-no-bpmn-element.bpmn +9 -9
  171. package/test/fixtures/bpmn/error/duplicate-ids.bpmn +14 -14
  172. package/test/fixtures/bpmn/error/invalid-child.bpmn +6 -6
  173. package/test/fixtures/bpmn/error/missing-namespace.bpmn +12 -12
  174. package/test/fixtures/bpmn/event-sub-processes.bpmn +47 -47
  175. package/test/fixtures/bpmn/extension/camunda.bpmn +52 -52
  176. package/test/fixtures/bpmn/extension/custom-override.bpmn +53 -53
  177. package/test/fixtures/bpmn/extension/custom.bpmn +53 -53
  178. package/test/fixtures/bpmn/features/copy-paste/basic.bpmn +111 -111
  179. package/test/fixtures/bpmn/features/copy-paste/collaboration-multiple.bpmn +102 -102
  180. package/test/fixtures/bpmn/features/copy-paste/collaboration.bpmn +74 -74
  181. package/test/fixtures/bpmn/features/copy-paste/data-associations.bpmn +61 -61
  182. package/test/fixtures/bpmn/features/copy-paste/properties.bpmn +43 -43
  183. package/test/fixtures/bpmn/features/drop/drop.bpmn +41 -41
  184. package/test/fixtures/bpmn/features/drop/recursive-task.bpmn +37 -37
  185. package/test/fixtures/bpmn/features/label-editing/labels.bpmn +178 -248
  186. package/test/fixtures/bpmn/features/modeling/update-label.bpmn +24 -24
  187. package/test/fixtures/bpmn/features/replace/01_replace.bpmn +193 -193
  188. package/test/fixtures/bpmn/features/replace/association-gateways.bpmn +173 -173
  189. package/test/fixtures/bpmn/features/replace/cancel-events.bpmn +49 -49
  190. package/test/fixtures/bpmn/features/replace/clone-properties.bpmn +141 -141
  191. package/test/fixtures/bpmn/features/replace/connection.bpmn +42 -42
  192. package/test/fixtures/bpmn/features/rules/event-based-gateway-outgoing-edge.bpmn +72 -72
  193. package/test/fixtures/bpmn/features/rules/link-event.bpmn +35 -35
  194. package/test/fixtures/bpmn/features/rules/text-annotation-association.bpmn +30 -30
  195. package/test/fixtures/bpmn/flow-markers.bpmn +212 -212
  196. package/test/fixtures/bpmn/import/boundaryEvent.bpmn +33 -33
  197. package/test/fixtures/bpmn/import/collaboration.bpmn +50 -50
  198. package/test/fixtures/bpmn/import/collapsed/collaboration.bpmn +76 -76
  199. package/test/fixtures/bpmn/import/collapsed/process.bpmn +84 -84
  200. package/test/fixtures/bpmn/import/collapsed/processWithChildren.bpmn +273 -273
  201. package/test/fixtures/bpmn/import/default-attrs.bpmn +24 -24
  202. package/test/fixtures/bpmn/import/error/boundaryEvent-invalidAttachToRef.bpmn +30 -30
  203. package/test/fixtures/bpmn/import/error/boundaryEvent-missingAttachToRef.bpmn +33 -33
  204. package/test/fixtures/bpmn/import/error/dangling-process-message-flow.bpmn +81 -81
  205. package/test/fixtures/bpmn/import/error/invalid-flow-element.bpmn +35 -35
  206. package/test/fixtures/bpmn/import/error/multiple-dis.bpmn +23 -23
  207. package/test/fixtures/bpmn/import/labels/collaboration-message-flows.bpmn +41 -41
  208. package/test/fixtures/bpmn/import/labels/collaboration.bpmn +72 -72
  209. package/test/fixtures/bpmn/import/labels/embedded.bpmn +39 -39
  210. package/test/fixtures/bpmn/import/labels/external-no-di.bpmn +42 -42
  211. package/test/fixtures/bpmn/import/labels/external.bpmn +69 -69
  212. package/test/fixtures/bpmn/import/position/position-testcase.bpmn +57 -57
  213. package/test/fixtures/bpmn/import/process.bpmn +60 -60
  214. package/test/fixtures/bpmn/nested-subprocesses.bpmn +118 -118
  215. package/test/fixtures/bpmn/sequence-flows.bpmn +60 -60
  216. package/test/fixtures/bpmn/simple-cropping.bpmn +84 -84
  217. package/test/fixtures/bpmn/simple-resizable.bpmn +50 -50
  218. package/test/fixtures/bpmn/simple.bpmn +60 -60
  219. package/test/fixtures/json/model/camunda.json +1042 -1042
  220. package/test/fixtures/json/model/custom-override.json +39 -39
  221. package/test/fixtures/json/model/custom.json +39 -39
  222. package/test/helper/TranslationCollector.js +17 -17
  223. package/test/helper/index.js +249 -249
  224. package/test/integration/CustomElementsSpec.js +223 -223
  225. package/test/integration/ReimportSpec.js +89 -89
  226. package/test/integration/SimpleModelingSpec.js +29 -29
  227. package/test/integration/custom-elements/CustomElementFactory.js +77 -77
  228. package/test/integration/custom-elements/CustomRenderer.js +151 -151
  229. package/test/integration/custom-elements/CustomRules.js +148 -148
  230. package/test/integration/custom-elements/CustomUpdater.js +115 -115
  231. package/test/integration/custom-elements/index.js +7 -7
  232. package/test/integration/model/BpmnModdleSpec.js +65 -65
  233. package/test/matchers/JSONMatcher.js +19 -19
  234. package/test/spec/ModelerSpec.js +401 -401
  235. package/test/spec/NavigatedViewerSpec.js +58 -58
  236. package/test/spec/ViewerSpec.js +977 -977
  237. package/test/spec/draw/BpmnRendererSpec.js +311 -311
  238. package/test/spec/environment/MockingSpec.js +53 -53
  239. package/test/spec/features/align-elements/BpmnAlignElementsSpec.js +137 -137
  240. package/test/spec/features/auto-resize/AutoResize.lanes.bpmn +54 -54
  241. package/test/spec/features/auto-resize/AutoResize.multi-selection.bpmn +22 -22
  242. package/test/spec/features/auto-resize/AutoResize.nested-sub-processes.bpmn +47 -47
  243. package/test/spec/features/auto-resize/AutoResize.participant.bpmn +38 -38
  244. package/test/spec/features/auto-resize/AutoResize.space-tool.bpmn +38 -38
  245. package/test/spec/features/auto-resize/AutoResize.sub-processes.bpmn +37 -37
  246. package/test/spec/features/auto-resize/AutoResizeSpec.js +607 -607
  247. package/test/spec/features/context-pad/ContextPad.activation.bpmn +51 -51
  248. package/test/spec/features/context-pad/ContextPadProviderSpec.js +440 -440
  249. package/test/spec/features/copy-paste/BpmnCopyPasteSpec.js +763 -725
  250. package/test/spec/features/copy-paste/DescriptorTree.js +58 -58
  251. package/test/spec/features/distribute-elements/BpmnDistributeElementsSpec.js +113 -113
  252. package/test/spec/features/editor-actions/BpmnEditorActionsSpec.js +72 -72
  253. package/test/spec/features/global-connect/BpmnGlobalConnectSpec.js +61 -61
  254. package/test/spec/features/keyboard/BpmnKeyBindingsSpec.js +142 -142
  255. package/test/spec/features/label-editing/LabelEditingPreviewSpec.js +133 -0
  256. package/test/spec/features/label-editing/LabelEditingProviderSpec.js +636 -601
  257. package/test/spec/features/label-editing/TouchIntegrationSpec.js +40 -40
  258. package/test/spec/features/modeling/AppendShapeSpec.js +332 -332
  259. package/test/spec/features/modeling/BendpointsSpec.js +25 -25
  260. package/test/spec/features/modeling/BpmnFactorySpec.js +73 -73
  261. package/test/spec/features/modeling/BpmnUpdater.bpmn +99 -99
  262. package/test/spec/features/modeling/BpmnUpdaterSpec.js +79 -79
  263. package/test/spec/features/modeling/CreateConnectionSpec.js +171 -171
  264. package/test/spec/features/modeling/DeleteConnectionSpec.js +75 -75
  265. package/test/spec/features/modeling/DeleteParticipantSpec.js +97 -97
  266. package/test/spec/features/modeling/DeleteShapeSpec.js +75 -75
  267. package/test/spec/features/modeling/DropSpec.js +123 -123
  268. package/test/spec/features/modeling/IdClaim.bpmn +13 -13
  269. package/test/spec/features/modeling/IdClaimSpec.js +50 -50
  270. package/test/spec/features/modeling/LabelBoundsSpec.js +342 -340
  271. package/test/spec/features/modeling/LabelBoundsSpec.simple.bpmn +27 -27
  272. package/test/spec/features/modeling/LabelLayouting.initial.bpmn +37 -37
  273. package/test/spec/features/modeling/LabelLayouting.move.bpmn +99 -99
  274. package/test/spec/features/modeling/LabelLayouting.special.bpmn +76 -76
  275. package/test/spec/features/modeling/LabelLayoutingSpec.js +603 -603
  276. package/test/spec/features/modeling/MoveConnectionSpec.js +101 -101
  277. package/test/spec/features/modeling/MoveElements.flow-collaboration.bpmn +45 -45
  278. package/test/spec/features/modeling/MoveElementsSpec.js +70 -70
  279. package/test/spec/features/modeling/MoveRulesSpec.js +151 -151
  280. package/test/spec/features/modeling/MoveShapeSpec.js +353 -353
  281. package/test/spec/features/modeling/ResizeShapeSpec.js +73 -73
  282. package/test/spec/features/modeling/SpaceToolSpec.js +251 -251
  283. package/test/spec/features/modeling/UpdateAttachmentSpec.js +96 -96
  284. package/test/spec/features/modeling/UpdateLabelSpec.js +130 -130
  285. package/test/spec/features/modeling/UpdatePropertiesSpec.js +503 -503
  286. package/test/spec/features/modeling/append/TextAnnotationSpec.js +136 -136
  287. package/test/spec/features/modeling/behavior/CompensationAssociationBehavior.bpmn +26 -26
  288. package/test/spec/features/modeling/behavior/CompensationAssociationBehaviorSpec.js +43 -43
  289. package/test/spec/features/modeling/behavior/CreateBoundaryEventBehaviorSpec.js +58 -58
  290. package/test/spec/features/modeling/behavior/CreateParticipantBehaviorSpec.js +224 -224
  291. package/test/spec/features/modeling/behavior/DataInputAssociationBehavior.bpmn +33 -33
  292. package/test/spec/features/modeling/behavior/DataInputAssociationBehaviorSpec.js +146 -146
  293. package/test/spec/features/modeling/behavior/DataObjectBehavior.create-data-association.bpmn +21 -21
  294. package/test/spec/features/modeling/behavior/DataObjectBehavior.data-object-reference.bpmn +13 -13
  295. package/test/spec/features/modeling/behavior/DataObjectBehavior.remove-data-association.bpmn +41 -41
  296. package/test/spec/features/modeling/behavior/DataObjectBehaviorSpec.js +297 -297
  297. package/test/spec/features/modeling/behavior/DataStoreBehavior.bpmn +26 -26
  298. package/test/spec/features/modeling/behavior/DataStoreBehavior.connect.bpmn +57 -57
  299. package/test/spec/features/modeling/behavior/DataStoreBehaviorSpec.js +228 -228
  300. package/test/spec/features/modeling/behavior/DropOnFlowBehavior.bpmn +71 -67
  301. package/test/spec/features/modeling/behavior/DropOnFlowBehaviorSpec.js +591 -418
  302. package/test/spec/features/modeling/behavior/ImportDockingFix.bpmn +61 -61
  303. package/test/spec/features/modeling/behavior/ImportDockingFixSpec.js +37 -37
  304. package/test/spec/features/modeling/behavior/LabelBehaviorSpec.js +277 -277
  305. package/test/spec/features/modeling/behavior/ReconnectConnection.data-association.bpmn +41 -41
  306. package/test/spec/features/modeling/behavior/ReconnectConnectionSpec.js +120 -120
  307. package/test/spec/features/modeling/behavior/RemoveElementBehavior.bpmn +181 -181
  308. package/test/spec/features/modeling/behavior/RemoveElementBehavior.perpendicular.bpmn +159 -159
  309. package/test/spec/features/modeling/behavior/RemoveElementBehaviorSpec.js +251 -251
  310. package/test/spec/features/modeling/behavior/RemoveParticipantBehaviorSpec.js +125 -125
  311. package/test/spec/features/modeling/behavior/ReplaceConnectionBehavior.association.bpmn +26 -26
  312. package/test/spec/features/modeling/behavior/ReplaceConnectionBehavior.boundary-events.bpmn +40 -40
  313. package/test/spec/features/modeling/behavior/ReplaceConnectionBehavior.message-sequence-flow.bpmn +121 -121
  314. package/test/spec/features/modeling/behavior/ReplaceConnectionBehaviorSpec.js +439 -439
  315. package/test/spec/features/modeling/behavior/ReplaceElementBehaviourSpec.js +450 -450
  316. package/test/spec/features/modeling/behavior/ToggleElementCollapseBehaviourSpec.js +653 -653
  317. package/test/spec/features/modeling/behavior/UnsetDefaultFlowBehaviorSpec.bpmn +48 -48
  318. package/test/spec/features/modeling/behavior/UnsetDefaultFlowBehaviorSpec.js +77 -77
  319. package/test/spec/features/modeling/behavior/util/GeometricUtilSpec.js +127 -127
  320. package/test/spec/features/modeling/behavior/util/LabelLayoutUtilSpec.js +75 -75
  321. package/test/spec/features/modeling/behavior/util/LineAttachmentUtilSpec.js +294 -294
  322. package/test/spec/features/modeling/behavior/util/LineIntersectSpec.js +32 -32
  323. package/test/spec/features/modeling/lanes/AddLaneSpec.js +263 -263
  324. package/test/spec/features/modeling/lanes/DeleteLaneSpec.js +126 -126
  325. package/test/spec/features/modeling/lanes/ResizeLaneSpec.js +366 -366
  326. package/test/spec/features/modeling/lanes/SplitLaneSpec.js +216 -216
  327. package/test/spec/features/modeling/lanes/UpdateFlowNodeRefsSpec.js +271 -271
  328. package/test/spec/features/modeling/lanes/flowNodeRefs.bpmn +56 -56
  329. package/test/spec/features/modeling/lanes/lanes.bpmn +83 -83
  330. package/test/spec/features/modeling/lanes/participant-lane.bpmn +27 -27
  331. package/test/spec/features/modeling/lanes/participant-no-lane.bpmn +22 -22
  332. package/test/spec/features/modeling/layout/Helper.js +64 -64
  333. package/test/spec/features/modeling/layout/LayoutAssociationSpec.js +101 -101
  334. package/test/spec/features/modeling/layout/LayoutConnectionSpec.js +98 -98
  335. package/test/spec/features/modeling/layout/LayoutDataAssociationSpec.js +98 -98
  336. package/test/spec/features/modeling/layout/LayoutMessageFlowSpec.bpmn +119 -119
  337. package/test/spec/features/modeling/layout/LayoutMessageFlowSpec.js +313 -313
  338. package/test/spec/features/modeling/layout/LayoutSequenceFlowSpec.boundaryEvents.bpmn +65 -65
  339. package/test/spec/features/modeling/layout/LayoutSequenceFlowSpec.flowElements.bpmn +70 -70
  340. package/test/spec/features/modeling/layout/LayoutSequenceFlowSpec.js +323 -323
  341. package/test/spec/features/ordering/BpmnOrderingProviderSpec.js +231 -231
  342. package/test/spec/features/ordering/Helper.js +185 -185
  343. package/test/spec/features/ordering/ordering-start-event.bpmn +17 -17
  344. package/test/spec/features/ordering/ordering-subprocesses.bpmn +41 -41
  345. package/test/spec/features/ordering/ordering.bpmn +105 -105
  346. package/test/spec/features/palette/PaletteProviderSpec.js +33 -33
  347. package/test/spec/features/popup-menu/ReplaceMenuProvider.collapsedSubProcess.bpmn +13 -13
  348. package/test/spec/features/popup-menu/ReplaceMenuProvider.compensation-activity.bpmn +12 -12
  349. package/test/spec/features/popup-menu/ReplaceMenuProvider.conditionalFlows.bpmn +66 -66
  350. package/test/spec/features/popup-menu/ReplaceMenuProvider.defaultFlows.bpmn +126 -126
  351. package/test/spec/features/popup-menu/ReplaceMenuProvider.defaultFlowsFromComplexGateways.bpmn +48 -48
  352. package/test/spec/features/popup-menu/ReplaceMenuProvider.defaultFlowsFromInclusiveGateways.bpmn +48 -48
  353. package/test/spec/features/popup-menu/ReplaceMenuProviderSpec.js +1957 -1957
  354. package/test/spec/features/replace/BpmnReplace.collaboration.bpmn +70 -70
  355. package/test/spec/features/replace/BpmnReplace.compensation.bpmn +12 -12
  356. package/test/spec/features/replace/BpmnReplace.eventSubProcesses.bpmn +126 -126
  357. package/test/spec/features/replace/BpmnReplaceSpec.js +1302 -1302
  358. package/test/spec/features/replace/ReplaceRulesSpec.js +78 -78
  359. package/test/spec/features/replace/SubProcess-collapsed.bpmn +36 -36
  360. package/test/spec/features/replace-preview/BpmnReplacePreviewSpec.js +304 -304
  361. package/test/spec/features/rules/BpmnRules.boundaryEvent.bpmn +93 -93
  362. package/test/spec/features/rules/BpmnRules.collaboration-dataAssociation.bpmn +35 -35
  363. package/test/spec/features/rules/BpmnRules.collaboration-lanes.bpmn +79 -79
  364. package/test/spec/features/rules/BpmnRules.collaboration.bpmn +138 -138
  365. package/test/spec/features/rules/BpmnRules.compensation.bpmn +65 -65
  366. package/test/spec/features/rules/BpmnRules.dataAssociation.bpmn +33 -33
  367. package/test/spec/features/rules/BpmnRules.eventBasedGateway.bpmn +82 -82
  368. package/test/spec/features/rules/BpmnRules.messageFlow.bpmn +27 -27
  369. package/test/spec/features/rules/BpmnRules.multiSelectionPools.bpmn +37 -37
  370. package/test/spec/features/rules/BpmnRules.process.bpmn +91 -91
  371. package/test/spec/features/rules/BpmnRules.subProcess-dataAssociation.bpmn +44 -44
  372. package/test/spec/features/rules/BpmnRulesSpec.js +1468 -1424
  373. package/test/spec/features/rules/Helper.js +82 -82
  374. package/test/spec/features/search/BpmnSearchProviderSpec.js +158 -158
  375. package/test/spec/features/search/bpmn-search-collaboration.bpmn +106 -106
  376. package/test/spec/features/search/bpmn-search.bpmn +100 -100
  377. package/test/spec/features/snapping/BpmnSnapping.connect.bpmn +36 -36
  378. package/test/spec/features/snapping/BpmnSnapping.labels.bpmn +27 -27
  379. package/test/spec/features/snapping/BpmnSnapping.lanes-resize.bpmn +43 -43
  380. package/test/spec/features/snapping/BpmnSnapping.participant-resize.bpmn +50 -50
  381. package/test/spec/features/snapping/BpmnSnapping.sequenceFlow.bpmn +41 -0
  382. package/test/spec/features/snapping/BpmnSnapping.subProcess-resize.bpmn +21 -21
  383. package/test/spec/features/snapping/BpmnSnapping.textAnnotation-resize.bpmn +22 -22
  384. package/test/spec/features/snapping/BpmnSnappingSpec.js +824 -758
  385. package/test/spec/features/snapping/BpmnSnappingUtil.lanes-flowNodes.bpmn +82 -82
  386. package/test/spec/features/snapping/BpmnSnappingUtil.lanes.bpmn +35 -35
  387. package/test/spec/features/snapping/BpmnSnappingUtilSpec.js +285 -285
  388. package/test/spec/i18n/custom-translate/custom-translate.js +14 -14
  389. package/test/spec/i18n/custom-translate/index.js +2 -2
  390. package/test/spec/i18n/translateSpec.js +56 -56
  391. package/test/spec/import/ImporterSpec.js +428 -428
  392. package/test/spec/import/ModelWiringSpec.js +194 -194
  393. package/test/spec/import/elements/AssociationSpec.collaboration.bpmn +51 -51
  394. package/test/spec/import/elements/AssociationSpec.compensation.bpmn +28 -28
  395. package/test/spec/import/elements/AssociationSpec.data-association.bpmn +39 -39
  396. package/test/spec/import/elements/AssociationSpec.data-input-output.bpmn +40 -40
  397. package/test/spec/import/elements/AssociationSpec.events.bpmn +51 -51
  398. package/test/spec/import/elements/AssociationSpec.js +175 -175
  399. package/test/spec/import/elements/AssociationSpec.text-annotation.bpmn +37 -37
  400. package/test/spec/import/elements/CollapsedSpec.js +118 -118
  401. package/test/spec/import/elements/LabelSpec.js +85 -85
  402. package/test/spec/import/lane-flowNodes.bpmn +44 -44
  403. package/test/spec/import/lane-missing-flowNodeRef.bpmn +24 -24
  404. package/test/spec/util/ModelCloneHelperSpec.js +381 -381
  405. package/test/spec/util/ModelUtilSpec.js +65 -65
  406. package/test/spec/util/camunda-moddle.js +70 -70
  407. package/test/util/MockEvents.js +62 -62
  408. package/test/util/ModelingUtil.js +117 -117
  409. package/test/util/custom-rules/CustomRules.js +18 -18
  410. package/test/util/custom-rules/index.js +4 -4
@@ -1,428 +1,428 @@
1
- 'use strict';
2
-
3
- require('../../TestHelper');
4
-
5
-
6
- var TestContainer = require('mocha-test-container-support');
7
-
8
- var Diagram = require('diagram-js/lib/Diagram'),
9
- BpmnModdle = require('bpmn-moddle'),
10
- Importer = require('../../../lib/import/Importer'),
11
- Viewer = require('../../../lib/Viewer');
12
-
13
- var find = require('lodash/collection/find');
14
-
15
-
16
- describe('import - Importer', function() {
17
-
18
- function createDiagram(container, modules) {
19
- return new Diagram({
20
- canvas: { container: container },
21
- modules: modules
22
- });
23
- }
24
-
25
- var diagram;
26
-
27
- beforeEach(function() {
28
- diagram = createDiagram(TestContainer.get(this), Viewer.prototype._modules);
29
- });
30
-
31
-
32
- function runImport(diagram, xml, done) {
33
-
34
- var moddle = new BpmnModdle();
35
-
36
- moddle.fromXML(xml, function(err, definitions) {
37
- if (err) {
38
- return done(err);
39
- }
40
-
41
- Importer.importBpmnDiagram(diagram, definitions, done);
42
- });
43
- }
44
-
45
-
46
- describe('events', function() {
47
-
48
- it('should fire <import.render.start> and <import.render.complete>', function(done) {
49
-
50
- // given
51
- var xml = require('../../fixtures/bpmn/import/process.bpmn');
52
-
53
- var eventCount = 0;
54
-
55
- var eventBus = diagram.get('eventBus');
56
-
57
- // log events
58
- eventBus.on('import.render.start', function(event) {
59
- expect(event.definitions).to.exist;
60
-
61
- eventCount++;
62
- });
63
-
64
- eventBus.on('import.render.complete', function(event) {
65
- expect(event).to.have.property('error');
66
- expect(event).to.have.property('warnings');
67
-
68
- eventCount++;
69
- });
70
-
71
- // when
72
- runImport(diagram, xml, function(err, warnings) {
73
-
74
- // then
75
- expect(eventCount).to.equal(2);
76
-
77
- done(err);
78
- });
79
- });
80
-
81
-
82
- it('should fire <bpmnElement.added> during import', function(done) {
83
-
84
- // given
85
- var xml = require('../../fixtures/bpmn/import/process.bpmn');
86
-
87
- var eventCount = 0;
88
-
89
- // log events
90
- diagram.get('eventBus').on('bpmnElement.added', function(e) {
91
- eventCount++;
92
- });
93
-
94
- // when
95
- runImport(diagram, xml, function(err, warnings) {
96
-
97
- // then
98
- expect(eventCount).to.equal(9);
99
-
100
- done(err);
101
- });
102
- });
103
-
104
- });
105
-
106
-
107
- describe('basics', function() {
108
-
109
- it('should import process', function(done) {
110
-
111
- // given
112
- var xml = require('../../fixtures/bpmn/import/process.bpmn');
113
-
114
- var events = [];
115
-
116
- // log events
117
- diagram.get('eventBus').on('bpmnElement.added', function(e) {
118
- events.push({
119
- type: 'add',
120
- semantic: e.element.businessObject.id,
121
- di: e.element.businessObject.di.id,
122
- diagramElement: e.element && e.element.id
123
- });
124
- });
125
-
126
- // when
127
- runImport(diagram, xml, function(err, warnings) {
128
-
129
- // then
130
- expect(events).to.eql([
131
- { type: 'add', semantic: 'Process_1', di: 'BPMNPlane_1', diagramElement: 'Process_1' },
132
- { type: 'add', semantic: 'SubProcess_1', di: '_BPMNShape_SubProcess_2', diagramElement: 'SubProcess_1' },
133
- { type: 'add', semantic: 'StartEvent_1', di: '_BPMNShape_StartEvent_2', diagramElement: 'StartEvent_1' },
134
- { type: 'add', semantic: 'Task_1', di: '_BPMNShape_Task_2', diagramElement: 'Task_1' },
135
- { type: 'add', semantic: 'EndEvent_1', di: '_BPMNShape_EndEvent_2', diagramElement: 'EndEvent_1' },
136
- { type: 'add', semantic: 'StartEvent_2', di: '_BPMNShape_StartEvent_11', diagramElement: 'StartEvent_2' },
137
- { type: 'add', semantic: 'SequenceFlow_1', di: 'BPMNEdge_SequenceFlow_1', diagramElement: 'SequenceFlow_1' },
138
- { type: 'add', semantic: 'SequenceFlow_2', di: 'BPMNEdge_SequenceFlow_2', diagramElement: 'SequenceFlow_2' },
139
- { type: 'add', semantic: 'SequenceFlow_3', di: 'BPMNEdge_SequenceFlow_3', diagramElement: 'SequenceFlow_3' }
140
- ]);
141
-
142
- done(err);
143
- });
144
- });
145
-
146
-
147
- it('should import collaboration', function(done) {
148
-
149
- // given
150
- var xml = require('../../fixtures/bpmn/import/collaboration.bpmn');
151
-
152
- var events = [];
153
-
154
- // log events
155
- diagram.get('eventBus').on('bpmnElement.added', function(e) {
156
- events.push({
157
- type: 'add',
158
- semantic: e.element.businessObject.id,
159
- di: e.element.businessObject.di.id,
160
- diagramElement: e.element && e.element.id
161
- });
162
- });
163
-
164
- // when
165
- runImport(diagram, xml, function(err, warnings) {
166
-
167
- // then
168
- expect(events).to.eql([
169
- { type: 'add', semantic: '_Collaboration_2', di: 'BPMNPlane_1', diagramElement: '_Collaboration_2' },
170
- { type: 'add', semantic: 'Participant_2', di: '_BPMNShape_Participant_2', diagramElement: 'Participant_2' },
171
- { type: 'add', semantic: 'Lane_1', di: '_BPMNShape_Lane_2', diagramElement: 'Lane_1' },
172
- { type: 'add', semantic: 'Lane_2', di: '_BPMNShape_Lane_3', diagramElement: 'Lane_2' },
173
- { type: 'add', semantic: 'Lane_3', di: '_BPMNShape_Lane_4', diagramElement: 'Lane_3' },
174
- { type: 'add', semantic: 'Task_1', di: '_BPMNShape_Task_3', diagramElement: 'Task_1' },
175
- { type: 'add', semantic: 'Participant_1', di: '_BPMNShape_Participant_3', diagramElement: 'Participant_1' },
176
- { type: 'add', semantic: 'StartEvent_1', di: '_BPMNShape_StartEvent_3', diagramElement: 'StartEvent_1' }
177
- ]);
178
-
179
- done(err);
180
- });
181
-
182
- });
183
-
184
- });
185
-
186
-
187
- describe('position', function() {
188
-
189
- var xml = require('../../fixtures/bpmn/import/position/position-testcase.bpmn');
190
-
191
- it('should round shape\'s x and y coordinates', function(done) {
192
-
193
- // given
194
- var events = {};
195
-
196
- // log events
197
- diagram.get('eventBus').on('bpmnElement.added', function(e) {
198
-
199
- events[e.element.id] = e.element;
200
- });
201
-
202
- runImport(diagram, xml, function(err, warnings) {
203
-
204
- //round up
205
- expect(events.ID_End.x).to.equal(Math.round(340.6));
206
- expect(events.ID_End.y).to.equal(Math.round(136.6));
207
-
208
- //round down
209
- expect(events.ID_Start.x).to.equal(Math.round(120.4));
210
- expect(events.ID_Start.y).to.equal(Math.round(135.4));
211
-
212
- done(err);
213
- });
214
- });
215
-
216
-
217
- it('should round shape\'s height and width', function(done) {
218
-
219
- // given
220
- var events = {};
221
-
222
- // log events
223
- diagram.get('eventBus').on('bpmnElement.added', function(e) {
224
-
225
- events[e.element.id] = e.element;
226
- });
227
-
228
- runImport(diagram, xml, function(err, warnings) {
229
-
230
- //round down
231
- expect(events.ID_Start.height).to.equal(Math.round(30.4));
232
- expect(events.ID_Start.width).to.equal(Math.round(30.4));
233
-
234
- done(err);
235
- });
236
- });
237
-
238
- });
239
-
240
-
241
- describe('elements', function() {
242
-
243
- it('should import boundary events', function(done) {
244
-
245
- // given
246
- var xml = require('../../fixtures/bpmn/import/boundaryEvent.bpmn');
247
-
248
- var events = [];
249
-
250
- // log events
251
- diagram.get('eventBus').on('bpmnElement.added', function(e) {
252
- events.push({
253
- type: 'add',
254
- semantic: e.element.businessObject.id,
255
- di: e.element.businessObject.di.id,
256
- diagramElement: e.element && e.element.id
257
- });
258
- });
259
-
260
- // when
261
- runImport(diagram, xml, function(err, warnings) {
262
-
263
- // then
264
- expect(events).to.eql([
265
- { type: 'add', semantic: 'Process_1', di: 'BPMNPlane_1', diagramElement: 'Process_1' },
266
- { type: 'add', semantic: 'Task_1', di: '_BPMNShape_Task_2', diagramElement: 'Task_1' },
267
- { type: 'add', semantic: 'Task_2', di: '_BPMNShape_Task_3', diagramElement: 'Task_2' },
268
- { type: 'add', semantic: 'BoundaryEvent_1', di: '_BPMNShape_BoundaryEvent_2', diagramElement: 'BoundaryEvent_1' },
269
- { type: 'add', semantic: 'SequenceFlow_1', di: 'BPMNEdge_SequenceFlow_1', diagramElement: 'SequenceFlow_1' }
270
- ]);
271
-
272
- done(err);
273
- });
274
- });
275
-
276
- });
277
-
278
-
279
- describe('forgiveness', function() {
280
-
281
- it('should import invalid flowElement', function(done) {
282
-
283
- // given
284
- var xml = require('../../fixtures/bpmn/import/error/invalid-flow-element.bpmn');
285
-
286
- // when
287
- runImport(diagram, xml, function(err, warnings) {
288
-
289
- expect(warnings.length).to.equal(0);
290
-
291
- done(err);
292
- });
293
- });
294
-
295
-
296
- it('should import multiple DIs', function(done) {
297
-
298
- // given
299
- var xml = require('../../fixtures/bpmn/import/error/multiple-dis.bpmn');
300
-
301
- // when
302
- runImport(diagram, xml, function(err, warnings) {
303
-
304
- var expectedMessage =
305
- 'multiple DI elements defined for <bpmn:InclusiveGateway id="InclusiveGateway_1" />';
306
-
307
- expect(warnings.length).to.equal(1);
308
- expect(warnings[0].message).to.equal(expectedMessage);
309
-
310
- done(err);
311
- });
312
- });
313
-
314
-
315
- it('should extend attributes with default value', function(done) {
316
-
317
- // given
318
- var xml = require('../../fixtures/bpmn/import/default-attrs.bpmn');
319
-
320
- // when
321
- runImport(diagram, xml, function(err, warnings) {
322
-
323
- var elementRegistry = diagram.get('elementRegistry');
324
-
325
- var element = elementRegistry.get('GATEWAY_1');
326
-
327
- expect(element.businessObject.eventGatewayType).to.equal('Exclusive');
328
-
329
- done();
330
- });
331
- });
332
-
333
-
334
- describe('boundary events', function() {
335
-
336
- it('should handle missing attachToRef', function(done) {
337
-
338
- // given
339
- var xml = require('../../fixtures/bpmn/import/error/boundaryEvent-missingAttachToRef.bpmn');
340
-
341
- // when
342
- runImport(diagram, xml, function(err, warnings) {
343
-
344
- // then
345
- expect(warnings.length).to.eql(2);
346
-
347
- expect(warnings[0].message).to.eql('missing <bpmn:BoundaryEvent id="BoundaryEvent_1" />#attachedToRef');
348
- expect(warnings[1].message).to.eql('element <bpmn:BoundaryEvent id="BoundaryEvent_1" /> referenced by <bpmn:SequenceFlow id="SequenceFlow_1" />#sourceRef not yet drawn');
349
-
350
- done(err);
351
- });
352
- });
353
-
354
-
355
- it('should handle invalid attachToRef', function(done) {
356
-
357
- // given
358
- var xml = require('../../fixtures/bpmn/import/error/boundaryEvent-invalidAttachToRef.bpmn');
359
-
360
- // when
361
- runImport(diagram, xml, function(err, warnings) {
362
-
363
- // then
364
- expect(warnings.length).to.eql(2);
365
-
366
- expect(warnings[0].message).to.eql('missing <bpmn:BoundaryEvent id="BoundaryEvent_1" />#attachedToRef');
367
- expect(warnings[1].message).to.eql('element <bpmn:BoundaryEvent id="BoundaryEvent_1" /> referenced by <bpmn:SequenceFlow id="SequenceFlow_1" />#sourceRef not yet drawn');
368
-
369
- done(err);
370
- });
371
- });
372
-
373
- });
374
-
375
- });
376
-
377
-
378
- describe('integration', function() {
379
-
380
- it('should import dangling process message flows', function(done) {
381
-
382
- // given
383
- var xml = require('../../fixtures/bpmn/import/error/dangling-process-message-flow.bpmn');
384
-
385
- // when
386
- runImport(diagram, xml, function(err, warnings) {
387
-
388
- // then
389
- expect(warnings.length).to.equal(0);
390
-
391
- expect(diagram.get('elementRegistry').get('_b467921a-ef7b-44c5-bf78-fd624c400d17')).to.exist;
392
- expect(diagram.get('elementRegistry').get('_c311cc87-677e-47a4-bdb1-8744c4ec3147')).to.exist;
393
-
394
- done(err);
395
- });
396
- });
397
-
398
- });
399
-
400
-
401
- describe('hiding', function() {
402
-
403
- it('should hide shapes and connections inside of collapsed subprocess', function(done) {
404
-
405
- // given
406
- var xml = require('../../fixtures/bpmn/import/collapsed/processWithChildren.bpmn');
407
-
408
- // when
409
- runImport(diagram, xml, function(err, warnings) {
410
-
411
- var elementRegistry = diagram.get('elementRegistry');
412
-
413
- var children = elementRegistry.get('SubProcess_1').children;
414
- var visible = find(children, function(child) {
415
- return !child.hidden;
416
- });
417
-
418
- // then
419
- expect(visible).to.be.undefined;
420
-
421
- done(err);
422
- });
423
-
424
- });
425
-
426
- });
427
-
428
- });
1
+ 'use strict';
2
+
3
+ require('../../TestHelper');
4
+
5
+
6
+ var TestContainer = require('mocha-test-container-support');
7
+
8
+ var Diagram = require('diagram-js/lib/Diagram'),
9
+ BpmnModdle = require('bpmn-moddle'),
10
+ Importer = require('../../../lib/import/Importer'),
11
+ Viewer = require('../../../lib/Viewer');
12
+
13
+ var find = require('lodash/collection/find');
14
+
15
+
16
+ describe('import - Importer', function() {
17
+
18
+ function createDiagram(container, modules) {
19
+ return new Diagram({
20
+ canvas: { container: container },
21
+ modules: modules
22
+ });
23
+ }
24
+
25
+ var diagram;
26
+
27
+ beforeEach(function() {
28
+ diagram = createDiagram(TestContainer.get(this), Viewer.prototype._modules);
29
+ });
30
+
31
+
32
+ function runImport(diagram, xml, done) {
33
+
34
+ var moddle = new BpmnModdle();
35
+
36
+ moddle.fromXML(xml, function(err, definitions) {
37
+ if (err) {
38
+ return done(err);
39
+ }
40
+
41
+ Importer.importBpmnDiagram(diagram, definitions, done);
42
+ });
43
+ }
44
+
45
+
46
+ describe('events', function() {
47
+
48
+ it('should fire <import.render.start> and <import.render.complete>', function(done) {
49
+
50
+ // given
51
+ var xml = require('../../fixtures/bpmn/import/process.bpmn');
52
+
53
+ var eventCount = 0;
54
+
55
+ var eventBus = diagram.get('eventBus');
56
+
57
+ // log events
58
+ eventBus.on('import.render.start', function(event) {
59
+ expect(event.definitions).to.exist;
60
+
61
+ eventCount++;
62
+ });
63
+
64
+ eventBus.on('import.render.complete', function(event) {
65
+ expect(event).to.have.property('error');
66
+ expect(event).to.have.property('warnings');
67
+
68
+ eventCount++;
69
+ });
70
+
71
+ // when
72
+ runImport(diagram, xml, function(err, warnings) {
73
+
74
+ // then
75
+ expect(eventCount).to.equal(2);
76
+
77
+ done(err);
78
+ });
79
+ });
80
+
81
+
82
+ it('should fire <bpmnElement.added> during import', function(done) {
83
+
84
+ // given
85
+ var xml = require('../../fixtures/bpmn/import/process.bpmn');
86
+
87
+ var eventCount = 0;
88
+
89
+ // log events
90
+ diagram.get('eventBus').on('bpmnElement.added', function(e) {
91
+ eventCount++;
92
+ });
93
+
94
+ // when
95
+ runImport(diagram, xml, function(err, warnings) {
96
+
97
+ // then
98
+ expect(eventCount).to.equal(9);
99
+
100
+ done(err);
101
+ });
102
+ });
103
+
104
+ });
105
+
106
+
107
+ describe('basics', function() {
108
+
109
+ it('should import process', function(done) {
110
+
111
+ // given
112
+ var xml = require('../../fixtures/bpmn/import/process.bpmn');
113
+
114
+ var events = [];
115
+
116
+ // log events
117
+ diagram.get('eventBus').on('bpmnElement.added', function(e) {
118
+ events.push({
119
+ type: 'add',
120
+ semantic: e.element.businessObject.id,
121
+ di: e.element.businessObject.di.id,
122
+ diagramElement: e.element && e.element.id
123
+ });
124
+ });
125
+
126
+ // when
127
+ runImport(diagram, xml, function(err, warnings) {
128
+
129
+ // then
130
+ expect(events).to.eql([
131
+ { type: 'add', semantic: 'Process_1', di: 'BPMNPlane_1', diagramElement: 'Process_1' },
132
+ { type: 'add', semantic: 'SubProcess_1', di: '_BPMNShape_SubProcess_2', diagramElement: 'SubProcess_1' },
133
+ { type: 'add', semantic: 'StartEvent_1', di: '_BPMNShape_StartEvent_2', diagramElement: 'StartEvent_1' },
134
+ { type: 'add', semantic: 'Task_1', di: '_BPMNShape_Task_2', diagramElement: 'Task_1' },
135
+ { type: 'add', semantic: 'EndEvent_1', di: '_BPMNShape_EndEvent_2', diagramElement: 'EndEvent_1' },
136
+ { type: 'add', semantic: 'StartEvent_2', di: '_BPMNShape_StartEvent_11', diagramElement: 'StartEvent_2' },
137
+ { type: 'add', semantic: 'SequenceFlow_1', di: 'BPMNEdge_SequenceFlow_1', diagramElement: 'SequenceFlow_1' },
138
+ { type: 'add', semantic: 'SequenceFlow_2', di: 'BPMNEdge_SequenceFlow_2', diagramElement: 'SequenceFlow_2' },
139
+ { type: 'add', semantic: 'SequenceFlow_3', di: 'BPMNEdge_SequenceFlow_3', diagramElement: 'SequenceFlow_3' }
140
+ ]);
141
+
142
+ done(err);
143
+ });
144
+ });
145
+
146
+
147
+ it('should import collaboration', function(done) {
148
+
149
+ // given
150
+ var xml = require('../../fixtures/bpmn/import/collaboration.bpmn');
151
+
152
+ var events = [];
153
+
154
+ // log events
155
+ diagram.get('eventBus').on('bpmnElement.added', function(e) {
156
+ events.push({
157
+ type: 'add',
158
+ semantic: e.element.businessObject.id,
159
+ di: e.element.businessObject.di.id,
160
+ diagramElement: e.element && e.element.id
161
+ });
162
+ });
163
+
164
+ // when
165
+ runImport(diagram, xml, function(err, warnings) {
166
+
167
+ // then
168
+ expect(events).to.eql([
169
+ { type: 'add', semantic: '_Collaboration_2', di: 'BPMNPlane_1', diagramElement: '_Collaboration_2' },
170
+ { type: 'add', semantic: 'Participant_2', di: '_BPMNShape_Participant_2', diagramElement: 'Participant_2' },
171
+ { type: 'add', semantic: 'Lane_1', di: '_BPMNShape_Lane_2', diagramElement: 'Lane_1' },
172
+ { type: 'add', semantic: 'Lane_2', di: '_BPMNShape_Lane_3', diagramElement: 'Lane_2' },
173
+ { type: 'add', semantic: 'Lane_3', di: '_BPMNShape_Lane_4', diagramElement: 'Lane_3' },
174
+ { type: 'add', semantic: 'Task_1', di: '_BPMNShape_Task_3', diagramElement: 'Task_1' },
175
+ { type: 'add', semantic: 'Participant_1', di: '_BPMNShape_Participant_3', diagramElement: 'Participant_1' },
176
+ { type: 'add', semantic: 'StartEvent_1', di: '_BPMNShape_StartEvent_3', diagramElement: 'StartEvent_1' }
177
+ ]);
178
+
179
+ done(err);
180
+ });
181
+
182
+ });
183
+
184
+ });
185
+
186
+
187
+ describe('position', function() {
188
+
189
+ var xml = require('../../fixtures/bpmn/import/position/position-testcase.bpmn');
190
+
191
+ it('should round shape\'s x and y coordinates', function(done) {
192
+
193
+ // given
194
+ var events = {};
195
+
196
+ // log events
197
+ diagram.get('eventBus').on('bpmnElement.added', function(e) {
198
+
199
+ events[e.element.id] = e.element;
200
+ });
201
+
202
+ runImport(diagram, xml, function(err, warnings) {
203
+
204
+ //round up
205
+ expect(events.ID_End.x).to.equal(Math.round(340.6));
206
+ expect(events.ID_End.y).to.equal(Math.round(136.6));
207
+
208
+ //round down
209
+ expect(events.ID_Start.x).to.equal(Math.round(120.4));
210
+ expect(events.ID_Start.y).to.equal(Math.round(135.4));
211
+
212
+ done(err);
213
+ });
214
+ });
215
+
216
+
217
+ it('should round shape\'s height and width', function(done) {
218
+
219
+ // given
220
+ var events = {};
221
+
222
+ // log events
223
+ diagram.get('eventBus').on('bpmnElement.added', function(e) {
224
+
225
+ events[e.element.id] = e.element;
226
+ });
227
+
228
+ runImport(diagram, xml, function(err, warnings) {
229
+
230
+ //round down
231
+ expect(events.ID_Start.height).to.equal(Math.round(30.4));
232
+ expect(events.ID_Start.width).to.equal(Math.round(30.4));
233
+
234
+ done(err);
235
+ });
236
+ });
237
+
238
+ });
239
+
240
+
241
+ describe('elements', function() {
242
+
243
+ it('should import boundary events', function(done) {
244
+
245
+ // given
246
+ var xml = require('../../fixtures/bpmn/import/boundaryEvent.bpmn');
247
+
248
+ var events = [];
249
+
250
+ // log events
251
+ diagram.get('eventBus').on('bpmnElement.added', function(e) {
252
+ events.push({
253
+ type: 'add',
254
+ semantic: e.element.businessObject.id,
255
+ di: e.element.businessObject.di.id,
256
+ diagramElement: e.element && e.element.id
257
+ });
258
+ });
259
+
260
+ // when
261
+ runImport(diagram, xml, function(err, warnings) {
262
+
263
+ // then
264
+ expect(events).to.eql([
265
+ { type: 'add', semantic: 'Process_1', di: 'BPMNPlane_1', diagramElement: 'Process_1' },
266
+ { type: 'add', semantic: 'Task_1', di: '_BPMNShape_Task_2', diagramElement: 'Task_1' },
267
+ { type: 'add', semantic: 'Task_2', di: '_BPMNShape_Task_3', diagramElement: 'Task_2' },
268
+ { type: 'add', semantic: 'BoundaryEvent_1', di: '_BPMNShape_BoundaryEvent_2', diagramElement: 'BoundaryEvent_1' },
269
+ { type: 'add', semantic: 'SequenceFlow_1', di: 'BPMNEdge_SequenceFlow_1', diagramElement: 'SequenceFlow_1' }
270
+ ]);
271
+
272
+ done(err);
273
+ });
274
+ });
275
+
276
+ });
277
+
278
+
279
+ describe('forgiveness', function() {
280
+
281
+ it('should import invalid flowElement', function(done) {
282
+
283
+ // given
284
+ var xml = require('../../fixtures/bpmn/import/error/invalid-flow-element.bpmn');
285
+
286
+ // when
287
+ runImport(diagram, xml, function(err, warnings) {
288
+
289
+ expect(warnings.length).to.equal(0);
290
+
291
+ done(err);
292
+ });
293
+ });
294
+
295
+
296
+ it('should import multiple DIs', function(done) {
297
+
298
+ // given
299
+ var xml = require('../../fixtures/bpmn/import/error/multiple-dis.bpmn');
300
+
301
+ // when
302
+ runImport(diagram, xml, function(err, warnings) {
303
+
304
+ var expectedMessage =
305
+ 'multiple DI elements defined for <bpmn:InclusiveGateway id="InclusiveGateway_1" />';
306
+
307
+ expect(warnings.length).to.equal(1);
308
+ expect(warnings[0].message).to.equal(expectedMessage);
309
+
310
+ done(err);
311
+ });
312
+ });
313
+
314
+
315
+ it('should extend attributes with default value', function(done) {
316
+
317
+ // given
318
+ var xml = require('../../fixtures/bpmn/import/default-attrs.bpmn');
319
+
320
+ // when
321
+ runImport(diagram, xml, function(err, warnings) {
322
+
323
+ var elementRegistry = diagram.get('elementRegistry');
324
+
325
+ var element = elementRegistry.get('GATEWAY_1');
326
+
327
+ expect(element.businessObject.eventGatewayType).to.equal('Exclusive');
328
+
329
+ done();
330
+ });
331
+ });
332
+
333
+
334
+ describe('boundary events', function() {
335
+
336
+ it('should handle missing attachToRef', function(done) {
337
+
338
+ // given
339
+ var xml = require('../../fixtures/bpmn/import/error/boundaryEvent-missingAttachToRef.bpmn');
340
+
341
+ // when
342
+ runImport(diagram, xml, function(err, warnings) {
343
+
344
+ // then
345
+ expect(warnings.length).to.eql(2);
346
+
347
+ expect(warnings[0].message).to.eql('missing <bpmn:BoundaryEvent id="BoundaryEvent_1" />#attachedToRef');
348
+ expect(warnings[1].message).to.eql('element <bpmn:BoundaryEvent id="BoundaryEvent_1" /> referenced by <bpmn:SequenceFlow id="SequenceFlow_1" />#sourceRef not yet drawn');
349
+
350
+ done(err);
351
+ });
352
+ });
353
+
354
+
355
+ it('should handle invalid attachToRef', function(done) {
356
+
357
+ // given
358
+ var xml = require('../../fixtures/bpmn/import/error/boundaryEvent-invalidAttachToRef.bpmn');
359
+
360
+ // when
361
+ runImport(diagram, xml, function(err, warnings) {
362
+
363
+ // then
364
+ expect(warnings.length).to.eql(2);
365
+
366
+ expect(warnings[0].message).to.eql('missing <bpmn:BoundaryEvent id="BoundaryEvent_1" />#attachedToRef');
367
+ expect(warnings[1].message).to.eql('element <bpmn:BoundaryEvent id="BoundaryEvent_1" /> referenced by <bpmn:SequenceFlow id="SequenceFlow_1" />#sourceRef not yet drawn');
368
+
369
+ done(err);
370
+ });
371
+ });
372
+
373
+ });
374
+
375
+ });
376
+
377
+
378
+ describe('integration', function() {
379
+
380
+ it('should import dangling process message flows', function(done) {
381
+
382
+ // given
383
+ var xml = require('../../fixtures/bpmn/import/error/dangling-process-message-flow.bpmn');
384
+
385
+ // when
386
+ runImport(diagram, xml, function(err, warnings) {
387
+
388
+ // then
389
+ expect(warnings.length).to.equal(0);
390
+
391
+ expect(diagram.get('elementRegistry').get('_b467921a-ef7b-44c5-bf78-fd624c400d17')).to.exist;
392
+ expect(diagram.get('elementRegistry').get('_c311cc87-677e-47a4-bdb1-8744c4ec3147')).to.exist;
393
+
394
+ done(err);
395
+ });
396
+ });
397
+
398
+ });
399
+
400
+
401
+ describe('hiding', function() {
402
+
403
+ it('should hide shapes and connections inside of collapsed subprocess', function(done) {
404
+
405
+ // given
406
+ var xml = require('../../fixtures/bpmn/import/collapsed/processWithChildren.bpmn');
407
+
408
+ // when
409
+ runImport(diagram, xml, function(err, warnings) {
410
+
411
+ var elementRegistry = diagram.get('elementRegistry');
412
+
413
+ var children = elementRegistry.get('SubProcess_1').children;
414
+ var visible = find(children, function(child) {
415
+ return !child.hidden;
416
+ });
417
+
418
+ // then
419
+ expect(visible).to.be.undefined;
420
+
421
+ done(err);
422
+ });
423
+
424
+ });
425
+
426
+ });
427
+
428
+ });