const { test } = require("node:test"); const assert = require("node:assert"); const builtins = require("../lib/builtins"); const { compileTheme } = require("../lib/compile"); const { normalizeTokens } = require("../lib/themeSchema"); test("listBuiltins returns frozen starters with namespaced ids", () => { const list = builtins.listBuiltins(); assert.ok(list.length >= 3); for (const t of list) { assert.ok(builtins.isBuiltinId(t.id), `${t.id} is namespaced`); assert.ok(Object.isFrozen(t)); assert.equal(t.engine, "bootstrap5"); } }); test("getBuiltin / get resolve by id, default is a real builtin", () => { assert.equal(builtins.getBuiltin("builtin:flatly").name, "Flatly"); assert.equal(builtins.get("builtin:darkly").name, "Darkly"); assert.equal(builtins.getBuiltin("builtin:nope"), null); assert.ok(builtins.getBuiltin(builtins.defaultId())); }); test("isBuiltinId distinguishes builtins from uuid rows", () => { assert.equal(builtins.isBuiltinId("builtin:flatly"), true); assert.equal(builtins.isBuiltinId("ab12cd34-..."), false); assert.equal(builtins.isBuiltinId(undefined), false); }); test("fallbackCss is valid, brace-free CSS", () => { const css = builtins.fallbackCss(); assert.equal(typeof css, "string"); assert.doesNotMatch(css, /[{}]/); }); test("every builtin compiles to balanced CSS", () => { for (const t of builtins.listBuiltins()) { const out = compileTheme(normalizeTokens(t.tokens)); assert.ok(!out.warnings.some((w) => /unbalanced|invalid/.test(w)), `${t.id} compiles cleanly`); } });