bpmn-js/test/spec/features/modeling/append/TextAnnotationSpec.js

137 lines
4.1 KiB
JavaScript

import {
bootstrapModeler,
inject
} from 'test/TestHelper';
import {
find
} from 'min-dash';
import modelingModule from 'lib/features/modeling';
import coreModule from 'lib/core';
describe('features/modeling - append text-annotation', function() {
var diagramXML = require('../../../../fixtures/bpmn/containers.bpmn');
var testModules = [ coreModule, modelingModule ];
beforeEach(bootstrapModeler(diagramXML, { modules: testModules }));
describe('should append', function() {
it('in lane');
it('in participant', inject(function(elementRegistry, modeling) {
// given
var eventShape = elementRegistry.get('IntermediateCatchEvent_1'),
process = elementRegistry.get('Participant_1').businessObject.processRef;
// when
var annotationShape = modeling.appendShape(eventShape, { type: 'bpmn:TextAnnotation' }),
annotation = annotationShape.businessObject;
var connectingConnection = find(annotationShape.incoming, function(c) {
return c.target === annotationShape;
});
var connecting = connectingConnection.businessObject;
// then
expect(annotationShape).to.exist;
expect(annotation.$instanceOf('bpmn:TextAnnotation')).to.be.true;
expect(connecting.$instanceOf('bpmn:Association')).to.be.true;
expect(connecting.sourceRef).to.eql(eventShape.businessObject);
expect(connecting.targetRef).to.eql(annotation);
// correctly assign artifact parent
expect(annotation.$parent).to.eql(process);
expect(connecting.$parent).to.eql(process);
expect(process.artifacts).to.include(annotation);
expect(process.artifacts).to.include(connecting);
}));
it('in sub process', inject(function(elementRegistry, modeling) {
// given
var eventShape = elementRegistry.get('IntermediateThrowEvent_1');
// when
var annotationShape = modeling.appendShape(eventShape, { type: 'bpmn:TextAnnotation' }),
annotation = annotationShape.businessObject;
var connectingConnection = find(annotationShape.incoming, function(c) {
return c.target === annotationShape;
});
var connecting = connectingConnection.businessObject;
// then
expect(annotationShape).to.exist;
expect(annotation.$instanceOf('bpmn:TextAnnotation')).to.be.true;
expect(connecting.$instanceOf('bpmn:Association')).to.be.true;
expect(connecting.sourceRef).to.eql(eventShape.businessObject);
expect(connecting.targetRef).to.eql(annotation);
// correctly assign artifact parent
expect(annotation.$parent.id).to.equal('Transaction_2');
expect(connecting.$parent.id).to.equal('Transaction_2');
}));
it('with right size', inject(function(elementRegistry, elementFactory, modeling) {
// given
var eventShape = elementRegistry.get('IntermediateCatchEvent_1');
// when
var annotationShape = modeling.appendShape(eventShape, { type: 'bpmn:TextAnnotation' });
// then
expect(annotationShape.width).to.eql(100);
expect(annotationShape.height).to.eql(30);
}));
});
describe('undo', function() {
it('should undo wire connection source + target', inject(function(elementRegistry, modeling, commandStack) {
// given
var eventShape = elementRegistry.get('IntermediateCatchEvent_1'),
process = elementRegistry.get('Participant_1').businessObject.processRef;
var annotationShape = modeling.appendShape(eventShape, { type: 'bpmn:TextAnnotation' }),
annotation = annotationShape.businessObject;
var connectingConnection = find(annotationShape.incoming, function(c) {
return c.target === annotationShape;
});
var connecting = connectingConnection.businessObject;
// when
commandStack.undo();
// then
expect(connecting.sourceRef).to.be.null;
expect(connecting.targetRef).to.be.null;
expect(connecting.$parent).to.be.null;
expect(process.artifacts).not.to.include(connecting);
expect(annotation.$parent).to.be.null;
expect(process.artifacts).not.to.include(annotation);
}));
});
});