@ingeze/api-error
Version:
A TypeScript library for handling HTTP errors in Express, NestJS, and Fastify APIs.
54 lines (53 loc) • 2.06 kB
JavaScript
import { createHandleError } from "src/utils/create-handle-error";
import { ErrorHandler } from "src/errors/index";
describe("createHandleError", () => {
it("should create a custom error class with default values", () => {
const CustomError = createHandleError({
name: "CustomError",
statusCode: 418,
defaultType: "CUSTOM_TYPE",
defaultMessage: "Default custom error message"
});
const error = new CustomError();
expect(error).toBeInstanceOf(ErrorHandler);
expect(error).toBeInstanceOf(CustomError);
expect(error.name).toBe("CustomError");
expect(error.statusCode).toBe(418);
expect(error.type).toBe("CUSTOM_TYPE");
expect(error.message).toBe("Default custom error message");
expect(error.details).toBeUndefined();
});
it("should allow overriding message, type, and details", () => {
const CustomError = createHandleError({
name: "CustomError",
statusCode: 400,
defaultType: "OVERRIDE_TYPE",
defaultMessage: "Default message"
});
const error = new CustomError("Overridden message", "OVERRIDE_TYPE", { foo: "bar" });
expect(error.message).toBe("Overridden message");
expect(error.type).toBe("OVERRIDE_TYPE");
expect(error.details).toEqual({ foo: "bar" });
});
it("should use default message if none is provided", () => {
const CustomError = createHandleError({
name: "CustomError",
statusCode: 400,
defaultType: "CUSTOM_TYPE",
defaultMessage: "Default message"
});
const error = new CustomError(void 0, void 0, { test: 123 });
expect(error.message).toBe("Default message");
expect(error.details).toEqual({ test: 123 });
});
it('should use "An error ocurred" if no defaultMessage is provided', () => {
const CustomError = createHandleError({
name: "CustomError",
statusCode: 400,
defaultType: "CUSTOM_TYPE"
});
const error = new CustomError();
expect(error.message).toBe("An error ocurred");
});
});
//# sourceMappingURL=create-handle-error.test.js.map