import assert from "node:assert/strict"; import { readFileSync } from "node:fs"; import { dirname, resolve } from "node:path"; import { fileURLToPath } from "node:url"; import ts from "typescript"; const testDir = dirname(fileURLToPath(import.meta.url)); const sourcePath = resolve(testDir, "../src/widgets/role-navigation/model.ts"); const source = readFileSync(sourcePath, "utf8"); const transpiled = ts.transpileModule(source, { compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2022, }, }); const exports = {}; new Function("exports", transpiled.outputText)(exports); const editorItems = exports.getRoleNavigationItems("EDITOR"); const adminItems = exports.getRoleNavigationItems("ADMIN"); assert.deepEqual( editorItems.map((item) => item.id), ["dashboard", "new-article", "review"], ); assert.equal( editorItems.some((item) => item.id === "site-config" || item.id === "script-versions"), false, ); assert.equal( adminItems.some((item) => item.id === "site-config"), true, ); assert.equal( adminItems.some((item) => item.id === "script-versions"), true, ); console.log("role navigation hides Admin-only items for Editors");