UNPKG

camunda-bpmn-moddle

Version:
1,242 lines (898 loc) 29.6 kB
'use strict'; var readFile = require('../../helper').readFile, createModdle = require('../../helper').createModdle; describe('read', function() { describe('should read extensions', function() { var moddle; beforeEach(function() { moddle = createModdle(); }); describe('camunda:historyTimeToLive', function() { it('on Process', function(done) { // given var xml = readFile('test/fixtures/xml/process-camunda-historyTimeToLive.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:Process', function(err, proc) { // then expect(proc).to.jsonEqual({ $type : 'bpmn:Process', historyTimeToLive : 'foo' }); done(err); }); }); }); describe('camunda:priority', function() { it('on UserTask', function(done) { // given var xml = readFile('test/fixtures/xml/userTask-camunda-priority.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:UserTask', function(err, serviceTask) { // then expect(serviceTask).to.jsonEqual({ $type: 'bpmn:UserTask', priority: '${ priority }' }); done(err); }); }); }); describe('camunda:async', function() { it('on ServiceTask', function(done) { // given var xml = readFile('test/fixtures/xml/serviceTask-camunda-async.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:ServiceTask', function(err, serviceTask) { // then expect(serviceTask).to.jsonEqual({ $type: 'bpmn:ServiceTask', async: true }); done(err); }); }); it('on SignalEventDefinition', function(done) { // given var xml = readFile('test/fixtures/xml/signalEventDefinition-camunda-async.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:SignalEventDefinition', function(err, definition) { // then expect(definition).to.jsonEqual({ $type: 'bpmn:SignalEventDefinition', async: true }); done(err); }); }); }); describe('camunda:errorCodeVariable', function() { it('on ErrorEventDefinition', function(done) { // given var xml = readFile('test/fixtures/xml/errorEventDefinition-camunda-errorCodeVariable.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:ErrorEventDefinition', function(err, definition) { // then expect(definition).to.jsonEqual({ $type: 'bpmn:ErrorEventDefinition', errorCodeVariable: 'errorCode' }); done(err); }); }); }); describe('camunda:escalationCodeVariable', function() { it('on EscalationEventDefinition', function(done) { // given var xml = readFile('test/fixtures/xml/escalationEventDefinition-camunda-escalationCodeVariable.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:EscalationEventDefinition', function(err, definition) { // then expect(definition).to.jsonEqual({ $type: 'bpmn:EscalationEventDefinition', escalationCodeVariable: 'escalationCode' }); done(err); }); }); }); it('camunda:script', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-script.part.bpmn'); // when moddle.fromXML(xml, 'camunda:Script', function(err, script) { // then expect(script).to.jsonEqual({ $type: 'camunda:Script', scriptFormat: 'groovy', resource: 'null', value: 'foo = bar;' }); done(err); }); }); it('camunda:connector', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-connector.part.bpmn'); // when moddle.fromXML(xml, 'camunda:Connector', function(err, connector) { // then expect(connector).to.jsonEqual({ $type: 'camunda:Connector', connectorId: 'connector', inputOutput: { $type: 'camunda:InputOutput', inputParameters: [ { $type: 'camunda:InputParameter', name: 'in' } ], outputParameters: [ { $type: 'camunda:OutputParameter', name: 'out' } ] } }); done(err); }); }); it('camunda:properties', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-properties.part.bpmn'); // when moddle.fromXML(xml, 'camunda:Properties', function(err, properties) { // then expect(properties).to.jsonEqual({ $type: 'camunda:Properties', values: [ { $type: 'camunda:Property', id: 'p1', name: 'foo', value: 'property1' } ] }); done(err); }); }); it('camunda:potentialStarter', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-potentialStarter.part.bpmn'); // when moddle.fromXML(xml, 'camunda:PotentialStarter', function(err, starter) { // then expect(starter).to.jsonEqual({ $type: 'camunda:PotentialStarter', resourceAssignmentExpression: { $type: 'bpmn:ResourceAssignmentExpression', expression: { $type: 'bpmn:FormalExpression', body: 'group2, group(group3), user(user3)' } } }); done(err); }); }); describe('camunda:resource', function() { it('on FormalExpression', function(done) { // given var xml = readFile('test/fixtures/xml/formalExpression-resource.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:FormalExpression', function(err, starter) { // then expect(starter).to.jsonEqual({ $type: 'bpmn:FormalExpression', resource: 'deployment://some-file' }); done(err); }); }); }); it('camunda:in', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-in.part.bpmn'); // when moddle.fromXML(xml, 'camunda:In', function(err, binding) { // then expect(binding).to.jsonEqual({ $type: 'camunda:In', sourceExpression: 'fooExp', source: 'foo', target: 'bar', variables: 'all', local: true }); done(err); }); }); it('camunda:out', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-out.part.bpmn'); // when moddle.fromXML(xml, 'camunda:Out', function(err, binding) { // then expect(binding).to.jsonEqual({ $type: 'camunda:Out', sourceExpression: 'fooExp', source: 'foo', target: 'bar', variables: 'all', local: true }); done(err); }); }); describe('camunda:inputParameter', function() { it('with body content', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-inputParameter-body.part.bpmn'); // when moddle.fromXML(xml, 'camunda:InputParameter', function(err, parameter) { // then expect(parameter).to.jsonEqual({ $type: 'camunda:InputParameter', name: 'foo', value: 'BAR' }); done(err); }); }); it('with nested script', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-inputParameter-script.part.bpmn'); // when moddle.fromXML(xml, 'camunda:InputParameter', function(err, parameter) { // then expect(parameter).to.jsonEqual({ $type: 'camunda:InputParameter', definition: { $type: 'camunda:Script' } }); done(err); }); }); it('with nested list', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-inputParameter-list.part.bpmn'); // when moddle.fromXML(xml, 'camunda:InputParameter', function(err, parameter) { // then expect(parameter).to.jsonEqual({ $type: 'camunda:InputParameter', name: 'var1', definition: { $type: 'camunda:List', items: [ { $type: 'camunda:Value', value: '${1+1}' }, { $type: 'camunda:Value', value: '${1+2}' }, { $type: 'camunda:Value', value: '${1+3}' } ] } }); done(err); }); }); it('with nested map', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-inputParameter-map.part.bpmn'); // when moddle.fromXML(xml, 'camunda:InputParameter', function(err, parameter) { // then expect(parameter).to.jsonEqual({ $type: 'camunda:InputParameter', definition: { $type: 'camunda:Map', entries: [ { $type: 'camunda:Entry', key: 'a', value: '${1+1}' }, { $type: 'camunda:Entry', key: 'b', value: '${1+2}' }, { $type: 'camunda:Entry', key: 'c', value: '${1+3}' } ] } }); done(err); }); }); }); describe('camunda:outputParameter', function() { it('with mixed contents', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-outputParameter-mixed.part.bpmn'); // when moddle.fromXML(xml, 'camunda:OutputParameter', function(err, parameter) { // then expect(parameter).to.jsonEqual({ $type: 'camunda:OutputParameter', name: 'var1', definition: { $type: 'camunda:List', items: [ { $type: 'camunda:Value', value: 'constantStringValue' }, { $type: 'camunda:Value', value: '${ \'elValue\' }' }, { $type: 'camunda:Script', scriptFormat: 'Groovy', value: 'return "scriptValue";' } ] } }); done(err); }); }); }); describe('camunda:FormSupported with camunda:formKey and camunda:formHandlerClass', function() { it('on UserTask', function(done) { // given var xml = readFile('test/fixtures/xml/userTask-camunda-formSupported.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:UserTask', function(err, task) { // then expect(task).to.jsonEqual({ $type: 'bpmn:UserTask', formHandlerClass: 'my.company.FormHandler', formKey: 'form.html' }); done(err); }); }); it('on StartEvent', function(done) { // given var xml = readFile('test/fixtures/xml/userTask-camunda-formSupported.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:UserTask', function(err, startEvent) { // then expect(startEvent).to.jsonEqual({ $type: 'bpmn:UserTask', formHandlerClass: 'my.company.FormHandler', formKey: 'form.html' }); done(err); }); }); }); describe('camunda:TemplateSupported with camunda:modelerTemplate', function() { it('on Process', function(done) { // given var xml = readFile('test/fixtures/xml/process-camunda-modelerTemplate.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:Process', function(err, task) { // then expect(task).to.jsonEqual({ $type: 'bpmn:Process', modelerTemplate: 'foo' }); done(err); }); }); it('on Task', function(done) { // given var xml = readFile('test/fixtures/xml/task-camunda-modelerTemplate.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:Task', function(err, task) { // then expect(task).to.jsonEqual({ $type: 'bpmn:Task', modelerTemplate: 'foo' }); done(err); }); }); it('on StartEvent', function(done) { // given var xml = readFile('test/fixtures/xml/startEvent-camunda-modelerTemplate.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:StartEvent', function(err, task) { // then expect(task).to.jsonEqual({ $type: 'bpmn:StartEvent', modelerTemplate: 'bar' }); done(err); }); }); }); describe('camunda:initiator', function() { it('on StartEvent', function(done) { // given var xml = readFile('test/fixtures/xml/startEvent-camunda-initiator.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:StartEvent', function(err, proc) { // then expect(proc).to.jsonEqual({ $type: 'bpmn:StartEvent', initiator: 'kermit' }); done(err); }); }); }); it('bpmn:CallActivity', function(done) { // given var xml = readFile('test/fixtures/xml/callActivity.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:CallActivity', function(err, callActivity) { // then expect(callActivity).to.jsonEqual({ $type: 'bpmn:CallActivity', calledElementBinding: 'version', calledElementVersion: '1', calledElementTenantId: 'tenant1', caseRef: 'oneTaskCase', caseBinding: 'version', caseVersion: '2', caseTenantId: 'tenant1', variableMappingClass: 'org.camunda.bpm.test.Test', variableMappingDelegateExpression: '${test}' }); done(err); }); }); describe('camunda:taskPriority', function() { it('on Process', function(done) { // given var xml = readFile('test/fixtures/xml/process-camunda-taskPriority.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:Process', function(err, proc) { // then expect(proc).to.jsonEqual({ $type : 'bpmn:Process', taskPriority : '100' }); done(err); }); }); it('on ServiceTaskLike Element', function(done) { // given var xml = readFile('test/fixtures/xml/serviceTask-camunda-taskPriority.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:ServiceTask', function(err, task) { // then expect(task).to.jsonEqual({ $type : 'bpmn:ServiceTask', taskPriority : '100' }); done(err); }); }); }); describe('camunda:jobPriority', function() { it('on Process', function(done) { // given var xml = readFile('test/fixtures/xml/process-camunda-jobPriority.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:Process', function(err, proc) { // then expect(proc).to.jsonEqual({ $type: 'bpmn:Process', jobPriority: '100' }); done(err); }); }); it('on ServiceTask', function(done) { // given var xml = readFile('test/fixtures/xml/serviceTask-camunda-jobPriority.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:ServiceTask', function(err, task) { // then expect(task).to.jsonEqual({ $type: 'bpmn:ServiceTask', jobPriority: '100' }); done(err); }); }); it('on Gateway', function(done) { // given var xml = readFile('test/fixtures/xml/gateway-camunda-jobPriority.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:ExclusiveGateway', function(err, gateway) { // then expect(gateway).to.jsonEqual({ $type: 'bpmn:ExclusiveGateway', jobPriority: '${ some - expression }' }); done(err); }); }); it('on Event', function(done) { // given var xml = readFile('test/fixtures/xml/event-camunda-jobPriority.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:IntermediateCatchEvent', function(err, proc) { // then expect(proc).to.jsonEqual({ $type: 'bpmn:IntermediateCatchEvent', jobPriority: '100' }); done(err); }); }); }); describe('bpmn:Process', function() { it('extended with camunda:candidateStarterUsers, camunda:candidateStarterGroups, camunda:versionTag', function(done) { // given var xml = readFile('test/fixtures/xml/process.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:Process', function(err, proc) { // then expect(proc).to.jsonEqual({ $type: 'bpmn:Process', candidateStarterUsers: 'userInGroup2', candidateStarterGroups: 'group1, group2, group3', versionTag: '1.0.0' }); done(err); }); }); }); describe('bpmn:ScriptTask', function() { it('extended with camunda:resource, camunda:resultVariable', function(done) { // given var xml = readFile('test/fixtures/xml/scriptTask.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:ScriptTask', function(err, definition) { // then expect(definition).to.jsonEqual({ $type: 'bpmn:ScriptTask', scriptFormat: 'python', resource: 'some-file.py', resultVariable: 'result' }); done(err); }); }); }); it('camunda:formData', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-formData.part.bpmn'); // when moddle.fromXML(xml, 'camunda:FormData', function(err, formData) { // then expect(formData).to.jsonEqual({ $type: 'camunda:FormData', fields: [ { $type: 'camunda:FormField', id: 'stringField', label: 'String Field', type: 'string', defaultValue: 'someString', properties: { $type: 'camunda:Properties', values: [ { $type: 'camunda:Property', id: 'p1', value: 'property1' }, { $type: 'camunda:Property', id: 'p2', value: 'property2' } ] }, validation: { $type: 'camunda:Validation', constraints: [ { $type: 'camunda:Constraint', name: 'readonly' }, { $type: 'camunda:Constraint', name: 'minlength', config: '5' } ] }, values: [ { $type: 'camunda:Value', id: 'a', name: 'A' }, { $type: 'camunda:Value', id: 'b', name: 'B' } ] } ] }); done(err); }); }); describe('camunda:formProperty', function() { it('attributes', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-formProperty-attributes.part.bpmn'); // when moddle.fromXML(xml, 'camunda:FormProperty', function(err, formProperty) { // then expect(formProperty).to.jsonEqual({ $type: 'camunda:FormProperty', id: 'longProperty', name: 'Property', type: 'long', required: 'true', readable: 'true', writable: 'true', variable: 'SpeakerName', expression: '#{address.street}', datePattern: 'dd-MM-yyyy hh:mm', default: '42' }); done(err); }); }); it('with nested value', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-formProperty-children.part.bpmn'); // when moddle.fromXML(xml, 'camunda:FormProperty', function(err, formProperty) { // then expect(formProperty).to.jsonEqual({ $type: 'camunda:FormProperty', values: [ { $type: 'camunda:Value', id: 'false', name: 'Yes' }, { $type: 'camunda:Value', id: 'true', name: 'No' } ] }); done(err); }); }); }); describe('camunda:executionListener', function() { it('attributes', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-executionListener.part.bpmn'); // when moddle.fromXML(xml, 'camunda:ExecutionListener', function(err, executionListener) { // then expect(executionListener).to.jsonEqual({ $type: 'camunda:ExecutionListener', event: 'start', 'class': 'my.company.Listener' }); done(err); }); }); it('script', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-executionListener-script.part.bpmn'); // when moddle.fromXML(xml, 'camunda:ExecutionListener', function(err, executionListener) { // then expect(executionListener).to.jsonEqual({ $type: 'camunda:ExecutionListener', event: 'start', script: { $type: 'camunda:Script', scriptFormat: 'groovy', value: 'foo = bar;' } }); done(err); }); }); it('fields', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-executionListener-fields.part.bpmn'); // when moddle.fromXML(xml, 'camunda:ExecutionListener', function(err, executionListener) { // then expect(executionListener).to.jsonEqual({ $type: 'camunda:ExecutionListener', event: 'start', 'class': 'my.company.Listener', fields : [ { $type: 'camunda:Field', name: 'fieldOne', stringValue: 'myString' }, { $type: 'camunda:Field', name: 'fieldTwo', expression: '${myExpression}' } ] }); done(err); }); }); }); it('camunda:taskListener', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-taskListener.part.bpmn'); // when moddle.fromXML(xml, 'camunda:TaskListener', function(err, taskListener) { // then expect(taskListener).to.jsonEqual({ $type: 'camunda:TaskListener', event: 'create', class: 'org.camunda.bpm.engine.test.bpmn.usertask.UserTaskTestCreateTaskListener', delegateExpression: '${myTaskListener}', expression: '${myTaskListener.notify(task, task.eventName)}' }); done(err); }); }); describe('camunda:field', function() { it('attributes', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-field-attributes.part.bpmn'); // when moddle.fromXML(xml, 'camunda:Field', function(err, field) { // then expect(field).to.jsonEqual({ $type: 'camunda:Field', name: 'html', expression: '<html><body>Hi!</body></html>', stringValue: '41 is not the answer!' }); done(err); }); }); it('with nested expression and string', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-field-children.part.bpmn'); // when moddle.fromXML(xml, 'camunda:Field', function(err, field) { // then expect(field).to.jsonEqual({ $type: 'camunda:Field', name: 'html', expression: '<html><body>Hi!</body></html>', string: '42 is the answer!' }); done(err); }); }); }); describe('camunda:Collectable', function() { it('attributes', function(done) { // given var xml = readFile('test/fixtures/xml/camunda-multiInstance.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:MultiInstanceLoopCharacteristics', function(err, field) { // then expect(field).to.jsonEqual({ $type: 'bpmn:MultiInstanceLoopCharacteristics', isSequential: true, collection: '5', elementVariable: '5' }); done(err); }); }); }); describe('camunda tenant id', function() { it('on BusinessRuleTask', function(done) { // given var xml = readFile('test/fixtures/xml/businessRuleTask.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:BusinessRuleTask', function(err, proc) { // then expect(proc).to.jsonEqual({ $type: 'bpmn:BusinessRuleTask', decisionRef: 'myDecision', decisionRefBinding: 'version', decisionRefVersion: '1', decisionRefTenantId: 'tenant1' }); done(err); }); }); it('on CallActivity', function(done) { // given var xml = readFile('test/fixtures/xml/callActivity.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:CallActivity', function(err, task) { // then expect(task).to.jsonEqual({ $type: 'bpmn:CallActivity', calledElementBinding: 'version', calledElementVersion: '1', calledElementTenantId: 'tenant1', caseRef: 'oneTaskCase', caseBinding: 'version', caseVersion: '2', caseTenantId: 'tenant1', variableMappingClass: 'org.camunda.bpm.test.Test', variableMappingDelegateExpression: '${test}' }); done(err); }); }); }); describe('camunda:errorMessageVariable', function() { it('on ErrorEventDefinition', function(done) { // given var xml = readFile('test/fixtures/xml/errorEventDefinition-camunda-errorMessageVariable.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:ErrorEventDefinition', function(err, definition) { // then expect(definition).to.jsonEqual({ $type: 'bpmn:ErrorEventDefinition', errorMessageVariable: 'errorMessage' }); done(err); }); }); }); describe('camunda:variableName', function() { it('on ConditionalEventDefinition', function(done) { // given var xml = readFile('test/fixtures/xml/conditionalEventDefinition-camunda-variableName.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:ConditionalEventDefinition', function(err, definition) { // then expect(definition).to.jsonEqual({ $type: 'bpmn:ConditionalEventDefinition', variableName: 'myConditionVar' }); done(err); }); }); }); describe('camunda:variableEvent', function() { it('on ConditionalEventDefinition', function(done) { // given var xml = readFile('test/fixtures/xml/conditionalEventDefinition-camunda-variableEvent.part.bpmn'); // when moddle.fromXML(xml, 'bpmn:ConditionalEventDefinition', function(err, definition) { // then expect(definition).to.jsonEqual({ $type: 'bpmn:ConditionalEventDefinition', variableEvent: 'create, update' }); done(err); }); }); }); }); });