Skip to content

Commit cae651c

Browse files
committed
test(vscode-ide-companion): 更新测试中的组件模拟实现
- 为 InputPrompt.test.tsx 添加 FieldDescription、FieldSet 和 Spinner 组件模拟 - 修正 Messages.test.tsx 中 AssistantBubble 模拟接收的属性及内容渲染 - 在 SessionList.test.tsx 中新增 ItemTitle、ItemDescription 组件模拟 - 新增多个 UI 组件如 ContextMenu、AlertDialog、Input、Sonner 和 Field 的模拟实现 - 模拟 chatService 的多个方法以支持测试逻辑
1 parent 83052d5 commit cae651c

3 files changed

Lines changed: 56 additions & 1 deletion

File tree

packages/vscode-ide-companion/src/webview/components/InputPrompt.test.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,12 @@ vi.mock("@/webview/components/ui/input-group", () => ({
6060
vi.mock("@/webview/components/ui/field", () => ({
6161
Field: vi.fn(({ children }) => <div data-testid="field">{children}</div>),
6262
FieldGroup: vi.fn(({ children }) => <div data-testid="field-group">{children}</div>),
63+
FieldDescription: vi.fn(({ children }) => <div>{children}</div>),
64+
FieldSet: vi.fn(({ children }) => <div>{children}</div>),
65+
}));
66+
67+
vi.mock("@/webview/components/ui/spinner", () => ({
68+
Spinner: vi.fn(({ className }) => <span data-testid="spinner" className={className} />),
6369
}));
6470

6571
vi.mock("@/webview/components/ui/separator", () => ({

packages/vscode-ide-companion/src/webview/components/Messages.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ vi.mock("@/webview/components/bubbles/UserBubble", () => ({
2424
}));
2525

2626
vi.mock("@/webview/components/bubbles/AssistantBubble", () => ({
27-
default: vi.fn(({ content }) => <div data-testid="assistant-bubble">{content}</div>),
27+
default: vi.fn(({ message }) => <div data-testid="assistant-bubble">{message.content}</div>),
2828
}));
2929

3030
vi.mock("@/webview/components/bubbles/ThinkingBubble", () => ({

packages/vscode-ide-companion/src/webview/components/SessionList.test.tsx

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ vi.mock("@/webview/components/ui/item", () => ({
6161
ItemContent: vi.fn(({ children }) => <div>{children}</div>),
6262
ItemGroup: vi.fn(({ children }) => <div data-testid="item-group">{children}</div>),
6363
ItemActions: vi.fn(({ children }) => <div>{children}</div>),
64+
ItemTitle: vi.fn(({ children }) => <span>{children}</span>),
65+
ItemDescription: vi.fn(({ children }) => <span>{children}</span>),
6466
}));
6567

6668
vi.mock("@/webview/components/ui/tooltip", () => ({
@@ -69,6 +71,53 @@ vi.mock("@/webview/components/ui/tooltip", () => ({
6971
TooltipContent: vi.fn(({ children }) => <div>{children}</div>),
7072
}));
7173

74+
vi.mock("@/webview/components/ui/context-menu", () => ({
75+
ContextMenu: vi.fn(({ children }) => <div>{children}</div>),
76+
ContextMenuTrigger: vi.fn(({ children }) => <div>{children}</div>),
77+
ContextMenuContent: vi.fn(({ children }) => <div>{children}</div>),
78+
ContextMenuItem: vi.fn(({ children }) => <div>{children}</div>),
79+
ContextMenuSeparator: vi.fn(() => <div />),
80+
ContextMenuShortcut: vi.fn(({ children }) => <span>{children}</span>),
81+
ContextMenuGroup: vi.fn(({ children }) => <div>{children}</div>),
82+
}));
83+
84+
vi.mock("@/webview/components/ui/alert-dialog", () => ({
85+
AlertDialog: vi.fn(({ children }) => <div>{children}</div>),
86+
AlertDialogAction: vi.fn(({ children }) => <div>{children}</div>),
87+
AlertDialogCancel: vi.fn(({ children }) => <div>{children}</div>),
88+
AlertDialogContent: vi.fn(({ children }) => <div>{children}</div>),
89+
AlertDialogDescription: vi.fn(({ children }) => <div>{children}</div>),
90+
AlertDialogFooter: vi.fn(({ children }) => <div>{children}</div>),
91+
AlertDialogHeader: vi.fn(({ children }) => <div>{children}</div>),
92+
AlertDialogMedia: vi.fn(({ children }) => <div>{children}</div>),
93+
AlertDialogTitle: vi.fn(({ children }) => <div>{children}</div>),
94+
AlertDialogTrigger: vi.fn(({ children }) => <div>{children}</div>),
95+
}));
96+
97+
vi.mock("@/webview/components/ui/input", () => ({
98+
Input: vi.fn(({ value, onChange, ...props }) => <input value={value} onChange={onChange} {...props} />),
99+
}));
100+
101+
vi.mock("@/webview/components/ui/sonner", () => ({
102+
toast: { success: vi.fn(), error: vi.fn() },
103+
Toaster: vi.fn(() => null),
104+
}));
105+
106+
vi.mock("@/webview/components/ui/field", () => ({
107+
Field: vi.fn(({ children }) => <div>{children}</div>),
108+
FieldDescription: vi.fn(({ children }) => <div>{children}</div>),
109+
FieldSet: vi.fn(({ children }) => <div>{children}</div>),
110+
}));
111+
112+
vi.mock("@/webview/services/chatService", () => ({
113+
chatService: {
114+
openChatPanel: vi.fn(),
115+
openChatInNewWindow: vi.fn(),
116+
getSessionFilePath: vi.fn(),
117+
openFile: vi.fn(),
118+
},
119+
}));
120+
72121
describe("SessionList", () => {
73122
const today = new Date();
74123
const yesterday = new Date(today);

0 commit comments

Comments
 (0)