diff --git a/app/spiffworkflow/extensions/propertiesPanel/ExtensionsPropertiesProvider.js b/app/spiffworkflow/extensions/propertiesPanel/ExtensionsPropertiesProvider.js
index 7737bbe..c58f201 100644
--- a/app/spiffworkflow/extensions/propertiesPanel/ExtensionsPropertiesProvider.js
+++ b/app/spiffworkflow/extensions/propertiesPanel/ExtensionsPropertiesProvider.js
@@ -21,7 +21,9 @@ export default function ExtensionsPropertiesProvider(
this.getGroups = function (element) {
return function (groups) {
if (is(element, 'bpmn:ScriptTask')) {
- groups.push(createScriptGroup(element, translate, moddle));
+ groups.push(
+ createScriptGroup(element, translate, moddle, commandStack)
+ );
} else if (
isAny(element, ['bpmn:Task', 'bpmn:CallActivity', 'bpmn:SubProcess'])
) {
@@ -81,7 +83,8 @@ function createScriptGroup(element, translate, moddle, commandStack) {
SCRIPT_TYPE.bpmn,
'Script',
'Code to execute.',
- translate
+ translate,
+ commandStack
),
};
}
diff --git a/app/spiffworkflow/extensions/propertiesPanel/ScriptUnitTestArray.js b/app/spiffworkflow/extensions/propertiesPanel/ScriptUnitTestArray.js
index 9b97e40..381f0e9 100644
--- a/app/spiffworkflow/extensions/propertiesPanel/ScriptUnitTestArray.js
+++ b/app/spiffworkflow/extensions/propertiesPanel/ScriptUnitTestArray.js
@@ -1,22 +1,29 @@
import { useService } from 'bpmn-js-properties-panel';
-import { TextAreaEntry } from '@bpmn-io/properties-panel';
-// import { findCorrelationKeys, getRoot } from '../MessageHelpers';
-// import { removeFirstInstanceOfItemFromArrayInPlace } from '../../helpers';
+import { TextFieldEntry, TextAreaEntry } from '@bpmn-io/properties-panel';
+import { removeFirstInstanceOfItemFromArrayInPlace } from '../../helpers';
-const getScriptUnitTestModdleElements = (shapeElement) => {
+const getScriptUnitTestsModdleElement = (shapeElement) => {
const bizObj = shapeElement.businessObject;
if (!bizObj.extensionElements) {
return null;
}
if (!bizObj.extensionElements.values) {
- return [];
+ return null;
}
- const unitTestsModdleElement = bizObj.extensionElements
+ return bizObj.extensionElements
.get('values')
.filter(function getInstanceOfType(e) {
return e.$instanceOf('spiffworkflow:unitTests');
})[0];
- return unitTestsModdleElement.unitTests;
+};
+
+const getScriptUnitTestModdleElements = (shapeElement) => {
+ const scriptUnitTestsModdleElement =
+ getScriptUnitTestsModdleElement(shapeElement);
+ if (scriptUnitTestsModdleElement) {
+ return scriptUnitTestsModdleElement.unitTests;
+ }
+ return [];
};
/**
@@ -25,10 +32,8 @@ const getScriptUnitTestModdleElements = (shapeElement) => {
* @constructor
*/
export function ScriptUnitTestArray(props) {
- const { element, moddle, commandStack } = props;
-
+ const { element, moddle, commandStack, translate } = props;
const scriptUnitTestModdleElements = getScriptUnitTestModdleElements(element);
- console.log('scriptUnitTestModdleElements', scriptUnitTestModdleElements);
const items = scriptUnitTestModdleElements.map(
(scriptUnitTestModdleElement, index) => {
const id = `scriptUnitTest-${index}`;
@@ -40,115 +45,130 @@ export function ScriptUnitTestArray(props) {
element,
scriptUnitTestModdleElement,
commandStack,
+ translate,
+ }),
+ remove: removeFactory({
+ element,
+ scriptUnitTestModdleElement,
+ commandStack,
+ moddle,
}),
- // remove: removeFactory({
- // element,
- // correlationKeyElement,
- // commandStack,
- // moddle,
- // }),
autoFocusEntry: id,
};
}
);
- // function add(event) {
- // event.stopPropagation();
- // if (element.type === 'bpmn:Collaboration') {
- // const newCorrelationKeyElement = moddle.create('bpmn:CorrelationKey');
- // newCorrelationKeyElement.name =
- // moddle.ids.nextPrefixed('CorrelationKey_');
- // const currentCorrelationKeyElements =
- // element.businessObject.get('correlationKeys');
- // currentCorrelationKeyElements.push(newCorrelationKeyElement);
- // commandStack.execute('element.updateProperties', {
- // element,
- // properties: {},
- // });
- // }
- // }
+ function add(event) {
+ event.stopPropagation();
+ const scriptTaskModdleElement = element.businessObject;
+ if (!scriptTaskModdleElement.extensionElements) {
+ scriptTaskModdleElement.extensionElements =
+ scriptTaskModdleElement.$model.create('bpmn:ExtensionElements');
+ }
- console.log('items', items);
- // return { items, add };
- return { items };
+ let scriptUnitTestsModdleElement = getScriptUnitTestsModdleElement(element);
+
+ if (!scriptUnitTestsModdleElement) {
+ scriptUnitTestsModdleElement = scriptTaskModdleElement.$model.create(
+ 'spiffworkflow:unitTests'
+ );
+ scriptTaskModdleElement.extensionElements
+ .get('values')
+ .push(scriptUnitTestsModdleElement);
+ }
+ const scriptUnitTestModdleElement = scriptTaskModdleElement.$model.create(
+ 'spiffworkflow:unitTest'
+ );
+ const scriptUnitTestInputModdleElement =
+ scriptTaskModdleElement.$model.create('spiffworkflow:inputJson');
+ const scriptUnitTestOutputModdleElement =
+ scriptTaskModdleElement.$model.create('spiffworkflow:expectedOutputJson');
+ scriptUnitTestModdleElement.id = moddle.ids.nextPrefixed('ScriptUnitTest_');
+ scriptUnitTestInputModdleElement.value = '{}';
+ scriptUnitTestOutputModdleElement.value = '{}';
+ scriptUnitTestModdleElement.inputJson = scriptUnitTestInputModdleElement;
+ scriptUnitTestModdleElement.expectedOutputJson =
+ scriptUnitTestOutputModdleElement;
+ scriptUnitTestsModdleElement.unitTests.push(scriptUnitTestModdleElement);
+ commandStack.execute('element.updateProperties', {
+ element,
+ properties: {},
+ });
+ }
+
+ return { items, add };
}
-// function removeFactory(props) {
-// const { element, correlationKeyElement, moddle, commandStack } = props;
-//
-// return function (event) {
-// event.stopPropagation();
-// const currentCorrelationKeyElements =
-// element.businessObject.get('correlationKeys');
-// removeFirstInstanceOfItemFromArrayInPlace(
-// currentCorrelationKeyElements,
-// correlationKeyElement
-// );
-// commandStack.execute('element.updateProperties', {
-// element,
-// properties: {
-// correlationKey: currentCorrelationKeyElements,
-// },
-// });
-// };
-// }
-//
-// <--- The correlationGroup
-// lover_name
-// lover_instrument
-//
-//
+function removeFactory(props) {
+ const { element, scriptUnitTestModdleElement, moddle, commandStack } = props;
+
+ return function (event) {
+ event.stopPropagation();
+ const scriptUnitTestsModdleElement =
+ getScriptUnitTestsModdleElement(element);
+ removeFirstInstanceOfItemFromArrayInPlace(
+ scriptUnitTestsModdleElement.unitTests,
+ scriptUnitTestModdleElement
+ );
+ commandStack.execute('element.updateProperties', {
+ element,
+ properties: {},
+ });
+ };
+}
+
+//
+//
+// {}
+// {}
+//
+//
function scriptUnitTestGroup(props) {
- const { idPrefix, element, scriptUnitTestModdleElement, commandStack } =
- props;
- // const entries = [
- // {
- // id: `${idPrefix}-key`,
- // component: CorrelationKeyTextField,
- // scriptUnitTestModdleElement,
- // commandStack,
- // },
- // ];
- // (scriptUnitTestModdleElement.correlationPropertyRef || []).forEach(
- // (correlationProperty, index) => {
- // entries.push({
- // id: `${idPrefix}-${index}-text`,
- // component: CorrelationPropertyText,
- // correlationProperty,
- // });
- // }
- // );
- // return entries;
+ const {
+ idPrefix,
+ element,
+ scriptUnitTestModdleElement,
+ commandStack,
+ translate,
+ } = props;
return [
+ {
+ id: `${idPrefix}-id`,
+ label: translate('ID:'),
+ element,
+ component: ScriptUnitTestIdTextField,
+ scriptUnitTestModdleElement,
+ commandStack,
+ },
{
id: `${idPrefix}-input`,
+ label: translate('Input Json:'),
element,
component: ScriptUnitTestJsonTextArea,
scriptUnitTestJsonModdleElement: scriptUnitTestModdleElement.inputJson,
commandStack,
},
+ {
+ id: `${idPrefix}-expected-output`,
+ label: translate('Expected Output Json:'),
+ element,
+ component: ScriptUnitTestJsonTextArea,
+ scriptUnitTestJsonModdleElement:
+ scriptUnitTestModdleElement.expectedOutputJson,
+ commandStack,
+ },
];
}
function ScriptUnitTestJsonTextArea(props) {
- const { id, element, scriptUnitTestJsonModdleElement, commandStack } = props;
+ const { id, element, scriptUnitTestJsonModdleElement, label } = props;
const debounce = useService('debounceInput');
const setValue = (value) => {
- commandStack.execute('element.updateModdleProperties', {
- element,
- moddleElement: scriptUnitTestJsonModdleElement,
- properties: {
- name: value,
- },
- });
+ scriptUnitTestJsonModdleElement.value = value;
};
const getValue = () => {
- console.log(
- 'scriptUnitTestJsonModdleElement',
- scriptUnitTestJsonModdleElement
- );
return scriptUnitTestJsonModdleElement.value;
};
@@ -158,23 +178,35 @@ function ScriptUnitTestJsonTextArea(props) {
getValue,
setValue,
debounce,
+ label,
});
}
-// function CorrelationPropertyText(props) {
-// const { id, parameter, correlationProperty } = props;
-// const debounce = useService('debounceInput');
-//
-// const getValue = () => {
-// return correlationProperty.id;
-// };
-//
-// return SimpleEntry({
-// element: parameter,
-// id: `${id}-textField`,
-// label: correlationProperty.id,
-// getValue,
-// disabled: true,
-// debounce,
-// });
-// }
+function ScriptUnitTestIdTextField(props) {
+ const { id, element, scriptUnitTestModdleElement, label } = props;
+
+ const debounce = useService('debounceInput');
+ const commandStack = useService('commandStack');
+
+ const setValue = (value) => {
+ scriptUnitTestModdleElement.id = value;
+ commandStack.execute('element.updateModdleProperties', {
+ element,
+ moddleElement: scriptUnitTestModdleElement,
+ properties: {},
+ });
+ };
+
+ const getValue = () => {
+ return scriptUnitTestModdleElement.id;
+ };
+
+ return TextFieldEntry({
+ element,
+ id: `${id}-textArea`,
+ getValue,
+ setValue,
+ debounce,
+ label,
+ });
+}
diff --git a/app/spiffworkflow/extensions/propertiesPanel/SpiffScriptGroup.js b/app/spiffworkflow/extensions/propertiesPanel/SpiffScriptGroup.js
index 8cd78e6..80f2a90 100644
--- a/app/spiffworkflow/extensions/propertiesPanel/SpiffScriptGroup.js
+++ b/app/spiffworkflow/extensions/propertiesPanel/SpiffScriptGroup.js
@@ -123,7 +123,8 @@ export default function getEntries(
scriptType,
label,
description,
- translate
+ translate,
+ commandStack
) {
return [
{
@@ -152,6 +153,7 @@ export default function getEntries(
element,
moddle,
translate,
+ commandStack,
}),
},
];