Skip to content

Commit 7b23de3

Browse files
committed
test(ui): avoid order-sensitive Sessions mock
1 parent e448b1a commit 7b23de3

1 file changed

Lines changed: 15 additions & 9 deletions

File tree

ui/src/pages/sessions/sessions-page.test.ts

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,8 @@ import type {
1010
} from "../../api/types.ts";
1111
import type { ApplicationContext, ApplicationGatewaySnapshot } from "../../app/context.ts";
1212
import type { SessionCapability } from "../../lib/sessions/index.ts";
13+
import { getWorkboardState } from "../../lib/workboard/index.ts";
1314
import type { SessionsRouteData } from "./sessions-page.ts";
14-
15-
const captureSessionToWorkboard = vi.hoisted(() => vi.fn());
16-
17-
vi.mock("../../lib/workboard/index.ts", () => ({ captureSessionToWorkboard }));
18-
1915
import "./sessions-page.ts";
2016

2117
type TestSessionsPage = HTMLElement & {
@@ -163,7 +159,6 @@ async function createPage(context: ApplicationContext): Promise<TestSessionsPage
163159
afterEach(() => {
164160
document.body.replaceChildren();
165161
vi.restoreAllMocks();
166-
captureSessionToWorkboard.mockReset();
167162
});
168163

169164
describe("sessions page lifecycle", () => {
@@ -319,10 +314,19 @@ describe("sessions page lifecycle", () => {
319314
branchCheckpoint: vi.fn(() => branched.promise as never),
320315
restoreCheckpoint: vi.fn(() => restored.promise as never),
321316
});
322-
captureSessionToWorkboard.mockReturnValue(captured.promise);
323-
const client = {} as GatewayBrowserClient;
317+
const request = vi.fn((method: string) => {
318+
if (method === "chat.history") {
319+
return Promise.resolve({ messages: [] });
320+
}
321+
if (method === "workboard.cards.create") {
322+
return captured.promise;
323+
}
324+
return Promise.resolve({});
325+
});
326+
const client = { request } as unknown as GatewayBrowserClient;
324327
const mutableGateway = createGateway(client);
325328
const context = createContext(mutableGateway.gateway, sessions);
329+
getWorkboardState(context.workboard).loaded = true;
326330
const page = await createPage(context);
327331
page.result = { count: 1, sessions: [{ key: "main" }] } as SessionsListResult;
328332
page.selectedKeys = new Set(["main"]);
@@ -336,7 +340,9 @@ describe("sessions page lifecycle", () => {
336340
page.restoreCheckpoint("main", "restore-checkpoint"),
337341
page.addToWorkboard({ key: "main" } as GatewaySessionRow),
338342
];
339-
await vi.waitFor(() => expect(captureSessionToWorkboard).toHaveBeenCalledOnce());
343+
await vi.waitFor(() =>
344+
expect(request).toHaveBeenCalledWith("workboard.cards.create", expect.any(Object)),
345+
);
340346

341347
mutableGateway.emit({ connected: false, client });
342348
deleted.resolve({ deleted: ["main"], errors: ["stale delete error"] });

0 commit comments

Comments
 (0)