From c490d4539b8a7387b823957ed1204910bed68437 Mon Sep 17 00:00:00 2001 From: Nico Rehwaldt Date: Thu, 31 Jul 2014 15:46:55 +0200 Subject: [PATCH] test(modeling): ensure connection is layouted during shape move --- .../features/modeling/MoveShapeSpec.js | 104 ++++++++++++++---- 1 file changed, 84 insertions(+), 20 deletions(-) diff --git a/test/spec/browser/features/modeling/MoveShapeSpec.js b/test/spec/browser/features/modeling/MoveShapeSpec.js index c9b7ac75..3ca71d77 100644 --- a/test/spec/browser/features/modeling/MoveShapeSpec.js +++ b/test/spec/browser/features/modeling/MoveShapeSpec.js @@ -30,36 +30,49 @@ describe('features/modeling - move shape', function() { it('should execute', inject(function(elementRegistry, modeling) { // given - var startEventShape = elementRegistry.getById('StartEvent_1'), - startEvent = startEventShape.businessObject; + var startEventElement = elementRegistry.getById('StartEvent_1'), + startEvent = startEventElement.businessObject; + + var sequenceFlowElement = elementRegistry.getById('SequenceFlow_1'), + sequenceFlow = sequenceFlowElement.businessObject; var oldPosition = { - x: startEventShape.x, - y: startEventShape.y + x: startEventElement.x, + y: startEventElement.y }; // when - modeling.moveShape(startEventShape, { dx: 0, dy: 50 }); + modeling.moveShape(startEventElement, { dx: 0, dy: 50 }); // then expect(startEvent.di.bounds.x).toBe(oldPosition.x); expect(startEvent.di.bounds.y).toBe(oldPosition.y + 50); + + expect(sequenceFlowElement.waypoints).toDeepEqual([ + { original: { x: 370, y: 310 }, x: 386, y: 302 }, + { original: { x: 470, y: 260 }, x: 420, y: 285 } + ]); + + expect(sequenceFlow.di.waypoint).toDeepEqual([ + { $type: 'dc:Point', x: 386, y: 302 }, + { $type: 'dc:Point', x: 420, y: 285 } + ]); })); it('should execute on label', inject(function(elementRegistry, modeling) { // given - var labelShape = elementRegistry.getById('StartEvent_1_label'), - startEvent = labelShape.businessObject; + var labelElement = elementRegistry.getById('StartEvent_1_label'), + startEvent = labelElement.businessObject; var oldPosition = { - x: labelShape.x, - y: labelShape.y + x: labelElement.x, + y: labelElement.y }; // when - modeling.moveShape(labelShape, { dx: 0, dy: 50 }); + modeling.moveShape(labelElement, { dx: 0, dy: 50 }); // then expect(startEvent.di.label.bounds.x).toBe(oldPosition.x); @@ -74,15 +87,15 @@ describe('features/modeling - move shape', function() { it('should undo', inject(function(elementRegistry, commandStack, modeling) { // given - var startEventShape = elementRegistry.getById('StartEvent_1'), - startEvent = startEventShape.businessObject; + var startEventElement = elementRegistry.getById('StartEvent_1'), + startEvent = startEventElement.businessObject; var oldPosition = { - x: startEventShape.x, - y: startEventShape.y + x: startEventElement.x, + y: startEventElement.y }; - modeling.moveShape(startEventShape, { dx: 0, dy: 50 }); + modeling.moveShape(startEventElement, { dx: 0, dy: 50 }); // when commandStack.undo(); @@ -96,15 +109,15 @@ describe('features/modeling - move shape', function() { it('should undo on label', inject(function(elementRegistry, commandStack, modeling) { // given - var labelShape = elementRegistry.getById('StartEvent_1_label'), - startEvent = labelShape.businessObject; + var labelElement = elementRegistry.getById('StartEvent_1_label'), + startEvent = labelElement.businessObject; var oldPosition = { - x: labelShape.x, - y: labelShape.y + x: labelElement.x, + y: labelElement.y }; - modeling.moveShape(labelShape, { dx: 0, dy: 50 }); + modeling.moveShape(labelElement, { dx: 0, dy: 50 }); // when commandStack.undo(); @@ -116,4 +129,55 @@ describe('features/modeling - move shape', function() { }); + + describe('redo support', function() { + + it('should redo', inject(function(elementRegistry, commandStack, modeling) { + + // given + var startEventElement = elementRegistry.getById('StartEvent_1'), + startEvent = startEventElement.businessObject; + + + modeling.moveShape(startEventElement, { dx: 0, dy: 50 }); + + var newPosition = { + x: startEventElement.x, + y: startEventElement.y + }; + + // when + commandStack.undo(); + commandStack.redo(); + + // then + expect(startEvent.di.bounds.x).toBe(newPosition.x); + expect(startEvent.di.bounds.y).toBe(newPosition.y); + })); + + + it('should redo on label', inject(function(elementRegistry, commandStack, modeling) { + + // given + var labelElement = elementRegistry.getById('StartEvent_1_label'), + startEvent = labelElement.businessObject; + + modeling.moveShape(labelElement, { dx: 0, dy: 50 }); + + var newPosition = { + x: labelElement.x, + y: labelElement.y + }; + + // when + commandStack.undo(); + commandStack.redo(); + + // then + expect(startEvent.di.label.bounds.x).toBe(newPosition.x); + expect(startEvent.di.label.bounds.y).toBe(newPosition.y); + })); + + }); + }); \ No newline at end of file