diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue
index 5f64c4c96..ce4b2300f 100644
--- a/src/pages/EditMonitor.vue
+++ b/src/pages/EditMonitor.vue
@@ -301,7 +301,7 @@
-
+
diff --git a/src/util.js b/src/util.js
index 0a576a9a4..ca09bdbc7 100644
--- a/src/util.js
+++ b/src/util.js
@@ -405,43 +405,43 @@ async function evaluateJsonQuery(data, jsonPath, jsonPathOperator, expectedValue
catch (_a) {
response = typeof data === "number" || typeof data === "object" ? data : data.toString();
}
- if (jsonPath && typeof data === "object") {
- try {
- response = await jsonata(jsonPath).evaluate(response);
+ try {
+ response = (jsonPath) ? await jsonata(jsonPath).evaluate(response) : response;
+ let jsonQueryExpression;
+ switch (jsonPathOperator) {
+ case ">":
+ case ">=":
+ case "<":
+ case "<=":
+ jsonQueryExpression = `$.value ${jsonPathOperator} $.expected`;
+ break;
+ case "!=":
+ jsonQueryExpression = "$string($.value) != $string($.expected)";
+ break;
+ case "==":
+ jsonQueryExpression = "$string($.value) = $string($.expected)";
+ break;
+ case "contains":
+ jsonQueryExpression = "$contains($string($.value), $string($.expected))";
+ break;
+ default:
+ throw new Error(`Invalid condition ${jsonPathOperator}`);
}
- catch (err) {
- throw new Error(`Error evaluating JSON query: ${err.message}`);
+ const expression = jsonata(jsonQueryExpression);
+ const status = await expression.evaluate({
+ value: response,
+ expected: expectedValue
+ });
+ if (response === undefined || status === undefined) {
+ throw new Error("Query evaluation returned undefined. Check query syntax and the structure of the response data");
}
+ return {
+ status,
+ response
+ };
}
- let jsonQueryExpression;
- switch (jsonPathOperator) {
- case ">":
- case ">=":
- case "<":
- case "<=":
- case "!=":
- jsonQueryExpression = `$.value ${jsonPathOperator} $.expected`;
- break;
- case "==":
- jsonQueryExpression = "$string($.value) = $string($.expected)";
- break;
- case "contains":
- jsonQueryExpression = "$contains($string($.value), $string($.expected))";
- break;
- default:
- throw new Error(`Invalid condition ${jsonPathOperator}`);
- }
- const expression = jsonata(jsonQueryExpression);
- const status = await expression.evaluate({
- value: response.toString(),
- expected: expectedValue.toString()
- });
- if (response === undefined || status === undefined) {
- throw new Error("Query evaluation returned undefined. Check your query syntax and the structure of the response data.");
+ catch (err) {
+ throw new Error(`Error evaluating JSON query: ${err.message}. Response from server was: ${response}`);
}
- return {
- status,
- response
- };
}
exports.evaluateJsonQuery = evaluateJsonQuery;
diff --git a/src/util.ts b/src/util.ts
index 94765f187..751424dbd 100644
--- a/src/util.ts
+++ b/src/util.ts
@@ -663,49 +663,48 @@ export async function evaluateJsonQuery(data: any, jsonPath: string, jsonPathOpe
response = typeof data === "number" || typeof data === "object" ? data : data.toString();
}
- // If a JSON path is provided, pre-evaluate the data using it.
- if (jsonPath && typeof data === "object") {
- try {
- response = await jsonata(jsonPath).evaluate(response);
- } catch (err: any) {
- throw new Error(`Error evaluating JSON query: ${err.message}`);
+ try {
+ // If a JSON path is provided, pre-evaluate the data using it.
+ response = (jsonPath) ? await jsonata(jsonPath).evaluate(response) : response;
+
+ // Perform the comparison logic using the chosen operator
+ let jsonQueryExpression;
+ switch (jsonPathOperator) {
+ case ">":
+ case ">=":
+ case "<":
+ case "<=":
+ jsonQueryExpression = `$.value ${jsonPathOperator} $.expected`;
+ break;
+ case "!=":
+ jsonQueryExpression = "$string($.value) != $string($.expected)";
+ break;
+ case "==":
+ jsonQueryExpression = "$string($.value) = $string($.expected)";
+ break;
+ case "contains":
+ jsonQueryExpression = "$contains($string($.value), $string($.expected))";
+ break;
+ default:
+ throw new Error(`Invalid condition ${jsonPathOperator}`);
}
- }
- // Perform the comparison logic using the chosen operator
- // Perform the comparison logic using the chosen operator
- let jsonQueryExpression;
- switch (jsonPathOperator) {
- case ">":
- case ">=":
- case "<":
- case "<=":
- case "!=":
- jsonQueryExpression = `$.value ${jsonPathOperator} $.expected`;
- break;
- case "==":
- jsonQueryExpression = "$string($.value) = $string($.expected)";
- break;
- case "contains":
- jsonQueryExpression = "$contains($string($.value), $string($.expected))";
- break;
- default:
- throw new Error(`Invalid condition ${jsonPathOperator}`);
- }
+ // Evaluate the JSON Query Expression
+ const expression = jsonata(jsonQueryExpression);
+ const status = await expression.evaluate({
+ value: response,
+ expected: expectedValue
+ });
- // Evaluate the JSON Query Expression
- const expression = jsonata(jsonQueryExpression);
- const status = await expression.evaluate({
- value: response.toString(),
- expected: expectedValue.toString()
- });
+ if (response === undefined || status === undefined) {
+ throw new Error("Query evaluation returned undefined. Check query syntax and the structure of the response data");
+ }
- if (response === undefined || status === undefined) {
- throw new Error("Query evaluation returned undefined. Check your query syntax and the structure of the response data.");
+ return {
+ status, // The evaluation of the json query
+ response // The response from the server or result from initial json-query evaluation
+ };
+ } catch (err: any) {
+ throw new Error(`Error evaluating JSON query: ${err.message}. Response from server was: ${response}`);
}
-
- return {
- status, // The evaluation of the json query
- response // The response from the server or result from initial json-query evaluation
- };
}