From ada919e59df41aa29afc11ea5b1fea485d845d75 Mon Sep 17 00:00:00 2001 From: Elizabeth Esswein Date: Fri, 3 Mar 2023 13:06:58 -0500 Subject: [PATCH] add a few tests on data object visibility --- .../propertiesPanel/DataObjectArray.js | 1 - test/spec/DataObjectInterceptorSpec.js | 54 ++++++++++++++++++- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/app/spiffworkflow/DataObject/propertiesPanel/DataObjectArray.js b/app/spiffworkflow/DataObject/propertiesPanel/DataObjectArray.js index b7b957b..70e5f41 100644 --- a/app/spiffworkflow/DataObject/propertiesPanel/DataObjectArray.js +++ b/app/spiffworkflow/DataObject/propertiesPanel/DataObjectArray.js @@ -7,7 +7,6 @@ import { without } from 'min-dash'; import { is } from 'bpmn-js/lib/util/ModelUtil'; import { findDataObjects, - findDataObjectReferences, findDataObjectReferenceShapes, idToHumanReadableName, } from '../DataObjectHelpers'; diff --git a/test/spec/DataObjectInterceptorSpec.js b/test/spec/DataObjectInterceptorSpec.js index 1fa8324..c109f62 100644 --- a/test/spec/DataObjectInterceptorSpec.js +++ b/test/spec/DataObjectInterceptorSpec.js @@ -4,7 +4,11 @@ import { BpmnPropertiesPanelModule, BpmnPropertiesProviderModule } from 'bpmn-js import { inject, } from 'bpmn-js/test/helper'; -import {findDataObjects, idToHumanReadableName} from '../../app/spiffworkflow/DataObject/DataObjectHelpers'; +import { + findDataObjects, + findDataObjectReferenceShapes, + idToHumanReadableName, +} from '../../app/spiffworkflow/DataObject/DataObjectHelpers'; describe('DataObject Interceptor', function() { @@ -113,4 +117,52 @@ describe('DataObject Interceptor', function() { expect(dataObjects.length).to.equal(1); })); + it('Data objects in a process should be visible in a subprocess', inject(function(canvas, modeling, elementRegistry) { + + let subProcessShape = elementRegistry.get('my_subprocess'); + let subProcess = subProcessShape.businessObject; + let dataObjects = findDataObjects(subProcess); + expect(dataObjects.length).to.equal(0); + + let rootShape = canvas.getRootElement(); + const dataObjectRefShape = modeling.createShape({ type: 'bpmn:DataObjectReference' }, + { x: 220, y: 220 }, rootShape); + + dataObjects = findDataObjects(subProcess); + expect(dataObjects.length).to.equal(1); + })); + + it('Data objects in a subprocess should not be visible in a process', inject(function(canvas, modeling, elementRegistry) { + + let subProcessShape = elementRegistry.get('my_subprocess'); + let subProcess = subProcessShape.businessObject; + const dataObjectRefShape = modeling.createShape({ type: 'bpmn:DataObjectReference' }, + { x: 220, y: 220 }, subProcessShape); + + let dataObjects = findDataObjects(subProcess); + expect(dataObjects.length).to.equal(1); + + let rootShape = canvas.getRootElement(); + dataObjects = findDataObjects(rootShape); + expect(dataObjects.length).to.equal(0); + })); + + it('References inside subprocesses should be visible in a process', inject(function(canvas, modeling, elementRegistry) { + + let rootShape = canvas.getRootElement(); + const refOne = modeling.createShape({ type: 'bpmn:DataObjectReference' }, + { x: 220, y: 220 }, rootShape); + + let subProcessShape = elementRegistry.get('my_subprocess'); + let subProcess = subProcessShape.businessObject; + const refTwo = modeling.createShape({ type: 'bpmn:DataObjectReference' }, + { x: 320, y: 220 }, subProcessShape); + + let dataObjects = findDataObjects(subProcess); + expect(dataObjects.length).to.equal(1); + let references = findDataObjectReferenceShapes(rootShape.children, dataObjects[0].id); + expect(references.length).to.equal(2); + + })); + });