Files
OmniRoute/tests/unit/sidebar-tools-group.test.ts
Hernan Javier Ardila Sanchez fd26e601a2 fix(dashboard): use lightweight ping endpoint for MaintenanceBanner (fixes #3040) (#3043)
Integrated into release/v3.8.8. Applied review fixes: moved the SELECT 1 into a pingDb() db helper (no raw SQL in route, Hard Rule #5) + the 503 catch no longer leaks err.message (Hard Rule #12). Thanks @herjarsa!
2026-06-01 14:30:17 -03:00

74 lines
2.9 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
const sidebarVisibility = await import("../../src/shared/constants/sidebarVisibility.ts");
function getToolsGroup() {
const omniProxySection = sidebarVisibility.SIDEBAR_SECTIONS.find(
(section) => section.id === "omni-proxy"
);
assert.ok(omniProxySection, "expected omni-proxy section to exist");
const toolsGroup = omniProxySection.children.find(
(child): child is (typeof sidebarVisibility.SIDEBAR_SECTIONS)[number]["children"][number] & {
type: "group";
} =>
"type" in child &&
(child as { type: string }).type === "group" &&
(child as { id: string }).id === "tools"
);
assert.ok(toolsGroup, "expected tools group to exist in omni-proxy section");
return toolsGroup as {
type: "group";
id: string;
items: readonly { id: string; href: string; i18nKey: string }[];
};
}
test("TOOLS_GROUP items follow plan 14 order: cli-code → cli-agents → acp-agents → cloud-agents → agent-bridge → traffic-inspector", () => {
const toolsGroup = getToolsGroup();
const itemIds = toolsGroup.items.map((item) => item.id);
// cli-code/cli-agents/acp-agents/cloud-agents from plan 14 (#2839); agent-bridge/traffic-inspector from plans 11/12 (#2858).
assert.deepEqual(
itemIds,
["cli-code", "cli-agents", "acp-agents", "cloud-agents", "agent-bridge", "traffic-inspector"],
"TOOLS_GROUP items order must be cli-code, cli-agents, acp-agents, cloud-agents, agent-bridge, traffic-inspector"
);
});
test("TOOLS_GROUP cli-code item has correct href and i18nKey", () => {
const toolsGroup = getToolsGroup();
const cliCode = toolsGroup.items.find((item) => item.id === "cli-code");
assert.ok(cliCode, "expected cli-code in TOOLS_GROUP");
assert.equal(cliCode.href, "/dashboard/cli-code");
assert.equal(cliCode.i18nKey, "cliCode");
});
test("TOOLS_GROUP cli-agents item has correct href and i18nKey", () => {
const toolsGroup = getToolsGroup();
const cliAgents = toolsGroup.items.find((item) => item.id === "cli-agents");
assert.ok(cliAgents, "expected cli-agents in TOOLS_GROUP");
assert.equal(cliAgents.href, "/dashboard/cli-agents");
assert.equal(cliAgents.i18nKey, "cliAgents");
});
test("TOOLS_GROUP acp-agents item has correct href and i18nKey", () => {
const toolsGroup = getToolsGroup();
const acpAgents = toolsGroup.items.find((item) => item.id === "acp-agents");
assert.ok(acpAgents, "expected acp-agents in TOOLS_GROUP");
assert.equal(acpAgents.href, "/dashboard/acp-agents");
assert.equal(acpAgents.i18nKey, "acpAgents");
});
test("TOOLS_GROUP does NOT contain legacy cli-tools or agents entries", () => {
const toolsGroup = getToolsGroup();
const legacyIds = toolsGroup.items
.map((item) => item.id)
.filter((id) => id === "cli-tools" || id === "agents");
assert.deepEqual(
legacyIds,
[],
"TOOLS_GROUP must not contain legacy 'cli-tools' or 'agents' entries"
);
});