66 lines
2.1 KiB
TypeScript
66 lines
2.1 KiB
TypeScript
import { screen } from "@testing-library/react";
|
|
import { describe, expect, test } from "bun:test";
|
|
import { createElement } from "react";
|
|
|
|
import { ToolPart } from "../../../../src/web/consoles/workbench/components/chat/parts/ToolPart";
|
|
import { renderWithProviders } from "../../test-utils";
|
|
|
|
describe("ToolPart 工具显示名", () => {
|
|
test("无 toolMetadata 时使用 toolName", () => {
|
|
const part = {
|
|
input: { timezone: "Asia/Shanghai" },
|
|
output: { iso: "2024-01-01T00:00:00.000Z", local: "2024年1月1日", timestamp: 1704067200000 },
|
|
toolCallId: "call-1",
|
|
toolName: "getCurrentTime",
|
|
type: "tool-getCurrentTime",
|
|
};
|
|
|
|
renderWithProviders(createElement(ToolPart, { part }));
|
|
|
|
expect(screen.getByText(/getCurrentTime/)).toBeTruthy();
|
|
});
|
|
|
|
test("有 toolMetadata.displayName 时优先使用显示名", () => {
|
|
const part = {
|
|
input: { timezone: "Asia/Shanghai" },
|
|
output: { iso: "2024-01-01T00:00:00.000Z", local: "2024年1月1日", timestamp: 1704067200000 },
|
|
toolCallId: "call-1",
|
|
toolMetadata: { displayName: "获取当前时间" },
|
|
toolName: "getCurrentTime",
|
|
type: "tool-getCurrentTime",
|
|
};
|
|
|
|
renderWithProviders(createElement(ToolPart, { part }));
|
|
|
|
expect(screen.getByText("获取当前时间")).toBeTruthy();
|
|
expect(screen.queryByText(/getCurrentTime/)).toBeNull();
|
|
});
|
|
|
|
test("toolMetadata.displayName 非字符串时回退到 toolName", () => {
|
|
const part = {
|
|
input: {},
|
|
output: {},
|
|
toolCallId: "call-2",
|
|
toolMetadata: { displayName: 123 },
|
|
type: "tool-someTool",
|
|
};
|
|
|
|
renderWithProviders(createElement(ToolPart, { part }));
|
|
|
|
expect(screen.getByText("someTool")).toBeTruthy();
|
|
});
|
|
|
|
test("错误状态时使用显示名", () => {
|
|
const part = {
|
|
errorText: "超时",
|
|
toolCallId: "call-3",
|
|
toolMetadata: { displayName: "获取当前时间" },
|
|
type: "tool-getCurrentTime",
|
|
};
|
|
|
|
renderWithProviders(createElement(ToolPart, { part }));
|
|
|
|
expect(screen.getByText(/获取当前时间.*失败/)).toBeTruthy();
|
|
});
|
|
});
|