unit tests can be added and deleted from script tasks w/ burnettk
This commit is contained in:
parent
58e3e7c158
commit
9926fb900f
|
@ -21,7 +21,9 @@ export default function ExtensionsPropertiesProvider(
|
||||||
this.getGroups = function (element) {
|
this.getGroups = function (element) {
|
||||||
return function (groups) {
|
return function (groups) {
|
||||||
if (is(element, 'bpmn:ScriptTask')) {
|
if (is(element, 'bpmn:ScriptTask')) {
|
||||||
groups.push(createScriptGroup(element, translate, moddle));
|
groups.push(
|
||||||
|
createScriptGroup(element, translate, moddle, commandStack)
|
||||||
|
);
|
||||||
} else if (
|
} else if (
|
||||||
isAny(element, ['bpmn:Task', 'bpmn:CallActivity', 'bpmn:SubProcess'])
|
isAny(element, ['bpmn:Task', 'bpmn:CallActivity', 'bpmn:SubProcess'])
|
||||||
) {
|
) {
|
||||||
|
@ -81,7 +83,8 @@ function createScriptGroup(element, translate, moddle, commandStack) {
|
||||||
SCRIPT_TYPE.bpmn,
|
SCRIPT_TYPE.bpmn,
|
||||||
'Script',
|
'Script',
|
||||||
'Code to execute.',
|
'Code to execute.',
|
||||||
translate
|
translate,
|
||||||
|
commandStack
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +1,29 @@
|
||||||
import { useService } from 'bpmn-js-properties-panel';
|
import { useService } from 'bpmn-js-properties-panel';
|
||||||
import { TextAreaEntry } from '@bpmn-io/properties-panel';
|
import { TextFieldEntry, TextAreaEntry } from '@bpmn-io/properties-panel';
|
||||||
// import { findCorrelationKeys, getRoot } from '../MessageHelpers';
|
import { removeFirstInstanceOfItemFromArrayInPlace } from '../../helpers';
|
||||||
// import { removeFirstInstanceOfItemFromArrayInPlace } from '../../helpers';
|
|
||||||
|
|
||||||
const getScriptUnitTestModdleElements = (shapeElement) => {
|
const getScriptUnitTestsModdleElement = (shapeElement) => {
|
||||||
const bizObj = shapeElement.businessObject;
|
const bizObj = shapeElement.businessObject;
|
||||||
if (!bizObj.extensionElements) {
|
if (!bizObj.extensionElements) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (!bizObj.extensionElements.values) {
|
if (!bizObj.extensionElements.values) {
|
||||||
return [];
|
return null;
|
||||||
}
|
}
|
||||||
const unitTestsModdleElement = bizObj.extensionElements
|
return bizObj.extensionElements
|
||||||
.get('values')
|
.get('values')
|
||||||
.filter(function getInstanceOfType(e) {
|
.filter(function getInstanceOfType(e) {
|
||||||
return e.$instanceOf('spiffworkflow:unitTests');
|
return e.$instanceOf('spiffworkflow:unitTests');
|
||||||
})[0];
|
})[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
|
* @constructor
|
||||||
*/
|
*/
|
||||||
export function ScriptUnitTestArray(props) {
|
export function ScriptUnitTestArray(props) {
|
||||||
const { element, moddle, commandStack } = props;
|
const { element, moddle, commandStack, translate } = props;
|
||||||
|
|
||||||
const scriptUnitTestModdleElements = getScriptUnitTestModdleElements(element);
|
const scriptUnitTestModdleElements = getScriptUnitTestModdleElements(element);
|
||||||
console.log('scriptUnitTestModdleElements', scriptUnitTestModdleElements);
|
|
||||||
const items = scriptUnitTestModdleElements.map(
|
const items = scriptUnitTestModdleElements.map(
|
||||||
(scriptUnitTestModdleElement, index) => {
|
(scriptUnitTestModdleElement, index) => {
|
||||||
const id = `scriptUnitTest-${index}`;
|
const id = `scriptUnitTest-${index}`;
|
||||||
|
@ -40,115 +45,130 @@ export function ScriptUnitTestArray(props) {
|
||||||
element,
|
element,
|
||||||
scriptUnitTestModdleElement,
|
scriptUnitTestModdleElement,
|
||||||
commandStack,
|
commandStack,
|
||||||
|
translate,
|
||||||
|
}),
|
||||||
|
remove: removeFactory({
|
||||||
|
element,
|
||||||
|
scriptUnitTestModdleElement,
|
||||||
|
commandStack,
|
||||||
|
moddle,
|
||||||
}),
|
}),
|
||||||
// remove: removeFactory({
|
|
||||||
// element,
|
|
||||||
// correlationKeyElement,
|
|
||||||
// commandStack,
|
|
||||||
// moddle,
|
|
||||||
// }),
|
|
||||||
autoFocusEntry: id,
|
autoFocusEntry: id,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
// function add(event) {
|
function add(event) {
|
||||||
// event.stopPropagation();
|
event.stopPropagation();
|
||||||
// if (element.type === 'bpmn:Collaboration') {
|
const scriptTaskModdleElement = element.businessObject;
|
||||||
// const newCorrelationKeyElement = moddle.create('bpmn:CorrelationKey');
|
if (!scriptTaskModdleElement.extensionElements) {
|
||||||
// newCorrelationKeyElement.name =
|
scriptTaskModdleElement.extensionElements =
|
||||||
// moddle.ids.nextPrefixed('CorrelationKey_');
|
scriptTaskModdleElement.$model.create('bpmn:ExtensionElements');
|
||||||
// const currentCorrelationKeyElements =
|
}
|
||||||
// element.businessObject.get('correlationKeys');
|
|
||||||
// currentCorrelationKeyElements.push(newCorrelationKeyElement);
|
|
||||||
// commandStack.execute('element.updateProperties', {
|
|
||||||
// element,
|
|
||||||
// properties: {},
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
console.log('items', items);
|
let scriptUnitTestsModdleElement = getScriptUnitTestsModdleElement(element);
|
||||||
// return { items, add };
|
|
||||||
return { items };
|
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) {
|
function removeFactory(props) {
|
||||||
// const { element, correlationKeyElement, moddle, commandStack } = props;
|
const { element, scriptUnitTestModdleElement, moddle, commandStack } = props;
|
||||||
//
|
|
||||||
// return function (event) {
|
return function (event) {
|
||||||
// event.stopPropagation();
|
event.stopPropagation();
|
||||||
// const currentCorrelationKeyElements =
|
const scriptUnitTestsModdleElement =
|
||||||
// element.businessObject.get('correlationKeys');
|
getScriptUnitTestsModdleElement(element);
|
||||||
// removeFirstInstanceOfItemFromArrayInPlace(
|
removeFirstInstanceOfItemFromArrayInPlace(
|
||||||
// currentCorrelationKeyElements,
|
scriptUnitTestsModdleElement.unitTests,
|
||||||
// correlationKeyElement
|
scriptUnitTestModdleElement
|
||||||
// );
|
);
|
||||||
// commandStack.execute('element.updateProperties', {
|
commandStack.execute('element.updateProperties', {
|
||||||
// element,
|
element,
|
||||||
// properties: {
|
properties: {},
|
||||||
// correlationKey: currentCorrelationKeyElements,
|
});
|
||||||
// },
|
};
|
||||||
// });
|
}
|
||||||
// };
|
|
||||||
// }
|
// <spiffworkflow:unitTests>
|
||||||
//
|
// <spiffworkflow:unitTest id="test1">
|
||||||
// <bpmn:correlationKey name="lover"> <--- The correlationGroup
|
// <spiffworkflow:inputJson>{}</spiffworkflow:inputJson>
|
||||||
// <bpmn:correlationPropertyRef>lover_name</bpmn:correlationPropertyRef>
|
// <spiffworkflow:expectedOutputJson>{}</spiffworkflow:expectedOutputJson>
|
||||||
// <bpmn:correlationPropertyRef>lover_instrument</bpmn:correlationPropertyRef>
|
// </spiffworkflow:unitTest>
|
||||||
// </bpmn:correlationKey>
|
// </spiffworkflow:unitTests>
|
||||||
// <bpmn:correlationKey name="singer" />
|
|
||||||
function scriptUnitTestGroup(props) {
|
function scriptUnitTestGroup(props) {
|
||||||
const { idPrefix, element, scriptUnitTestModdleElement, commandStack } =
|
const {
|
||||||
props;
|
idPrefix,
|
||||||
// const entries = [
|
element,
|
||||||
// {
|
scriptUnitTestModdleElement,
|
||||||
// id: `${idPrefix}-key`,
|
commandStack,
|
||||||
// component: CorrelationKeyTextField,
|
translate,
|
||||||
// scriptUnitTestModdleElement,
|
} = props;
|
||||||
// commandStack,
|
|
||||||
// },
|
|
||||||
// ];
|
|
||||||
// (scriptUnitTestModdleElement.correlationPropertyRef || []).forEach(
|
|
||||||
// (correlationProperty, index) => {
|
|
||||||
// entries.push({
|
|
||||||
// id: `${idPrefix}-${index}-text`,
|
|
||||||
// component: CorrelationPropertyText,
|
|
||||||
// correlationProperty,
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
// );
|
|
||||||
// return entries;
|
|
||||||
return [
|
return [
|
||||||
|
{
|
||||||
|
id: `${idPrefix}-id`,
|
||||||
|
label: translate('ID:'),
|
||||||
|
element,
|
||||||
|
component: ScriptUnitTestIdTextField,
|
||||||
|
scriptUnitTestModdleElement,
|
||||||
|
commandStack,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: `${idPrefix}-input`,
|
id: `${idPrefix}-input`,
|
||||||
|
label: translate('Input Json:'),
|
||||||
element,
|
element,
|
||||||
component: ScriptUnitTestJsonTextArea,
|
component: ScriptUnitTestJsonTextArea,
|
||||||
scriptUnitTestJsonModdleElement: scriptUnitTestModdleElement.inputJson,
|
scriptUnitTestJsonModdleElement: scriptUnitTestModdleElement.inputJson,
|
||||||
commandStack,
|
commandStack,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: `${idPrefix}-expected-output`,
|
||||||
|
label: translate('Expected Output Json:'),
|
||||||
|
element,
|
||||||
|
component: ScriptUnitTestJsonTextArea,
|
||||||
|
scriptUnitTestJsonModdleElement:
|
||||||
|
scriptUnitTestModdleElement.expectedOutputJson,
|
||||||
|
commandStack,
|
||||||
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
function ScriptUnitTestJsonTextArea(props) {
|
function ScriptUnitTestJsonTextArea(props) {
|
||||||
const { id, element, scriptUnitTestJsonModdleElement, commandStack } = props;
|
const { id, element, scriptUnitTestJsonModdleElement, label } = props;
|
||||||
|
|
||||||
const debounce = useService('debounceInput');
|
const debounce = useService('debounceInput');
|
||||||
const setValue = (value) => {
|
const setValue = (value) => {
|
||||||
commandStack.execute('element.updateModdleProperties', {
|
scriptUnitTestJsonModdleElement.value = value;
|
||||||
element,
|
|
||||||
moddleElement: scriptUnitTestJsonModdleElement,
|
|
||||||
properties: {
|
|
||||||
name: value,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const getValue = () => {
|
const getValue = () => {
|
||||||
console.log(
|
|
||||||
'scriptUnitTestJsonModdleElement',
|
|
||||||
scriptUnitTestJsonModdleElement
|
|
||||||
);
|
|
||||||
return scriptUnitTestJsonModdleElement.value;
|
return scriptUnitTestJsonModdleElement.value;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -158,23 +178,35 @@ function ScriptUnitTestJsonTextArea(props) {
|
||||||
getValue,
|
getValue,
|
||||||
setValue,
|
setValue,
|
||||||
debounce,
|
debounce,
|
||||||
|
label,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// function CorrelationPropertyText(props) {
|
function ScriptUnitTestIdTextField(props) {
|
||||||
// const { id, parameter, correlationProperty } = props;
|
const { id, element, scriptUnitTestModdleElement, label } = props;
|
||||||
// const debounce = useService('debounceInput');
|
|
||||||
//
|
const debounce = useService('debounceInput');
|
||||||
// const getValue = () => {
|
const commandStack = useService('commandStack');
|
||||||
// return correlationProperty.id;
|
|
||||||
// };
|
const setValue = (value) => {
|
||||||
//
|
scriptUnitTestModdleElement.id = value;
|
||||||
// return SimpleEntry({
|
commandStack.execute('element.updateModdleProperties', {
|
||||||
// element: parameter,
|
element,
|
||||||
// id: `${id}-textField`,
|
moddleElement: scriptUnitTestModdleElement,
|
||||||
// label: correlationProperty.id,
|
properties: {},
|
||||||
// getValue,
|
});
|
||||||
// disabled: true,
|
};
|
||||||
// debounce,
|
|
||||||
// });
|
const getValue = () => {
|
||||||
// }
|
return scriptUnitTestModdleElement.id;
|
||||||
|
};
|
||||||
|
|
||||||
|
return TextFieldEntry({
|
||||||
|
element,
|
||||||
|
id: `${id}-textArea`,
|
||||||
|
getValue,
|
||||||
|
setValue,
|
||||||
|
debounce,
|
||||||
|
label,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
|
@ -123,7 +123,8 @@ export default function getEntries(
|
||||||
scriptType,
|
scriptType,
|
||||||
label,
|
label,
|
||||||
description,
|
description,
|
||||||
translate
|
translate,
|
||||||
|
commandStack
|
||||||
) {
|
) {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
|
@ -152,6 +153,7 @@ export default function getEntries(
|
||||||
element,
|
element,
|
||||||
moddle,
|
moddle,
|
||||||
translate,
|
translate,
|
||||||
|
commandStack,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
Loading…
Reference in New Issue