diff --git a/spiffworkflow-frontend/src/routes/ProcessModelEditDiagram.tsx b/spiffworkflow-frontend/src/routes/ProcessModelEditDiagram.tsx
index 5f8655cc..a17d8eeb 100644
--- a/spiffworkflow-frontend/src/routes/ProcessModelEditDiagram.tsx
+++ b/spiffworkflow-frontend/src/routes/ProcessModelEditDiagram.tsx
@@ -70,10 +70,10 @@ export default function ProcessModelEditDiagram() {
interface ScriptUnitTestResult {
result: boolean;
- context: object;
- error: string;
- line_number: number;
- offset: number;
+ context?: object;
+ error?: string;
+ line_number?: number;
+ offset?: number;
}
const [currentScriptUnitTest, setCurrentScriptUnitTest] =
@@ -468,6 +468,16 @@ export default function ProcessModelEditDiagram() {
const runCurrentUnitTest = () => {
if (currentScriptUnitTest && scriptElement) {
+ let inputJson = '';
+ let expectedJson = '';
+ try {
+ inputJson = JSON.parse(currentScriptUnitTest.inputJson.value);
+ expectedJson = JSON.parse(currentScriptUnitTest.expectedOutputJson.value);
+ } catch (e) {
+ setScriptUnitTestResult({ result:false, error:"The JSON provided contains a formatting error."})
+ return;
+ }
+
resetUnitTextResult();
HttpService.makeCallToBackend({
path: `/process-models/${modifiedProcessModelId}/script-unit-tests/run`,
@@ -476,10 +486,8 @@ export default function ProcessModelEditDiagram() {
postBody: {
bpmn_task_identifier: (scriptElement as any).id,
python_script: scriptText,
- input_json: JSON.parse(currentScriptUnitTest.inputJson.value),
- expected_output_json: JSON.parse(
- currentScriptUnitTest.expectedOutputJson.value
- ),
+ input_json: inputJson,
+ expected_output_json: expectedJson
},
});
}
@@ -488,19 +496,20 @@ export default function ProcessModelEditDiagram() {
const unitTestFailureElement = () => {
if (
scriptUnitTestResult &&
- scriptUnitTestResult.result === false &&
- !scriptUnitTestResult.line_number
+ scriptUnitTestResult.result === false
) {
- let errorStringElement = null;
- if (scriptUnitTestResult.error) {
- errorStringElement = (
-
- Received error when running script:{' '}
- {JSON.stringify(scriptUnitTestResult.error)}
-
- );
+ let errorMessage = '';
+ if (scriptUnitTestResult.context) {
+ errorMessage = 'Unexpected result. Please see the comparison below.';
+ } else if (scriptUnitTestResult.line_number) {
+ errorMessage = `Error encountered running the script. Please check the code around line ${ scriptUnitTestResult.line_number}`
+ } else {
+ errorMessage = `Error encountered running the script. ${JSON.stringify(scriptUnitTestResult.error)}`
}
+ let errorStringElement = { errorMessage };
+
let errorContextElement = null;
+
if (scriptUnitTestResult.context) {
errorStringElement = (
Unexpected result. Please see the comparison below.
@@ -571,16 +580,22 @@ export default function ProcessModelEditDiagram() {
);
}
- const inputJson = JSON.stringify(
- JSON.parse(currentScriptUnitTest.inputJson.value),
- null,
- ' '
- );
- const outputJson = JSON.stringify(
- JSON.parse(currentScriptUnitTest.expectedOutputJson.value),
- null,
- ' '
- );
+ let inputJson = currentScriptUnitTest.inputJson.value;
+ let outputJson = currentScriptUnitTest.expectedOutputJson.value;
+ try {
+ inputJson = JSON.stringify(
+ JSON.parse(currentScriptUnitTest.inputJson.value),
+ null,
+ ' '
+ );
+ outputJson = JSON.stringify(
+ JSON.parse(currentScriptUnitTest.expectedOutputJson.value),
+ null,
+ ' '
+ );
+ } catch (e) {
+ // Attemping to format the json failed -- it's invalid.
+ }
return (