bpmn-js/test/spec/features/modeling/layout/LayoutSequenceFlowSpec.js

323 lines
8.0 KiB
JavaScript

import {
bootstrapModeler,
inject
} from 'test/TestHelper';
import {
connect,
element,
move,
reconnectEnd
} from './Helper';
import Modeler from 'lib/Modeler';
import modelingModule from 'lib/features/modeling';
import coreModule from 'lib/core';
describe('features/modeling - layout', function() {
describe.skip('overall experience, flow elements', function() {
var diagramXML = require('./LayoutSequenceFlowSpec.flowElements.bpmn');
beforeEach(bootstrapModeler(diagramXML, { modules: Modeler.prototype._modules }));
it('should feel awesome', inject(function() { }));
});
describe.skip('overall experience, boundary events', function() {
var diagramXML = require('./LayoutSequenceFlowSpec.boundaryEvents.bpmn');
beforeEach(bootstrapModeler(diagramXML, { modules: Modeler.prototype._modules }));
it('should feel awesome', inject(function() { }));
});
describe('flow elements', function() {
var diagramXML = require('./LayoutSequenceFlowSpec.flowElements.bpmn');
var testModules = [ coreModule, modelingModule ];
beforeEach(bootstrapModeler(diagramXML, { modules: testModules }));
describe('gateway layout', function() {
it('should layout v:h after Gateway', inject(function() {
// when
var connection = connect('ExclusiveGateway_1', 'BusinessRuleTask_1');
// then
expect(connection).to.have.waypoints([
{ original: { x: 678, y: 302 }, x: 678, y: 277 },
{ x: 678, y: 220 },
{ original: { x: 840, y: 220 }, x: 790, y: 220 }
]);
}));
it('should layout h:v before Gateway', inject(function() {
// when
var connection = connect('BusinessRuleTask_1', 'ParallelGateway_1');
// then
expect(connection).to.have.waypoints([
{ original: { x: 840, y: 220 }, x: 890, y: 220 },
{ x: 1005, y: 220 },
{ original: { x: 1005, y: 302 }, x: 1005, y: 277 }
]);
}));
});
describe('other elements layout', function() {
it('should layout h:h after StartEvent', inject(function() {
// when
var connection = connect('StartEvent_1', 'Task_1');
// then
expect(connection).to.have.waypoints([
{ original: { x: 170, y: 302 }, x: 188, y: 302 },
{ x: 235, y: 302 },
{ x: 235, y: 220 },
{ original: { x: 332, y: 220 }, x: 282, y: 220 }
]);
}));
it('should layout h:h after Task', inject(function() {
// when
var connection = connect('ServiceTask_1', 'BusinessRuleTask_1');
// then
expect(connection).to.have.waypoints([
{ original: { x: 678, y: 117 }, x: 728, y: 117 },
{ x: 759, y: 117 },
{ x: 759, y: 220 },
{ original: { x: 840, y: 220 }, x: 790, y: 220 }
]);
}));
it('should layout h:h after IntermediateEvent', inject(function() {
// when
var connection = connect('IntermediateThrowEvent_1', 'ServiceTask_1');
// then
expect(connection).to.have.waypoints([
{ original: { x: 496, y: 302 }, x: 514, y: 302 },
{ x: 571, y: 302 },
{ x: 571, y: 117 },
{ original: { x: 678, y: 117 }, x: 628, y: 117 }
]);
}));
it('should layout h:h after IntermediateEvent (right to left)', inject(function() {
// when
var connection = connect('IntermediateThrowEvent_1', 'Task_1');
// then
expect(connection).to.have.waypoints([
{ original: { x: 496, y: 302 }, x: 478, y: 302 },
{ x: 430, y: 302 },
{ x: 430, y: 220 },
{ original: { x: 332, y: 220 }, x: 382, y: 220 }
]);
}));
});
describe('relayout', function() {
it('should not repair after reconnect end', inject(function() {
// given
var newDocking = { x: 660, y: 280 };
var connection = element('SequenceFlow_1');
// when
reconnectEnd(connection, 'ExclusiveGateway_1', newDocking);
// then
expect(connection).to.have.waypoints([
{ x: 382, y: 241 },
{ x: 559, y: 241 },
{ x: 559, y: 138 },
{ x: 660, y: 280 }
]);
}));
it('should repair after target move', inject(function() {
// given
var delta = { x: -30, y: 20 };
var connection = element('SequenceFlow_1');
// when
move('ServiceTask_1', delta);
// then
expect(connection).to.have.waypoints([
{ x: 382, y: 241 },
{ x: 559, y: 241 },
{ x: 559, y: 158 },
{ x: 598, y: 158 }
]);
}));
it('should repair after source move', inject(function() {
// given
var delta = { x: -30, y: 20 };
var connection = element('SequenceFlow_1');
// when
move('Task_1', delta);
// then
expect(connection).to.have.waypoints([
{ x: 352, y: 261 },
{ x: 559, y: 261 },
{ x: 559, y: 138 },
{ x: 628, y: 138 }
]);
}));
});
});
describe('boundary events', function() {
var diagramXML = require('./LayoutSequenceFlowSpec.boundaryEvents.bpmn');
var testModules = [ coreModule, modelingModule ];
beforeEach(bootstrapModeler(diagramXML, { modules: testModules }));
it('should layout h:h connecting BoundaryEvent -> left Task', inject(function() {
// when
var connection = connect('BoundaryEvent_A', 'Task_1');
// then
expect(connection).to.have.waypoints([
{ original: { x: 505, y: 417 }, x: 487, y: 417 },
{ x: 437, y: 417 },
{ x: 437, y: 394 },
{ original: { x: 337, y: 394 }, x: 387, y: 394 }
]);
}));
it('should layout h:v connecting BoundaryEvent -> bottom-left Task', inject(function() {
// when
var connection = connect('BoundaryEvent_A', 'Task_2');
// then
expect(connection).to.have.waypoints([
{ original: { x: 505, y: 417 }, x: 487, y: 417 },
{ x: 412, y: 417 },
{ original: { x: 412, y: 543 }, x: 412, y: 503 }
]);
}));
it('should layout h:v connecting BoundaryEvent -> top-right Task', inject(function() {
// when
var connection = connect('BoundaryEvent_A', 'Task_5');
// then
expect(connection).to.have.waypoints([
{ original: { x: 505, y: 417 }, x: 523, y: 417 },
{ x: 1016, y: 417 },
{ original: { x: 1016, y: 215 }, x: 1016, y: 255 }
]);
}));
it('should layout v:v connecting BoundaryEvent -> top Task', inject(function() {
// when
var connection = connect('BoundaryEvent_B', 'Task_4');
// then
expect(connection).to.have.waypoints([
{ original: { x: 586, y: 258 }, x: 586, y: 240 },
{ original: { x: 586, y: 121 }, x: 586, y: 161 }
]);
}));
it('should layout v:h connecting BoundaryEvent -> top-left Task', inject(function() {
// when
var connection = connect('BoundaryEvent_B', 'Task_3');
// then
expect(connection).to.have.waypoints([
{ original: { x: 586, y: 258 }, x: 586, y: 240 },
{ x: 586, y: 162 },
{ original: { x: 428, y: 162 }, x: 478, y: 162 }
]);
}));
it('should layout h:v connecting BoundaryEvent -> bottom-right Task', inject(function() {
// when
var connection = connect('BoundaryEvent_C', 'Task_6');
// then
expect(connection).to.have.waypoints([
{ original: { x: 855, y: 293 }, x: 873, y: 293 },
{ x: 1041, y: 293 },
{ original: { x: 1041, y: 483 }, x: 1041, y: 443 }
]);
}));
it('should layout v:h connecting BoundaryEvent -> bottom-left Task', inject(function() {
// when
var connection = connect('BoundaryEvent_D', 'Task_2');
// then
expect(connection).to.have.waypoints([
{ original: { x: 815, y: 458 }, x: 815, y: 476 },
{ x: 815, y: 543 },
{ original: { x: 412, y: 543 }, x: 462, y: 543 }
]);
}));
});
});