57 lines
1.6 KiB
TypeScript
57 lines
1.6 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import { deriveSidebarShortcutAgentKeys, parseSidebarAgentKey } from "./sidebar-shortcuts";
|
|
|
|
describe("parseSidebarAgentKey", () => {
|
|
it("parses serverId and agentId", () => {
|
|
expect(parseSidebarAgentKey("server:agent")).toEqual({ serverId: "server", agentId: "agent" });
|
|
});
|
|
|
|
it("returns null for invalid keys", () => {
|
|
expect(parseSidebarAgentKey("")).toBeNull();
|
|
expect(parseSidebarAgentKey("no-separator")).toBeNull();
|
|
expect(parseSidebarAgentKey(":agent")).toBeNull();
|
|
expect(parseSidebarAgentKey("server:")).toBeNull();
|
|
});
|
|
});
|
|
|
|
describe("deriveSidebarShortcutAgentKeys", () => {
|
|
it("skips collapsed projects and preserves visual order", () => {
|
|
const sections = [
|
|
{
|
|
projectKey: "p1",
|
|
agents: [
|
|
{ serverId: "s", id: "a1" },
|
|
{ serverId: "s", id: "a2" },
|
|
],
|
|
},
|
|
{
|
|
projectKey: "p2",
|
|
agents: [
|
|
{ serverId: "s", id: "b1" },
|
|
{ serverId: "s", id: "b2" },
|
|
],
|
|
},
|
|
];
|
|
|
|
expect(deriveSidebarShortcutAgentKeys(sections, new Set(["p2"]), 9)).toEqual([
|
|
"s:a1",
|
|
"s:a2",
|
|
]);
|
|
});
|
|
|
|
it("limits to 9", () => {
|
|
const sections = [
|
|
{
|
|
projectKey: "p1",
|
|
agents: Array.from({ length: 20 }, (_, i) => ({ serverId: "s", id: `a${i + 1}` })),
|
|
},
|
|
];
|
|
|
|
expect(deriveSidebarShortcutAgentKeys(sections, new Set(), 9)).toHaveLength(9);
|
|
expect(deriveSidebarShortcutAgentKeys(sections, new Set(), 9)[0]).toBe("s:a1");
|
|
expect(deriveSidebarShortcutAgentKeys(sections, new Set(), 9)[8]).toBe("s:a9");
|
|
});
|
|
});
|
|
|