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); }); });