diff --git a/test/fixtures/zeebe/read-write.bpmn b/test/fixtures/zeebe/read-write.bpmn new file mode 100644 index 0000000..6e7a31b --- /dev/null +++ b/test/fixtures/zeebe/read-write.bpmn @@ -0,0 +1,45 @@ + + + + + + + + + + + + + Write: approved + + + + Read: approved + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/fixtures/zeebe/read-write.hierarchical.bpmn b/test/fixtures/zeebe/read-write.hierarchical.bpmn new file mode 100644 index 0000000..586a784 --- /dev/null +++ b/test/fixtures/zeebe/read-write.hierarchical.bpmn @@ -0,0 +1,45 @@ + + + + + + + + + + + + + Write: application.approved + + + + Read: application.approved + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/spec/zeebe/ZeebeVariableResolver.spec.js b/test/spec/zeebe/ZeebeVariableResolver.spec.js index f6e3536..4669e02 100644 --- a/test/spec/zeebe/ZeebeVariableResolver.spec.js +++ b/test/spec/zeebe/ZeebeVariableResolver.spec.js @@ -31,6 +31,8 @@ import subprocessNoOutputMappingXML from 'test/fixtures/zeebe/sub-process.no-out import longBrokenExpressionXML from 'test/fixtures/zeebe/long-broken-expression.bpmn'; import immediatelyBrokenExpressionXML from 'test/fixtures/zeebe/immediately-broken-expression.bpmn'; import typeResolutionXML from 'test/fixtures/zeebe/type-resolution.bpmn'; +import readWriteXML from 'test/fixtures/zeebe/read-write.bpmn'; +import readWriteHierarchicalXML from 'test/fixtures/zeebe/read-write.hierarchical.bpmn'; import VariableProvider from 'lib/VariableProvider'; import { getInputOutput } from '../../../lib/base/util/ExtensionElementsUtil'; @@ -2602,6 +2604,64 @@ describe('ZeebeVariableResolver', function() { }); + + describe('used variables - read and written', function() { + + beforeEach(bootstrapModeler(readWriteXML, { + additionalModules: [ + ZeebeVariableResolverModule + ], + moddleExtensions: { + zeebe: ZeebeModdle + } + })); + + + it('should indicate dual use', inject(async function(elementRegistry, variableResolver) { + + // given + const task = elementRegistry.get('ValidateApprovedTask'); + + // when + const variables = await variableResolver.getVariablesForElement(task); + + // then + expect(variables).to.variableEqual([ + { name: 'approved', scope: 'Process_1', origin: [ 'ValidateApprovedTask' ], usedBy: [ 'ValidateApprovedTask' ] } + ]); + })); + + }); + + + describe('used variables - read and written / hierarchical', function() { + + beforeEach(bootstrapModeler(readWriteHierarchicalXML, { + additionalModules: [ + ZeebeVariableResolverModule + ], + moddleExtensions: { + zeebe: ZeebeModdle + } + })); + + + it('should indicate dual use', inject(async function(elementRegistry, variableResolver) { + + // given + const task = elementRegistry.get('ValidateApprovedTask'); + + // when + const variables = await variableResolver.getVariablesForElement(task); + + // then + expect(variables).to.variableEqual([ + { name: 'application', scope: 'Process_1', origin: [ 'ValidateApprovedTask' ], usedBy: [ 'ValidateApprovedTask' ] } + ]); + })); + + }); + }); // helpers //////////////////////