Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
59 lines
1.9 KiB
TypeScript
59 lines
1.9 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
import { createTestAgentSessionEngine } from "./shared/testing/createTestAgentSessionEngine";
|
|
import { createAgentGUIConversationRailQueryController } from "./agentConversationRailController";
|
|
|
|
describe("createAgentGUIConversationRailQueryController", () => {
|
|
it("owns resolved-query cache reuse for controllers on one Engine", async () => {
|
|
const engine = createTestAgentSessionEngine("workspace-1");
|
|
const listSessionSections = vi.fn(
|
|
async (input: { workspaceId: string }) => ({
|
|
sections: [],
|
|
workspaceId: input.workspaceId
|
|
})
|
|
);
|
|
const runtime = {
|
|
listSessionSectionPage: vi.fn(async (input: { sectionKey: string }) => ({
|
|
hasMore: false,
|
|
kind: "conversations" as const,
|
|
sectionKey: input.sectionKey,
|
|
sessions: [],
|
|
totalCount: 0
|
|
})),
|
|
listSessionSections
|
|
};
|
|
const scope = {
|
|
conversationFilter: { kind: "all" as const },
|
|
userProjects: []
|
|
};
|
|
const first = createAgentGUIConversationRailQueryController({
|
|
engine,
|
|
getActiveConversationId: () => null,
|
|
runtime,
|
|
workspaceId: "workspace-1"
|
|
});
|
|
first.configure(scope);
|
|
const detachFirst = first.attach();
|
|
|
|
await vi.waitFor(() =>
|
|
expect(first.getSnapshot().runtimeRailSectionsPending).toBe(false)
|
|
);
|
|
expect(listSessionSections).toHaveBeenCalledTimes(1);
|
|
detachFirst();
|
|
|
|
const remounted = createAgentGUIConversationRailQueryController({
|
|
engine,
|
|
getActiveConversationId: () => null,
|
|
runtime,
|
|
workspaceId: "workspace-1"
|
|
});
|
|
remounted.configure(scope);
|
|
const detachRemounted = remounted.attach();
|
|
|
|
expect(remounted.getSnapshot().runtimeRailSectionsPending).toBe(false);
|
|
expect(listSessionSections).toHaveBeenCalledTimes(1);
|
|
|
|
detachRemounted();
|
|
engine.dispose();
|
|
});
|
|
});
|