diff --git a/test/spec/features/modeling/behavior/AdaptiveLabelPositioningBehavior.bpmn b/test/spec/features/modeling/behavior/AdaptiveLabelPositioningBehavior.basics.bpmn similarity index 100% rename from test/spec/features/modeling/behavior/AdaptiveLabelPositioningBehavior.bpmn rename to test/spec/features/modeling/behavior/AdaptiveLabelPositioningBehavior.basics.bpmn diff --git a/test/spec/features/modeling/behavior/AdaptiveLabelPositioningBehaviorSpec.js b/test/spec/features/modeling/behavior/AdaptiveLabelPositioningBehaviorSpec.js index 14e5d49d..259226cf 100644 --- a/test/spec/features/modeling/behavior/AdaptiveLabelPositioningBehaviorSpec.js +++ b/test/spec/features/modeling/behavior/AdaptiveLabelPositioningBehaviorSpec.js @@ -10,19 +10,14 @@ import { import modelingModule from 'lib/features/modeling'; import coreModule from 'lib/core'; +var testModules = [ + modelingModule, + coreModule +]; + describe('modeling/behavior - AdaptiveLabelPositioningBehavior', function() { - var diagramXML = require('./AdaptiveLabelPositioningBehavior.bpmn'); - - beforeEach(bootstrapModeler(diagramXML, { - modules: [ - modelingModule, - coreModule - ] - })); - - function expectLabelOrientation(element, expectedOrientation) { var label = element.label; @@ -38,243 +33,255 @@ describe('modeling/behavior - AdaptiveLabelPositioningBehavior', function() { } - describe('on connect', function() { + describe('basics', function() { - it('should move label from LEFT to TOP', inject(function(elementRegistry, modeling) { + var diagramXML = require('./AdaptiveLabelPositioningBehavior.basics.bpmn'); - // given - var source = elementRegistry.get('LabelBottom'), - target = elementRegistry.get('LabelLeft'); - - // when - modeling.connect(source, target); - - // then - expectLabelOrientation(source, 'bottom'); - expectLabelOrientation(target, 'top'); + beforeEach(bootstrapModeler(diagramXML, { + modules: testModules })); - it('should move label from BOTTOM to TOP', inject(function(elementRegistry, modeling) { + describe('on connect', function() { - // given - var source = elementRegistry.get('LabelBottom'), - target = elementRegistry.get('LabelRight'); + it('should move label from LEFT to TOP', inject(function(elementRegistry, modeling) { - // when - modeling.connect(source, target); + // given + var source = elementRegistry.get('LabelBottom'), + target = elementRegistry.get('LabelLeft'); - // then - expectLabelOrientation(source, 'top'); - expectLabelOrientation(target, 'right'); - })); + // when + modeling.connect(source, target); + + // then + expectLabelOrientation(source, 'bottom'); + expectLabelOrientation(target, 'top'); + })); - it('should move label from RIGHT to TOP', inject(function(elementRegistry, modeling) { + it('should move label from BOTTOM to TOP', inject(function(elementRegistry, modeling) { - // given - var source = elementRegistry.get('LabelRight'), - target = elementRegistry.get('LabelTop'); + // given + var source = elementRegistry.get('LabelBottom'), + target = elementRegistry.get('LabelRight'); - // when - modeling.connect(source, target); + // when + modeling.connect(source, target); - // then - expectLabelOrientation(source, 'top'); - expectLabelOrientation(target, 'top'); - })); + // then + expectLabelOrientation(source, 'top'); + expectLabelOrientation(target, 'right'); + })); - it('should move label from TOP to LEFT', inject(function(elementRegistry, modeling) { + it('should move label from RIGHT to TOP', inject(function(elementRegistry, modeling) { - // given - var source = elementRegistry.get('LabelTop'), - target = elementRegistry.get('LabelLeft'); + // given + var source = elementRegistry.get('LabelRight'), + target = elementRegistry.get('LabelTop'); - // when - modeling.connect(source, target); + // when + modeling.connect(source, target); - // then - expectLabelOrientation(source, 'left'); - expectLabelOrientation(target, 'left'); - })); + // then + expectLabelOrientation(source, 'top'); + expectLabelOrientation(target, 'top'); + })); - it('should move label from TOP to LEFT', inject(function(elementRegistry, modeling) { + it('should move label from TOP to LEFT', inject(function(elementRegistry, modeling) { - // given - var source = elementRegistry.get('LabelTop'), - target = elementRegistry.get('LabelLeft'); + // given + var source = elementRegistry.get('LabelTop'), + target = elementRegistry.get('LabelLeft'); - // when - modeling.connect(source, target); + // when + modeling.connect(source, target); - // then - expectLabelOrientation(source, 'left'); - expectLabelOrientation(target, 'left'); - })); + // then + expectLabelOrientation(source, 'left'); + expectLabelOrientation(target, 'left'); + })); - it('should move label from TOP to LEFT (inverse)', inject(function(elementRegistry, modeling) { + it('should move label from TOP to LEFT', inject(function(elementRegistry, modeling) { - // given - var source = elementRegistry.get('LabelLeft'), - target = elementRegistry.get('LabelTop'); + // given + var source = elementRegistry.get('LabelTop'), + target = elementRegistry.get('LabelLeft'); - // when - modeling.connect(source, target); + // when + modeling.connect(source, target); - // then - expectLabelOrientation(target, 'left'); - expectLabelOrientation(source, 'left'); - })); + // then + expectLabelOrientation(source, 'left'); + expectLabelOrientation(target, 'left'); + })); - it('should keep unaligned labels AS IS', inject(function(elementRegistry, modeling) { + it('should move label from TOP to LEFT (inverse)', inject(function(elementRegistry, modeling) { - // given - var source = elementRegistry.get('LabelBottomLeft'), - target = elementRegistry.get('LabelTop'); + // given + var source = elementRegistry.get('LabelLeft'), + target = elementRegistry.get('LabelTop'); - // when - modeling.connect(source, target); + // when + modeling.connect(source, target); - // then - expectLabelOrientation(source, 'bottom'); - expectLabelOrientation(target, 'top'); - })); + // then + expectLabelOrientation(target, 'left'); + expectLabelOrientation(source, 'left'); + })); - it('should keep label where it is, if no options', inject(function(elementRegistry, modeling) { + it('should keep unaligned labels AS IS', inject(function(elementRegistry, modeling) { - // given - var source = elementRegistry.get('LabelImpossible'), - target = elementRegistry.get('Task'); + // given + var source = elementRegistry.get('LabelBottomLeft'), + target = elementRegistry.get('LabelTop'); - // when - modeling.connect(source, target); + // when + modeling.connect(source, target); - // then - expectLabelOrientation(source, 'right'); - })); - - }); + // then + expectLabelOrientation(source, 'bottom'); + expectLabelOrientation(target, 'top'); + })); - describe('on reconnect', function() { + it('should keep label where it is, if no options', inject(function(elementRegistry, modeling) { - it('should move label from TOP to BOTTOM', inject(function(elementRegistry, modeling) { + // given + var source = elementRegistry.get('LabelImpossible'), + target = elementRegistry.get('Task'); - // given - var connection = elementRegistry.get('SequenceFlow_1'), - source = elementRegistry.get('LabelTop'), - target = elementRegistry.get('LabelLeft'); + // when + modeling.connect(source, target); - // when - modeling.reconnectEnd(connection, target, { x: target.x + target.width / 2, y: target.y }); + // then + expectLabelOrientation(source, 'right'); + })); - // then - expectLabelOrientation(source, 'bottom'); - expectLabelOrientation(target, 'left'); - })); - - }); + }); - describe('on target move / layout', function() { + describe('on reconnect', function() { - it('should move label from TOP to BOTTOM', inject(function(elementRegistry, modeling) { + it('should move label from TOP to BOTTOM', inject(function(elementRegistry, modeling) { - // given - var source = elementRegistry.get('LabelTop'), - target = elementRegistry.get('LabelBottom_3'); + // given + var connection = elementRegistry.get('SequenceFlow_1'), + source = elementRegistry.get('LabelTop'), + target = elementRegistry.get('LabelLeft'); - // when - modeling.moveElements([ source ], { x: 0, y: 300 }); + // when + modeling.reconnectEnd(connection, target, { x: target.x + target.width / 2, y: target.y }); - // then - expectLabelOrientation(source, 'bottom'); - expectLabelOrientation(target, 'top'); - })); + // then + expectLabelOrientation(source, 'bottom'); + expectLabelOrientation(target, 'left'); + })); - }); + }); - describe('on source move / layout', function() { + describe('on target move / layout', function() { - it('should move label from BOTTOM to TOP', inject( - function(elementRegistry, modeling) { + it('should move label from TOP to BOTTOM', inject(function(elementRegistry, modeling) { // given var source = elementRegistry.get('LabelTop'), target = elementRegistry.get('LabelBottom_3'); // when - modeling.moveElements([ target ], { x: 20, y: -300 }); + modeling.moveElements([ source ], { x: 0, y: 300 }); // then expectLabelOrientation(source, 'bottom'); expectLabelOrientation(target, 'top'); - } - )); + })); - }); + }); - describe('on waypoints update', function() { + describe('on source move / layout', function() { - it('should move label from RIGHT to TOP', inject(function(elementRegistry, modeling) { + it('should move label from BOTTOM to TOP', inject( + function(elementRegistry, modeling) { - // given - var connection = elementRegistry.get('SequenceFlow_2'), - source = elementRegistry.get('LabelRight'), - target = elementRegistry.get('LabelBottom'); + // given + var source = elementRegistry.get('LabelTop'), + target = elementRegistry.get('LabelBottom_3'); - // when - modeling.updateWaypoints(connection, [ - { - original: { x: 131, y: 248 }, - x: 131, - y: 248 - }, - { - x: 250, - y: 248 - }, - { - x: 250, - y: 394 - }, - { - original: { x: 131, y: 394 }, - x: 131, - y: 394 - }, - ]); + // when + modeling.moveElements([ target ], { x: 20, y: -300 }); - // then - expectLabelOrientation(source, 'top'); - expectLabelOrientation(target, 'bottom'); - })); + // then + expectLabelOrientation(source, 'bottom'); + expectLabelOrientation(target, 'top'); + } + )); - }); + }); - describe('on label creation', function() { + describe('on waypoints update', function() { - it('should create label at TOP', inject( - function(elementRegistry, modeling) { + it('should move label from RIGHT to TOP', inject(function(elementRegistry, modeling) { // given - var element = elementRegistry.get('NoLabel'); + var connection = elementRegistry.get('SequenceFlow_2'), + source = elementRegistry.get('LabelRight'), + target = elementRegistry.get('LabelBottom'); // when - modeling.updateProperties(element, { name: 'FOO BAR' }); + modeling.updateWaypoints(connection, [ + { + original: { x: 131, y: 248 }, + x: 131, + y: 248 + }, + { + x: 250, + y: 248 + }, + { + x: 250, + y: 394 + }, + { + original: { x: 131, y: 394 }, + x: 131, + y: 394 + }, + ]); // then - expectLabelOrientation(element, 'top'); - } - )); + expectLabelOrientation(source, 'top'); + expectLabelOrientation(target, 'bottom'); + })); + + }); + + + describe('on label creation', function() { + + it('should create label at TOP', inject( + function(elementRegistry, modeling) { + + // given + var element = elementRegistry.get('NoLabel'); + + // when + modeling.updateProperties(element, { name: 'FOO BAR' }); + + // then + expectLabelOrientation(element, 'top'); + } + )); + + }); + }); });