1- import React from "react"
2- import { render , screen , fireEvent } from "@testing-library/react"
1+ import { render , screen , fireEvent , waitFor } from "@testing-library/react"
32import SettingsView from "../SettingsView"
43import { ExtensionStateContextProvider } from "../../../context/ExtensionStateContext"
54import { vscode } from "../../../utils/vscode"
@@ -14,14 +13,7 @@ jest.mock("../../../utils/vscode", () => ({
1413// Mock ApiConfigManager component
1514jest . mock ( "../ApiConfigManager" , ( ) => ( {
1615 __esModule : true ,
17- default : ( {
18- currentApiConfigName,
19- listApiConfigMeta,
20- onSelectConfig,
21- onDeleteConfig,
22- onRenameConfig,
23- onUpsertConfig,
24- } : any ) => (
16+ default : ( { currentApiConfigName } : any ) => (
2517 < div data-testid = "api-config-management" >
2618 < span > Current config: { currentApiConfigName } </ span >
2719 </ div >
@@ -134,7 +126,7 @@ describe("SettingsView - Sound Settings", () => {
134126 expect ( screen . queryByRole ( "slider" , { name : / v o l u m e / i } ) ) . not . toBeInTheDocument ( )
135127 } )
136128
137- it ( "toggles sound setting and sends message to VSCode" , ( ) => {
129+ it ( "toggles sound setting and sends message to VSCode" , async ( ) => {
138130 renderSettingsView ( )
139131
140132 const soundCheckbox = screen . getByRole ( "checkbox" , {
@@ -149,12 +141,14 @@ describe("SettingsView - Sound Settings", () => {
149141 const doneButton = screen . getByText ( "Done" )
150142 fireEvent . click ( doneButton )
151143
152- expect ( vscode . postMessage ) . toHaveBeenCalledWith (
153- expect . objectContaining ( {
154- type : "soundEnabled" ,
155- bool : true ,
156- } ) ,
157- )
144+ await waitFor ( ( ) => {
145+ expect ( vscode . postMessage ) . toHaveBeenCalledWith (
146+ expect . objectContaining ( {
147+ type : "soundEnabled" ,
148+ bool : true ,
149+ } ) ,
150+ )
151+ } )
158152 } )
159153
160154 it ( "shows volume slider when sound is enabled" , ( ) => {
@@ -172,7 +166,7 @@ describe("SettingsView - Sound Settings", () => {
172166 expect ( volumeSlider ) . toHaveValue ( "0.5" )
173167 } )
174168
175- it ( "updates volume and sends message to VSCode when slider changes" , ( ) => {
169+ it ( "updates volume and sends message to VSCode when slider changes" , async ( ) => {
176170 renderSettingsView ( )
177171
178172 // Enable sound
@@ -190,9 +184,11 @@ describe("SettingsView - Sound Settings", () => {
190184 fireEvent . click ( doneButton )
191185
192186 // Verify message sent to VSCode
193- expect ( vscode . postMessage ) . toHaveBeenCalledWith ( {
194- type : "soundVolume" ,
195- value : 0.75 ,
187+ await waitFor ( ( ) => {
188+ expect ( vscode . postMessage ) . toHaveBeenCalledWith ( {
189+ type : "soundVolume" ,
190+ value : 0.75 ,
191+ } )
196192 } )
197193 } )
198194} )
@@ -309,7 +305,7 @@ describe("SettingsView - Allowed Commands", () => {
309305 expect ( commands ) . toHaveLength ( 1 )
310306 } )
311307
312- it ( "saves allowed commands when clicking Done" , ( ) => {
308+ it ( "saves allowed commands when clicking Done" , async ( ) => {
313309 const { onDone } = renderSettingsView ( )
314310
315311 // Enable always allow execute
@@ -329,12 +325,14 @@ describe("SettingsView - Allowed Commands", () => {
329325 fireEvent . click ( doneButton )
330326
331327 // Verify VSCode messages were sent
332- expect ( vscode . postMessage ) . toHaveBeenCalledWith (
333- expect . objectContaining ( {
334- type : "allowedCommands" ,
335- commands : [ "npm test" ] ,
336- } ) ,
337- )
338- expect ( onDone ) . toHaveBeenCalled ( )
328+ await waitFor ( ( ) => {
329+ expect ( vscode . postMessage ) . toHaveBeenCalledWith (
330+ expect . objectContaining ( {
331+ type : "allowedCommands" ,
332+ commands : [ "npm test" ] ,
333+ } ) ,
334+ )
335+ expect ( onDone ) . toHaveBeenCalled ( )
336+ } )
339337 } )
340338} )
0 commit comments