@@ -300,6 +300,61 @@ describe("ProviderSettingsManager", () => {
300300 "Failed to save config: Error: Failed to write provider profiles to secrets: Error: Storage failed" ,
301301 )
302302 } )
303+
304+ it ( "should save boolean values correctly, even when true" , async ( ) => {
305+ // Create a clean initial state
306+ const initialState = {
307+ currentApiConfigName : "default" ,
308+ apiConfigs : {
309+ default : { id : "default-id" } ,
310+ } ,
311+ modeApiConfigs : {
312+ code : "default" ,
313+ architect : "default" ,
314+ ask : "default" ,
315+ } ,
316+ migrations : {
317+ rateLimitSecondsMigrated : true ,
318+ } ,
319+ }
320+
321+ // Mock the initial state
322+ mockSecrets . get . mockResolvedValueOnce ( JSON . stringify ( initialState ) )
323+
324+ // Create a config with geminiFreeTier set to true
325+ const configWithTrueBoolean : ProviderSettings = {
326+ apiProvider : "gemini" ,
327+ geminiFreeTier : true ,
328+ }
329+
330+ // Save the config
331+ await providerSettingsManager . saveConfig ( "test" , configWithTrueBoolean )
332+
333+ // Verify store was called
334+ expect ( mockSecrets . store ) . toHaveBeenCalled ( )
335+
336+ // Get what was stored
337+ const storeCall = mockSecrets . store . mock . calls [ 0 ]
338+ expect ( storeCall [ 0 ] ) . toBe ( "roo_cline_config_api_config" )
339+
340+ const storedData = JSON . parse ( storeCall [ 1 ] )
341+
342+ // Verify the structure
343+ expect ( storedData ) . toHaveProperty ( "apiConfigs.test" )
344+ expect ( storedData . apiConfigs . test ) . toHaveProperty ( "apiProvider" , "gemini" )
345+ expect ( storedData . apiConfigs . test ) . toHaveProperty ( "geminiFreeTier" , true )
346+
347+ // Now test loading the config
348+ mockSecrets . get . mockReset ( )
349+ mockSecrets . get . mockResolvedValueOnce ( JSON . stringify ( storedData ) )
350+
351+ // Load the config
352+ const loadedConfig = await providerSettingsManager . loadConfig ( "test" )
353+
354+ // Verify the loaded config
355+ expect ( loadedConfig ) . toHaveProperty ( "apiProvider" , "gemini" )
356+ expect ( loadedConfig ) . toHaveProperty ( "geminiFreeTier" , true )
357+ } )
303358 } )
304359
305360 describe ( "DeleteConfig" , ( ) => {
0 commit comments