Files
tutti/packages/agent/gui/agentConversationRailController.spec.ts
agent-radar 2ed3415fb7
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
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

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();
});
});