impr(dev): add function and tests to get a message from an error

This commit is contained in:
Miodec 2024-09-13 17:08:42 +02:00
parent ceedf8ace2
commit 07d94a6d1c
2 changed files with 85 additions and 11 deletions

View file

@ -1,4 +1,4 @@
import { deepClone, isObject } from "../../src/ts/utils/misc";
import { deepClone, getErrorMessage, isObject } from "../../src/ts/utils/misc";
import {
getLanguageDisplayString,
removeLanguageSize,
@ -169,4 +169,59 @@ describe("misc.ts", () => {
});
});
});
describe("getErrorMesssage", () => {
it("should correctly get the error message", () => {
const tests = [
{
input: null,
expected: undefined,
},
{
input: undefined,
expected: undefined,
},
{
input: "",
expected: undefined,
},
{
input: {},
expected: undefined,
},
{
input: "error message",
expected: "error message",
},
{
input: 1,
expected: "1",
},
{
input: { message: "error message" },
expected: "error message",
},
{
input: { message: 1 },
expected: "1",
},
{
input: { message: "" },
expected: undefined,
},
{
input: { message: {} },
expected: undefined,
},
{
input: new Error("error message"),
expected: "error message",
},
];
tests.forEach((test) => {
const result = getErrorMessage(test.input);
expect(result).toBe(test.expected);
});
});
});
});

View file

@ -484,21 +484,40 @@ export async function downloadResultsCSV(
Loader.hide();
}
export function createErrorMessage(error: unknown, message: string): string {
export function getErrorMessage(error: unknown): string | undefined {
let message = "";
if (error instanceof Error) {
return `${message}: ${error.message}`;
message = error.message;
} else if (
error !== null &&
typeof error === "object" &&
"message" in error &&
(typeof error.message === "string" || typeof error.message === "number")
) {
message = `${error.message}`;
} else if (typeof error === "string") {
message = error;
} else if (typeof error === "number") {
message = `${error}`;
}
if (error instanceof Object && "message" in error) {
const objectWithMessage = error as { message?: string };
if (objectWithMessage?.message !== undefined) {
return `${message}: ${objectWithMessage.message}`;
}
if (message === "") {
return undefined;
}
console.error("Unknown error", error);
return `${message}: Unknown error`;
return message;
}
export function createErrorMessage(error: unknown, message: string): string {
const errorMessage = getErrorMessage(error);
if (errorMessage === undefined) {
console.error("Could not get error message from error", error);
return `${message}: Unknown error`;
}
return `${message}: ${errorMessage}`;
}
export function isElementVisible(query: string): boolean {