Files
2026-07-13 13:39:12 +08:00

68 lines
2.5 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
const sidebarVisibility = await import("../../src/shared/constants/sidebarVisibility.ts");
test("HIDEABLE_SIDEBAR_ITEM_IDS contains activity (new)", () => {
assert.ok(
(sidebarVisibility.HIDEABLE_SIDEBAR_ITEM_IDS as readonly string[]).includes("activity"),
"activity must be in HIDEABLE_SIDEBAR_ITEM_IDS",
);
});
test("HIDEABLE_SIDEBAR_ITEM_IDS still contains logs-activity (B11 back-compat)", () => {
assert.ok(
(sidebarVisibility.HIDEABLE_SIDEBAR_ITEM_IDS as readonly string[]).includes("logs-activity"),
"logs-activity must remain in HIDEABLE_SIDEBAR_ITEM_IDS for back-compat",
);
});
test("admin preset shows activity (not logs-activity) as visible", () => {
const adminPreset = sidebarVisibility.SIDEBAR_PRESETS.find((p) => p.id === "admin");
assert.ok(adminPreset, "admin preset must exist");
// activity must NOT be in hiddenItems (i.e., it's visible in admin preset)
assert.equal(
(adminPreset.hiddenItems as string[]).includes("activity"),
false,
"activity must be visible (not hidden) in admin preset",
);
// logs-activity must be hidden in admin preset (B30: was replaced by activity)
assert.ok(
(adminPreset.hiddenItems as string[]).includes("logs-activity"),
"logs-activity must be hidden in admin preset (replaced by activity, B30)",
);
});
test("admin preset shows costs, costs-pricing, costs-budget, costs-quota-share", () => {
const adminPreset = sidebarVisibility.SIDEBAR_PRESETS.find((p) => p.id === "admin");
assert.ok(adminPreset, "admin preset must exist");
for (const id of ["costs", "costs-pricing", "costs-budget", "costs-quota-share"]) {
assert.equal(
(adminPreset.hiddenItems as string[]).includes(id),
false,
`${id} must be visible (not hidden) in admin preset`,
);
}
});
test("all preset has no hidden items", () => {
const allPreset = sidebarVisibility.SIDEBAR_PRESETS.find((p) => p.id === "all");
assert.ok(allPreset, "all preset must exist");
assert.deepEqual(allPreset.hiddenItems, []);
});
test("logs-activity is absent from SIDEBAR_SECTIONS item definitions (removed from navigation)", () => {
const allSectionItemIds = sidebarVisibility.SIDEBAR_SECTIONS.flatMap((section) =>
sidebarVisibility.getSectionItems(section).map((item) => item.id),
);
assert.equal(
(allSectionItemIds as string[]).includes("logs-activity"),
false,
"logs-activity must not appear in any section's item definitions (navigation-level removal)",
);
});