fix(modeling/copy-paste): copy referenced message if not present
Related to https://github.com/camunda/camunda-modeler/issues/1639
This commit is contained in:
parent
4bafbe5d8b
commit
dc5a566e10
|
@ -28,7 +28,9 @@ var LOW_PRIORITY = 500;
|
|||
* Add referenced root elements (error, escalation, message, signal) if they don't exist.
|
||||
* Copy referenced root elements on copy & paste.
|
||||
*/
|
||||
export default function RootElementReferenceBehavior(bpmnjs, eventBus, injector) {
|
||||
export default function RootElementReferenceBehavior(
|
||||
bpmnjs, eventBus, injector, moddleCopy, bpmnFactory
|
||||
) {
|
||||
injector.invoke(CommandInterceptor, this);
|
||||
|
||||
function hasRootElement(rootElement) {
|
||||
|
@ -140,6 +142,13 @@ export default function RootElementReferenceBehavior(bpmnjs, eventBus, injector)
|
|||
return;
|
||||
}
|
||||
|
||||
if (!hasRootElement(referencedRootElement)) {
|
||||
referencedRootElement = moddleCopy.copyElement(
|
||||
referencedRootElement,
|
||||
bpmnFactory.create(referencedRootElement.$type)
|
||||
);
|
||||
}
|
||||
|
||||
eventDefinition.set(getRootElementReferencePropertyName(eventDefinition), referencedRootElement);
|
||||
});
|
||||
}
|
||||
|
@ -147,7 +156,9 @@ export default function RootElementReferenceBehavior(bpmnjs, eventBus, injector)
|
|||
RootElementReferenceBehavior.$inject = [
|
||||
'bpmnjs',
|
||||
'eventBus',
|
||||
'injector'
|
||||
'injector',
|
||||
'moddleCopy',
|
||||
'bpmnFactory'
|
||||
];
|
||||
|
||||
inherits(RootElementReferenceBehavior, CommandInterceptor);
|
||||
|
|
|
@ -51,9 +51,10 @@ describe('features/modeling - root element reference behavior', function() {
|
|||
|
||||
var boundaryEvent,
|
||||
host,
|
||||
rootElement;
|
||||
rootElement,
|
||||
pastedRootElement;
|
||||
|
||||
describe('should add', function() {
|
||||
describe('should add a copy', function() {
|
||||
|
||||
beforeEach(inject(function(bpmnjs, copyPaste, elementRegistry, modeling) {
|
||||
|
||||
|
@ -87,13 +88,19 @@ describe('features/modeling - root element reference behavior', function() {
|
|||
attach: 'attach'
|
||||
}
|
||||
})[0];
|
||||
|
||||
businessObject = getBusinessObject(boundaryEvent);
|
||||
pastedRootElement = getRootElementReferenced(
|
||||
businessObject.get('eventDefinitions')[ 0 ]
|
||||
);
|
||||
}));
|
||||
|
||||
|
||||
it('<do>', function() {
|
||||
|
||||
// then
|
||||
expect(hasRootElement(rootElement)).to.be.true;
|
||||
expect(hasRootElement(rootElement)).to.be.false;
|
||||
expect(hasRootElement(pastedRootElement)).to.be.true;
|
||||
});
|
||||
|
||||
|
||||
|
@ -104,6 +111,7 @@ describe('features/modeling - root element reference behavior', function() {
|
|||
|
||||
// then
|
||||
expect(hasRootElement(rootElement)).to.be.false;
|
||||
expect(hasRootElement(pastedRootElement)).to.be.false;
|
||||
}));
|
||||
|
||||
|
||||
|
@ -116,7 +124,8 @@ describe('features/modeling - root element reference behavior', function() {
|
|||
commandStack.redo();
|
||||
|
||||
// then
|
||||
expect(hasRootElement(rootElement)).to.be.true;
|
||||
expect(hasRootElement(rootElement)).to.be.false;
|
||||
expect(hasRootElement(pastedRootElement)).to.be.true;
|
||||
}));
|
||||
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue