Skip to content

Commit cbab5a7

Browse files
committed
temp
1 parent d000e03 commit cbab5a7

File tree

2 files changed

+41
-11
lines changed

2 files changed

+41
-11
lines changed

webview-ui/src/__mocks__/vscrui.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from "react"
22

3-
export const Checkbox = ({ children, onChange }: any) =>
3+
export const VSCodeCheckbox = ({ children, onChange }: any) =>
44
React.createElement("div", { "data-testid": "mock-checkbox", onClick: onChange }, children)
55

66
export const Dropdown = ({ children, onChange }: any) =>

webview-ui/src/components/settings/__tests__/ApiOptions.test.tsx

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import React from "react"
12
// npx jest src/components/settings/__tests__/ApiOptions.test.ts
23

34
import { render, screen, fireEvent } from "@testing-library/react"
@@ -15,13 +16,23 @@ jest.mock("@vscode/webview-ui-toolkit/react", () => ({
1516
VSCodeTextField: ({ children, value, onBlur }: any) => (
1617
<div>
1718
{children}
18-
<input type="text" value={value} onChange={onBlur} />
19+
<input type="text" value={value} onChange={onBlur || (() => {})} />
1920
</div>
2021
),
2122
VSCodeLink: ({ children, href }: any) => <a href={href}>{children}</a>,
2223
VSCodeRadio: ({ value, checked }: any) => <input type="radio" value={value} checked={checked} />,
2324
VSCodeRadioGroup: ({ children }: any) => <div>{children}</div>,
2425
VSCodeButton: ({ children }: any) => <div>{children}</div>,
26+
VSCodeCheckbox: ({ children, checked, onChange, ...props }: any) => (
27+
<div {...props}>
28+
<input
29+
type="checkbox"
30+
checked={checked}
31+
onChange={(e) => onChange && onChange({ target: { checked: e.target.checked } })}
32+
/>
33+
{children}
34+
</div>
35+
),
2536
}))
2637

2738
// Mock other components
@@ -42,15 +53,32 @@ jest.mock("vscrui", () => ({
4253
// Mock @shadcn/ui components
4354
jest.mock("@/components/ui", () => ({
4455
Select: ({ children, value, onValueChange }: any) => (
45-
<div className="select-mock">
46-
<select value={value} onChange={(e) => onValueChange && onValueChange(e.target.value)}>
47-
{children}
48-
</select>
56+
<div className="select-mock" data-testid="shadcn-select-root">
57+
{React.Children.map(children, (child) => {
58+
if (React.isValidElement(child)) {
59+
// Pass down onValueChange and value to direct children
60+
return React.cloneElement(child as React.ReactElement<any>, {
61+
__rootValue: value,
62+
__onRootValueChange: onValueChange,
63+
})
64+
}
65+
return child
66+
})}
4967
</div>
5068
),
51-
SelectTrigger: ({ children }: any) => <div className="select-trigger-mock">{children}</div>,
52-
SelectValue: ({ children }: any) => <div className="select-value-mock">{children}</div>,
53-
SelectContent: ({ children }: any) => <div className="select-content-mock">{children}</div>,
69+
SelectTrigger: ({ children }: any) => <button className="select-trigger-mock">{children}</button>,
70+
SelectValue: ({ children, placeholder, __rootValue }: any) => (
71+
<span className="select-value-mock">{__rootValue || placeholder || children}</span>
72+
),
73+
SelectContent: ({ children, __rootValue, __onRootValueChange }: any) => (
74+
<select
75+
className="select-content-mock"
76+
value={__rootValue}
77+
onChange={(e) => __onRootValueChange && __onRootValueChange(e.target.value)}
78+
data-testid="shadcn-select-content">
79+
{children}
80+
</select>
81+
),
5482
SelectItem: ({ children, value }: any) => (
5583
<option value={value} className="select-item-mock">
5684
{children}
@@ -66,14 +94,15 @@ jest.mock("@/components/ui", () => ({
6694
Command: ({ children }: any) => <div className="command-mock">{children}</div>,
6795
CommandEmpty: ({ children }: any) => <div className="command-empty-mock">{children}</div>,
6896
CommandGroup: ({ children }: any) => <div className="command-group-mock">{children}</div>,
69-
CommandInput: ({ value, onValueChange, placeholder, className, _ref }: any) => (
97+
CommandInput: React.forwardRef(({ value, onValueChange, placeholder, className }: any, ref: any) => (
7098
<input
99+
ref={ref}
71100
value={value}
72101
onChange={(e) => onValueChange && onValueChange(e.target.value)}
73102
placeholder={placeholder}
74103
className={className}
75104
/>
76-
),
105+
)),
77106
CommandItem: ({ children, value, onSelect }: any) => (
78107
<div className="command-item-mock" onClick={() => onSelect && onSelect(value)}>
79108
{children}
@@ -167,6 +196,7 @@ jest.mock("../ReasoningEffort", () => ({
167196
ReasoningEffort: ({ apiConfiguration, setApiConfigurationField, value }: any) => (
168197
<div data-testid="reasoning-effort-select">
169198
<select
199+
role="combobox"
170200
value={value ?? apiConfiguration.openAiCustomModelInfo?.reasoningEffort}
171201
onChange={(e) => setApiConfigurationField("reasoningEffort", e.target.value)}>
172202
<option value="auto">Auto</option>

0 commit comments

Comments
 (0)