Files
suaveplan/packages/api-stack/api/api-openapi-ui-scalar/src/error-codes/error-codes.test.ts
2026-05-27 23:29:53 +01:00

43 lines
1.5 KiB
TypeScript

import { describe, expect, it } from "@suaveplan/testing/runner";
import {
OPENAPI_UI_SCALAR_CODES,
OpenapiUiScalarError,
} from "./error-codes.js";
describe("OPENAPI_UI_SCALAR codes", () => {
it("exposes the three stable codes", { timeout: 5000 }, () => {
expect(OPENAPI_UI_SCALAR_CODES.ASSETS_MISSING).toBe(
"OPENAPI_UI_SCALAR.ASSETS_MISSING"
);
expect(OPENAPI_UI_SCALAR_CODES.INVALID_OPTIONS).toBe(
"OPENAPI_UI_SCALAR.INVALID_OPTIONS"
);
expect(OPENAPI_UI_SCALAR_CODES.ASSET_NOT_REGISTERED).toBe(
"OPENAPI_UI_SCALAR.ASSET_NOT_REGISTERED"
);
});
it("error carries the code in both fields", { timeout: 5000 }, () => {
const err = new OpenapiUiScalarError(
OPENAPI_UI_SCALAR_CODES.ASSETS_MISSING,
"missing",
{ context: { mode: "bundled" } }
);
expect(err).toBeInstanceOf(OpenapiUiScalarError);
expect(err.code).toBe(OPENAPI_UI_SCALAR_CODES.ASSETS_MISSING);
expect(err.scalarCode).toBe(OPENAPI_UI_SCALAR_CODES.ASSETS_MISSING);
expect(err.name).toBe("OpenapiUiScalarError");
expect(err.context?.mode).toBe("bundled");
});
it("supports the cause chain on the shared base", { timeout: 5000 }, () => {
const root = new Error("root");
const err = new OpenapiUiScalarError(
OPENAPI_UI_SCALAR_CODES.INVALID_OPTIONS,
"boom",
{ cause: root }
);
expect(err.cause).toBe(root);
});
});