Skip to content

Commit 34fc431

Browse files
committed
fixes
1 parent 298a922 commit 34fc431

File tree

2 files changed

+44
-23
lines changed

2 files changed

+44
-23
lines changed

webview-ui/src/components/settings/ContextManagementSettings.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ export const ContextManagementSettings = ({
210210
onValueChange={([value]) =>
211211
setCachedStateField("autoCondenseContextPercent", value)
212212
}
213+
data-testid="auto-condense-percent-slider"
213214
/>
214215
<span className="w-20">{autoCondenseContextPercent}%</span>
215216
</div>
@@ -237,7 +238,8 @@ export const ContextManagementSettings = ({
237238
type: "condensingApiConfigId",
238239
text: newConfigId,
239240
})
240-
}}>
241+
}}
242+
data-testid="condensing-api-config-select">
241243
<SelectTrigger className="w-full">
242244
<SelectValue
243245
placeholder={t(
@@ -274,6 +276,7 @@ export const ContextManagementSettings = ({
274276
<VSCodeTextArea
275277
resize="vertical"
276278
value={customCondensingPrompt || SUMMARY_PROMPT}
279+
data-testid="custom-condensing-prompt-textarea"
277280
onChange={(e) => {
278281
const value = (e.target as HTMLTextAreaElement).value
279282
setCachedStateField("customCondensingPrompt", value)
@@ -289,6 +292,7 @@ export const ContextManagementSettings = ({
289292
<Button
290293
variant="secondary"
291294
size="sm"
295+
data-testid="custom-condensing-prompt-reset"
292296
onClick={() => {
293297
setCachedStateField("customCondensingPrompt", SUMMARY_PROMPT)
294298
vscode.postMessage({

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

Lines changed: 39 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ jest.mock("@/i18n/TranslationContext", () => ({
3535
}))
3636

3737
// Mock vscode utilities - this is necessary since we're not in a VSCode environment
38+
import { vscode } from "@/utils/vscode"
39+
3840
jest.mock("@/utils/vscode", () => ({
3941
vscode: {
4042
postMessage: jest.fn(),
@@ -175,9 +177,21 @@ describe("ContextManagementSettings", () => {
175177
render(<ContextManagementSettings {...propsWithAutoCondense} />)
176178

177179
// Should render the auto condense section
178-
expect(screen.getByText("settings:experimental.autoCondenseContextPercent.label")).toBeInTheDocument()
179-
expect(screen.getByText("settings:experimental.condensingApiConfiguration.label")).toBeInTheDocument()
180-
expect(screen.getByText("settings:experimental.customCondensingPrompt.label")).toBeInTheDocument()
180+
// Should render the auto condense section
181+
const autoCondenseCheckbox = screen.getByTestId("auto-condense-context-checkbox")
182+
expect(autoCondenseCheckbox).toBeInTheDocument()
183+
184+
// Should render the slider with correct value
185+
const slider = screen.getByTestId("auto-condense-percent-slider")
186+
expect(slider).toBeInTheDocument()
187+
188+
// Should render the API config select
189+
const apiSelect = screen.getByRole("combobox")
190+
expect(apiSelect).toBeInTheDocument()
191+
192+
// Should render the custom prompt textarea
193+
const textarea = screen.getByRole("textbox")
194+
expect(textarea).toBeInTheDocument()
181195
})
182196

183197
describe("Auto Condense Context functionality", () => {
@@ -199,12 +213,11 @@ describe("ContextManagementSettings", () => {
199213
render(<ContextManagementSettings {...props} />)
200214

201215
// Find the auto condense percent slider
202-
const sliders = screen.getAllByRole("slider")
203-
const autoCondenseSlider = sliders[0] // First slider should be auto condense
216+
const slider = screen.getByTestId("auto-condense-percent-slider")
204217

205218
// Test slider interaction
206-
autoCondenseSlider.focus()
207-
fireEvent.keyDown(autoCondenseSlider, { key: "ArrowRight" })
219+
slider.focus()
220+
fireEvent.keyDown(slider, { key: "ArrowRight" })
208221

209222
expect(mockSetCachedStateField).toHaveBeenCalledWith("autoCondenseContextPercent", 76)
210223
})
@@ -217,16 +230,15 @@ describe("ContextManagementSettings", () => {
217230
it("updates condensing API configuration", () => {
218231
const mockSetCachedStateField = jest.fn()
219232
const mockPostMessage = jest.fn()
220-
require("@/utils/vscode").vscode.postMessage = mockPostMessage
233+
const postMessageSpy = jest.spyOn(vscode, "postMessage")
234+
postMessageSpy.mockImplementation(mockPostMessage)
221235

222236
const props = { ...autoCondenseProps, setCachedStateField: mockSetCachedStateField }
223237
render(<ContextManagementSettings {...props} />)
224238

225-
// Find and click the select trigger
226-
const selectTrigger = screen.getByRole("combobox")
227-
fireEvent.click(selectTrigger)
239+
const apiSelect = screen.getByRole("combobox")
240+
fireEvent.click(apiSelect)
228241

229-
// Select a different config
230242
const configOption = screen.getByText("Config 1")
231243
fireEvent.click(configOption)
232244

@@ -240,17 +252,18 @@ describe("ContextManagementSettings", () => {
240252
it("handles selecting default config option", () => {
241253
const mockSetCachedStateField = jest.fn()
242254
const mockPostMessage = jest.fn()
243-
require("@/utils/vscode").vscode.postMessage = mockPostMessage
255+
const postMessageSpy = jest.spyOn(vscode, "postMessage")
256+
postMessageSpy.mockImplementation(mockPostMessage)
244257

245258
const props = { ...autoCondenseProps, setCachedStateField: mockSetCachedStateField }
246259
render(<ContextManagementSettings {...props} />)
247260

248-
// Find and click the select trigger
249-
const selectTrigger = screen.getByRole("combobox")
250-
fireEvent.click(selectTrigger)
251-
252-
// Select the default option (use current config)
253-
const defaultOption = screen.getByText("settings:experimental.condensingApiConfiguration.useCurrentConfig")
261+
// Test selecting default config
262+
const apiSelect = screen.getByRole("combobox")
263+
fireEvent.click(apiSelect)
264+
const defaultOption = screen.getByText(
265+
"settings:contextManagement.condensingApiConfiguration.useCurrentConfig",
266+
)
254267
fireEvent.click(defaultOption)
255268

256269
expect(mockSetCachedStateField).toHaveBeenCalledWith("condensingApiConfigId", "")
@@ -263,7 +276,8 @@ describe("ContextManagementSettings", () => {
263276
it("updates custom condensing prompt", () => {
264277
const mockSetCachedStateField = jest.fn()
265278
const mockPostMessage = jest.fn()
266-
require("@/utils/vscode").vscode.postMessage = mockPostMessage
279+
const postMessageSpy = jest.spyOn(vscode, "postMessage")
280+
postMessageSpy.mockImplementation(mockPostMessage)
267281

268282
const props = { ...autoCondenseProps, setCachedStateField: mockSetCachedStateField }
269283
render(<ContextManagementSettings {...props} />)
@@ -282,12 +296,15 @@ describe("ContextManagementSettings", () => {
282296
it("resets custom condensing prompt to default", () => {
283297
const mockSetCachedStateField = jest.fn()
284298
const mockPostMessage = jest.fn()
285-
require("@/utils/vscode").vscode.postMessage = mockPostMessage
299+
const postMessageSpy = jest.spyOn(vscode, "postMessage")
300+
postMessageSpy.mockImplementation(mockPostMessage)
286301

287302
const props = { ...autoCondenseProps, setCachedStateField: mockSetCachedStateField }
288303
render(<ContextManagementSettings {...props} />)
289304

290-
const resetButton = screen.getByText("settings:experimental.customCondensingPrompt.reset")
305+
const resetButton = screen.getByRole("button", {
306+
name: "settings:contextManagement.customCondensingPrompt.reset",
307+
})
291308
fireEvent.click(resetButton)
292309

293310
// Should reset to the default SUMMARY_PROMPT

0 commit comments

Comments
 (0)