feat: 工作台聊天室功能

This commit is contained in:
2026-05-31 02:37:23 +08:00
parent 83cf9eab94
commit f83f434863
33 changed files with 2520 additions and 265 deletions

View File

@@ -3,8 +3,6 @@ import { describe, expect, test } from "bun:test";
import { createElement } from "react";
import { App } from "../../../src/web/app";
import { ProjectProvider } from "../../../src/web/consoles/workbench/ProjectContext";
import { WorkbenchOverviewPage } from "../../../src/web/pages/workbench";
import { renderWithProviders } from "../test-utils";
const MOCK_PROJECT = {
@@ -33,6 +31,12 @@ function createMockHandler(overrides?: { archivedAt?: string; status?: "active"
status: 200,
});
}
if (url.includes("/api/projects/") && url.includes("/conversations")) {
return new Response(JSON.stringify({ items: [], page: 1, pageSize: 100, total: 0 }), {
headers: { "Content-Type": "application/json" },
status: 200,
});
}
return new Response(JSON.stringify({ error: "Not Found" }), { status: 404 });
};
const mocked = handler as unknown as typeof fetch;
@@ -41,7 +45,7 @@ function createMockHandler(overrides?: { archivedAt?: string; status?: "active"
}
describe("Workbench 路由", () => {
test("active 项目可进入 Workbench 并展示总览", async () => {
test("active 项目可进入 Workbench", async () => {
createMockHandler();
renderWithProviders(createElement(App), {
@@ -102,12 +106,18 @@ describe("Workbench 路由", () => {
);
});
test("Workbench 总览页标题显示'总览'", () => {
renderWithProviders(
createElement(ProjectProvider, { children: createElement(WorkbenchOverviewPage), project: MOCK_PROJECT }),
);
test("Workbench 显示聊天室菜单", async () => {
createMockHandler();
expect(screen.getByText("总览")).not.toBeNull();
expect(screen.getAllByText(MOCK_PROJECT.name).length).toBeGreaterThan(0);
renderWithProviders(createElement(App), {
initialRoute: `/workbench/${MOCK_PROJECT.id}`,
});
await waitFor(
() => {
expect(screen.getByText("聊天室")).not.toBeNull();
},
{ timeout: 10000 },
);
});
});