mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2024-09-20 07:16:17 +08:00
impr(dev): add function and tests to get a message from an error
This commit is contained in:
parent
ceedf8ace2
commit
07d94a6d1c
|
@ -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);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in a new issue