Error handling robustness

Cleanup of some things I missed yesterday...
This commit is contained in:
Matt Visnovsky
2024-06-07 16:35:06 -06:00
parent fdc145bffd
commit 23f844d871
3 changed files with 77 additions and 78 deletions

View File

@@ -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}`);
catch (err) {
throw new Error(`Error evaluating JSON query: ${err.message}. Response from server was: ${response}`);
}
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.");
}
return {
status,
response
};
}
exports.evaluateJsonQuery = evaluateJsonQuery;