@@ -26,7 +26,7 @@ const mockContext = {
2626describe ( "ProviderSettingsManager" , ( ) => {
2727 let providerSettingsManager : ProviderSettingsManager
2828
29- beforeEach ( ( ) => {
29+ beforeEach ( async ( ) => {
3030 vi . clearAllMocks ( )
3131 // Reset all mock implementations to default successful behavior
3232 mockSecrets . get . mockResolvedValue ( null )
@@ -36,14 +36,16 @@ describe("ProviderSettingsManager", () => {
3636 mockGlobalState . update . mockResolvedValue ( undefined )
3737
3838 providerSettingsManager = new ProviderSettingsManager ( mockContext )
39+ // Wait for initialization to complete in tests
40+ await providerSettingsManager . ensureInitialized ( )
3941 } )
4042
4143 describe ( "initialize" , ( ) => {
4244 it ( "should not write to storage when secrets.get returns null" , async ( ) => {
4345 // Mock readConfig to return null
4446 mockSecrets . get . mockResolvedValueOnce ( null )
4547
46- await providerSettingsManager . initialize ( )
48+ await providerSettingsManager . ensureInitialized ( )
4749
4850 // Should not write to storage because readConfig returns defaultConfig
4951 expect ( mockSecrets . store ) . not . toHaveBeenCalled ( )
@@ -72,7 +74,7 @@ describe("ProviderSettingsManager", () => {
7274 } ) ,
7375 )
7476
75- await providerSettingsManager . initialize ( )
77+ await providerSettingsManager . ensureInitialized ( )
7678
7779 expect ( mockSecrets . store ) . not . toHaveBeenCalled ( )
7880 } )
@@ -97,7 +99,9 @@ describe("ProviderSettingsManager", () => {
9799 } ) ,
98100 )
99101
100- await providerSettingsManager . initialize ( )
102+ // Create a new instance to trigger initialization with the mocked data
103+ const newManager = new ProviderSettingsManager ( mockContext )
104+ await newManager . ensureInitialized ( )
101105
102106 // Should have written the config with new IDs
103107 expect ( mockSecrets . store ) . toHaveBeenCalled ( )
@@ -136,7 +140,9 @@ describe("ProviderSettingsManager", () => {
136140 } ) ,
137141 )
138142
139- await providerSettingsManager . initialize ( )
143+ // Create a new instance to trigger initialization with the mocked data
144+ const newManager = new ProviderSettingsManager ( mockContext )
145+ await newManager . ensureInitialized ( )
140146
141147 // Get the last call to store, which should contain the migrated config
142148 const calls = mockSecrets . store . mock . calls
@@ -176,7 +182,9 @@ describe("ProviderSettingsManager", () => {
176182 } ) ,
177183 )
178184
179- await providerSettingsManager . initialize ( )
185+ // Create a new instance to trigger initialization with the mocked data
186+ const newManager = new ProviderSettingsManager ( mockContext )
187+ await newManager . ensureInitialized ( )
180188
181189 // Get the last call to store, which should contain the migrated config
182190 const calls = mockSecrets . store . mock . calls
@@ -218,7 +226,9 @@ describe("ProviderSettingsManager", () => {
218226 } ) ,
219227 )
220228
221- await providerSettingsManager . initialize ( )
229+ // Create a new instance to trigger initialization with the mocked data
230+ const newManager = new ProviderSettingsManager ( mockContext )
231+ await newManager . ensureInitialized ( )
222232
223233 // Get the last call to store, which should contain the migrated config
224234 const calls = mockSecrets . store . mock . calls
@@ -267,7 +277,9 @@ describe("ProviderSettingsManager", () => {
267277 } ) ,
268278 )
269279
270- await providerSettingsManager . initialize ( )
280+ // Create a new instance to trigger initialization with the mocked data
281+ const newManager = new ProviderSettingsManager ( mockContext )
282+ await newManager . ensureInitialized ( )
271283
272284 // Get the last call to store, which should contain the migrated config
273285 const calls = mockSecrets . store . mock . calls
@@ -305,15 +317,17 @@ describe("ProviderSettingsManager", () => {
305317 } ) ,
306318 )
307319
308- await providerSettingsManager . initialize ( )
320+ // Create a new instance to trigger initialization with the mocked data
321+ const firstManager = new ProviderSettingsManager ( mockContext )
322+ await firstManager . ensureInitialized ( )
309323
310324 // Verify migration happened
311325 let calls = mockSecrets . store . mock . calls
312326 let storedConfig = JSON . parse ( calls [ calls . length - 1 ] [ 1 ] )
313327 expect ( storedConfig . apiConfigs . default . apiModelId ) . toEqual ( "roo/code-supernova-1-million" )
314328
315- // Create a new instance to simulate another load
316- const newManager = new ProviderSettingsManager ( mockContext )
329+ // Clear mocks for second test
330+ mockSecrets . store . mockClear ( )
317331
318332 // Somehow the model got reverted (e.g., manual edit, sync issue)
319333 mockSecrets . get . mockResolvedValue (
@@ -336,7 +350,9 @@ describe("ProviderSettingsManager", () => {
336350 } ) ,
337351 )
338352
339- await newManager . initialize ( )
353+ // Create another new instance to simulate another load
354+ const secondManager = new ProviderSettingsManager ( mockContext )
355+ await secondManager . ensureInitialized ( )
340356
341357 // Verify migration happened again
342358 calls = mockSecrets . store . mock . calls
@@ -347,7 +363,10 @@ describe("ProviderSettingsManager", () => {
347363 it ( "should throw error if secrets storage fails" , async ( ) => {
348364 mockSecrets . get . mockRejectedValue ( new Error ( "Storage failed" ) )
349365
350- await expect ( providerSettingsManager . initialize ( ) ) . rejects . toThrow (
366+ // Create a new instance that will fail during initialization
367+ const failingManager = new ProviderSettingsManager ( mockContext )
368+
369+ await expect ( failingManager . ensureInitialized ( ) ) . rejects . toThrow (
351370 "Failed to initialize config: Error: Failed to read provider profiles from secrets: Error: Storage failed" ,
352371 )
353372 } )
@@ -408,8 +427,11 @@ describe("ProviderSettingsManager", () => {
408427 it ( "should throw error if reading from secrets fails" , async ( ) => {
409428 mockSecrets . get . mockRejectedValue ( new Error ( "Read failed" ) )
410429
411- await expect ( providerSettingsManager . listConfig ( ) ) . rejects . toThrow (
412- "Failed to list configs: Error: Failed to read provider profiles from secrets: Error: Read failed" ,
430+ // Create a new instance that will fail during initialization
431+ const failingManager = new ProviderSettingsManager ( mockContext )
432+
433+ await expect ( failingManager . listConfig ( ) ) . rejects . toThrow (
434+ "Failed to initialize config: Error: Failed to read provider profiles from secrets: Error: Read failed" ,
413435 )
414436 } )
415437 } )
@@ -730,7 +752,9 @@ describe("ProviderSettingsManager", () => {
730752
731753 mockSecrets . get . mockResolvedValue ( JSON . stringify ( invalidConfig ) )
732754
733- await providerSettingsManager . initialize ( )
755+ // Create a new instance to trigger initialization with the mocked data
756+ const newManager = new ProviderSettingsManager ( mockContext )
757+ await newManager . ensureInitialized ( )
734758
735759 const storeCalls = mockSecrets . store . mock . calls
736760 expect ( storeCalls . length ) . toBeGreaterThan ( 0 ) // Ensure store was called at least once.
@@ -788,8 +812,11 @@ describe("ProviderSettingsManager", () => {
788812 it ( "should throw error if secrets storage fails" , async ( ) => {
789813 mockSecrets . get . mockRejectedValue ( new Error ( "Storage failed" ) )
790814
791- await expect ( providerSettingsManager . hasConfig ( "test" ) ) . rejects . toThrow (
792- "Failed to check config existence: Error: Failed to read provider profiles from secrets: Error: Storage failed" ,
815+ // Create a new instance that will fail during initialization
816+ const failingManager = new ProviderSettingsManager ( mockContext )
817+
818+ await expect ( failingManager . hasConfig ( "test" ) ) . rejects . toThrow (
819+ "Failed to initialize config: Error: Failed to read provider profiles from secrets: Error: Storage failed" ,
793820 )
794821 } )
795822 } )
0 commit comments