51 lines
1.5 KiB
TypeScript
51 lines
1.5 KiB
TypeScript
import { describe, expect, test } from "bun:test";
|
|
|
|
import { buildCommandPaletteSplitSessions } from "../src/react-app/shell/command-palette-sessions";
|
|
import type { SessionOption } from "../src/react-app/shell/command-palette";
|
|
|
|
const sessions: SessionOption[] = [
|
|
{
|
|
workspaceId: "workspace-a",
|
|
sessionId: "session-a",
|
|
title: "Current",
|
|
workspaceTitle: "Workspace A",
|
|
updatedAt: 3,
|
|
searchText: "current workspace a",
|
|
isActive: true,
|
|
},
|
|
{
|
|
workspaceId: "workspace-a",
|
|
sessionId: "session-b",
|
|
title: "Same workspace",
|
|
workspaceTitle: "Workspace A",
|
|
updatedAt: 2,
|
|
searchText: "same workspace a",
|
|
isActive: true,
|
|
},
|
|
{
|
|
workspaceId: "workspace-b",
|
|
sessionId: "session-a",
|
|
title: "Same ID, other workspace",
|
|
workspaceTitle: "Workspace B",
|
|
updatedAt: 1,
|
|
searchText: "same id workspace b",
|
|
isActive: false,
|
|
},
|
|
];
|
|
|
|
describe("command palette split sessions", () => {
|
|
test("offers same-workspace and cross-workspace sessions but not the current session", () => {
|
|
const options = buildCommandPaletteSplitSessions(sessions, {
|
|
workspaceId: "workspace-a",
|
|
sessionId: "session-a",
|
|
});
|
|
|
|
expect(options.map((option) => `${option.workspaceId}/${option.sessionId}`)).toEqual([
|
|
"workspace-a/session-b",
|
|
"workspace-b/session-a",
|
|
]);
|
|
expect(options.some((option) => option.workspaceTitle === "Workspace B")).toBe(true);
|
|
expect(options.some((option) => option.workspaceId === "workspace-a" && option.sessionId === "session-a")).toBe(false);
|
|
});
|
|
});
|