From 270708b2b8394e25e8f7f739e348f906c20cf23b Mon Sep 17 00:00:00 2001 From: jasquat Date: Wed, 28 Sep 2022 10:48:55 -0400 Subject: [PATCH] added feedback to script unit tests --- src/routes/ProcessModelEditDiagram.tsx | 65 ++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 5 deletions(-) diff --git a/src/routes/ProcessModelEditDiagram.tsx b/src/routes/ProcessModelEditDiagram.tsx index 00f8a65..5bcf5cf 100644 --- a/src/routes/ProcessModelEditDiagram.tsx +++ b/src/routes/ProcessModelEditDiagram.tsx @@ -35,6 +35,12 @@ export default function ProcessModelEditDiagram() { const [unitTestResultBool, setUnitTestResultBool] = useState( null ); + const [unitTestResultContext, setUnitTestResultContext] = useState< + object | null + >(null); + const [unitTestResultErrorString, setUnitTestResultErrorString] = useState< + string | null + >(null); const params = useParams(); const navigate = useNavigate(); @@ -166,13 +172,20 @@ export default function ProcessModelEditDiagram() { ); }; - function makeApiHandler(event: any) { + + const resetUnitTextResult = () => { + setUnitTestResultBool(null); + setUnitTestResultContext(null); + setUnitTestResultErrorString(null); + }; + + const makeApiHandler = (event: any) => { return function fireEvent(results: any) { event.eventBus.fire('spiff.service_tasks.returned', { serviceTaskOperators: results, }); }; - } + }; const onServiceTasksRequested = (event: any) => { HttpService.makeCallToBackend({ @@ -195,6 +208,7 @@ export default function ProcessModelEditDiagram() { } return []; }; + const setScriptUnitTestElementWithIndex = ( scriptIndex: number, element: any = scriptElement @@ -205,6 +219,7 @@ export default function ProcessModelEditDiagram() { setCurrentScriptUnitTestIndex(scriptIndex); } }; + const onLaunchScriptEditor = (element: any, modeling: any) => { setScriptText(element.businessObject.script || ''); setScriptModeling(modeling); @@ -212,10 +227,12 @@ export default function ProcessModelEditDiagram() { setScriptUnitTestElementWithIndex(0, element); handleShowScriptEditor(); }; + const handleScriptEditorClose = () => { - setUnitTestResultBool(null); + resetUnitTextResult(); setShowScriptEditor(false); }; + const handleEditorScriptChange = (value: any) => { setScriptText(value); (scriptModeling as any).updateProperties(scriptElement, { @@ -223,12 +240,14 @@ export default function ProcessModelEditDiagram() { script: value, }); }; + const handleEditorScriptTestUnitInputChange = (value: any) => { if (currentScriptUnitTest) { currentScriptUnitTest.inputJson.value = value; (scriptModeling as any).updateProperties(scriptElement, {}); } }; + const handleEditorScriptTestUnitOutputChange = (value: any) => { if (currentScriptUnitTest) { currentScriptUnitTest.expectedOutputJson.value = value; @@ -243,15 +262,17 @@ export default function ProcessModelEditDiagram() { lineNumbersMinChars: 0, }; }; + const setPreviousScriptUnitTest = () => { - setUnitTestResultBool(null); + resetUnitTextResult(); const newScriptIndex = currentScriptUnitTestIndex - 1; if (newScriptIndex >= 0) { setScriptUnitTestElementWithIndex(newScriptIndex); } }; + const setNextScriptUnitTest = () => { - setUnitTestResultBool(null); + resetUnitTextResult(); const newScriptIndex = currentScriptUnitTestIndex + 1; const unitTestsModdleElements = getScriptUnitTestElements(scriptElement); if (newScriptIndex < unitTestsModdleElements.length) { @@ -263,9 +284,12 @@ export default function ProcessModelEditDiagram() { if (result.result === true) { setUnitTestResultBool(true); } else { + setUnitTestResultContext(result.context); + setUnitTestResultErrorString(result.error); setUnitTestResultBool(false); } }; + const runCurrentUnitTest = () => { if (currentScriptUnitTest && scriptElement) { HttpService.makeCallToBackend({ @@ -279,6 +303,33 @@ export default function ProcessModelEditDiagram() { }); } }; + + const unitTestFailureElement = () => { + let errorStringElement = null; + if (unitTestResultErrorString) { + errorStringElement = ( + + Received error when running script:{' '} + {JSON.stringify(unitTestResultErrorString)} + + ); + } + let errorContextElement = null; + if (unitTestResultContext) { + errorContextElement = ( + + Received unexpected output: {JSON.stringify(unitTestResultContext)} + + ); + } + return ( + + {errorStringElement} + {errorContextElement} + + ); + }; + const scriptUnitTestEditorElement = () => { if (currentScriptUnitTest) { let previousButtonDisable = true; @@ -348,6 +399,9 @@ export default function ProcessModelEditDiagram() { + + {unitTestFailureElement()} +
Input Json:
@@ -383,6 +437,7 @@ export default function ProcessModelEditDiagram() { } return null; }; + const scriptEditor = () => { let scriptName = ''; if (scriptElement) {