added feedback to script unit tests

This commit is contained in:
jasquat 2022-09-28 10:48:55 -04:00
parent 813ca7a112
commit 270708b2b8

View File

@ -35,6 +35,12 @@ export default function ProcessModelEditDiagram() {
const [unitTestResultBool, setUnitTestResultBool] = useState<boolean | null>( const [unitTestResultBool, setUnitTestResultBool] = useState<boolean | null>(
null null
); );
const [unitTestResultContext, setUnitTestResultContext] = useState<
object | null
>(null);
const [unitTestResultErrorString, setUnitTestResultErrorString] = useState<
string | null
>(null);
const params = useParams(); const params = useParams();
const navigate = useNavigate(); const navigate = useNavigate();
@ -166,13 +172,20 @@ export default function ProcessModelEditDiagram() {
</Modal> </Modal>
); );
}; };
function makeApiHandler(event: any) {
const resetUnitTextResult = () => {
setUnitTestResultBool(null);
setUnitTestResultContext(null);
setUnitTestResultErrorString(null);
};
const makeApiHandler = (event: any) => {
return function fireEvent(results: any) { return function fireEvent(results: any) {
event.eventBus.fire('spiff.service_tasks.returned', { event.eventBus.fire('spiff.service_tasks.returned', {
serviceTaskOperators: results, serviceTaskOperators: results,
}); });
}; };
} };
const onServiceTasksRequested = (event: any) => { const onServiceTasksRequested = (event: any) => {
HttpService.makeCallToBackend({ HttpService.makeCallToBackend({
@ -195,6 +208,7 @@ export default function ProcessModelEditDiagram() {
} }
return []; return [];
}; };
const setScriptUnitTestElementWithIndex = ( const setScriptUnitTestElementWithIndex = (
scriptIndex: number, scriptIndex: number,
element: any = scriptElement element: any = scriptElement
@ -205,6 +219,7 @@ export default function ProcessModelEditDiagram() {
setCurrentScriptUnitTestIndex(scriptIndex); setCurrentScriptUnitTestIndex(scriptIndex);
} }
}; };
const onLaunchScriptEditor = (element: any, modeling: any) => { const onLaunchScriptEditor = (element: any, modeling: any) => {
setScriptText(element.businessObject.script || ''); setScriptText(element.businessObject.script || '');
setScriptModeling(modeling); setScriptModeling(modeling);
@ -212,10 +227,12 @@ export default function ProcessModelEditDiagram() {
setScriptUnitTestElementWithIndex(0, element); setScriptUnitTestElementWithIndex(0, element);
handleShowScriptEditor(); handleShowScriptEditor();
}; };
const handleScriptEditorClose = () => { const handleScriptEditorClose = () => {
setUnitTestResultBool(null); resetUnitTextResult();
setShowScriptEditor(false); setShowScriptEditor(false);
}; };
const handleEditorScriptChange = (value: any) => { const handleEditorScriptChange = (value: any) => {
setScriptText(value); setScriptText(value);
(scriptModeling as any).updateProperties(scriptElement, { (scriptModeling as any).updateProperties(scriptElement, {
@ -223,12 +240,14 @@ export default function ProcessModelEditDiagram() {
script: value, script: value,
}); });
}; };
const handleEditorScriptTestUnitInputChange = (value: any) => { const handleEditorScriptTestUnitInputChange = (value: any) => {
if (currentScriptUnitTest) { if (currentScriptUnitTest) {
currentScriptUnitTest.inputJson.value = value; currentScriptUnitTest.inputJson.value = value;
(scriptModeling as any).updateProperties(scriptElement, {}); (scriptModeling as any).updateProperties(scriptElement, {});
} }
}; };
const handleEditorScriptTestUnitOutputChange = (value: any) => { const handleEditorScriptTestUnitOutputChange = (value: any) => {
if (currentScriptUnitTest) { if (currentScriptUnitTest) {
currentScriptUnitTest.expectedOutputJson.value = value; currentScriptUnitTest.expectedOutputJson.value = value;
@ -243,15 +262,17 @@ export default function ProcessModelEditDiagram() {
lineNumbersMinChars: 0, lineNumbersMinChars: 0,
}; };
}; };
const setPreviousScriptUnitTest = () => { const setPreviousScriptUnitTest = () => {
setUnitTestResultBool(null); resetUnitTextResult();
const newScriptIndex = currentScriptUnitTestIndex - 1; const newScriptIndex = currentScriptUnitTestIndex - 1;
if (newScriptIndex >= 0) { if (newScriptIndex >= 0) {
setScriptUnitTestElementWithIndex(newScriptIndex); setScriptUnitTestElementWithIndex(newScriptIndex);
} }
}; };
const setNextScriptUnitTest = () => { const setNextScriptUnitTest = () => {
setUnitTestResultBool(null); resetUnitTextResult();
const newScriptIndex = currentScriptUnitTestIndex + 1; const newScriptIndex = currentScriptUnitTestIndex + 1;
const unitTestsModdleElements = getScriptUnitTestElements(scriptElement); const unitTestsModdleElements = getScriptUnitTestElements(scriptElement);
if (newScriptIndex < unitTestsModdleElements.length) { if (newScriptIndex < unitTestsModdleElements.length) {
@ -263,9 +284,12 @@ export default function ProcessModelEditDiagram() {
if (result.result === true) { if (result.result === true) {
setUnitTestResultBool(true); setUnitTestResultBool(true);
} else { } else {
setUnitTestResultContext(result.context);
setUnitTestResultErrorString(result.error);
setUnitTestResultBool(false); setUnitTestResultBool(false);
} }
}; };
const runCurrentUnitTest = () => { const runCurrentUnitTest = () => {
if (currentScriptUnitTest && scriptElement) { if (currentScriptUnitTest && scriptElement) {
HttpService.makeCallToBackend({ HttpService.makeCallToBackend({
@ -279,6 +303,33 @@ export default function ProcessModelEditDiagram() {
}); });
} }
}; };
const unitTestFailureElement = () => {
let errorStringElement = null;
if (unitTestResultErrorString) {
errorStringElement = (
<span>
Received error when running script:{' '}
{JSON.stringify(unitTestResultErrorString)}
</span>
);
}
let errorContextElement = null;
if (unitTestResultContext) {
errorContextElement = (
<span>
Received unexpected output: {JSON.stringify(unitTestResultContext)}
</span>
);
}
return (
<span style={{ color: 'red', fontSize: '1em' }}>
{errorStringElement}
{errorContextElement}
</span>
);
};
const scriptUnitTestEditorElement = () => { const scriptUnitTestEditorElement = () => {
if (currentScriptUnitTest) { if (currentScriptUnitTest) {
let previousButtonDisable = true; let previousButtonDisable = true;
@ -348,6 +399,9 @@ export default function ProcessModelEditDiagram() {
</Col> </Col>
</Row> </Row>
</Container> </Container>
<Stack direction="horizontal" gap={3}>
{unitTestFailureElement()}
</Stack>
<Stack direction="horizontal" gap={3}> <Stack direction="horizontal" gap={3}>
<Stack> <Stack>
<div>Input Json:</div> <div>Input Json:</div>
@ -383,6 +437,7 @@ export default function ProcessModelEditDiagram() {
} }
return null; return null;
}; };
const scriptEditor = () => { const scriptEditor = () => {
let scriptName = ''; let scriptName = '';
if (scriptElement) { if (scriptElement) {