@@ -97,6 +97,21 @@ describe("ConfigManager", () => {
9797
9898 expect ( result ) . toBe ( vscode . ConfigurationTarget . Global ) ;
9999 } ) ;
100+
101+ it ( "should throw error for LOCAL scope" , ( ) => {
102+ const mockConfig = createMockConfig ( ) ;
103+ mockConfig . get . mockReturnValue ( CONFIGURATION_TARGETS . LOCAL ) ;
104+ vi . spyOn ( vscode . workspace , "getConfiguration" ) . mockReturnValue (
105+ mockConfig as unknown as vscode . WorkspaceConfiguration
106+ ) ;
107+
108+ const mockConfigWriter = createMockConfigWriter ( ) ;
109+ const configManager = ConfigManager . create ( { configWriter : mockConfigWriter } ) ;
110+
111+ expect ( ( ) => configManager . getVSCodeConfigurationTarget ( ) ) . toThrow (
112+ "LOCAL scope uses workspaceState, not VS Code ConfigurationTarget"
113+ ) ;
114+ } ) ;
100115 } ) ;
101116
102117 describe ( "getConfigDataForWebview" , ( ) => {
@@ -390,4 +405,157 @@ describe("ConfigManager", () => {
390405 expect ( mockLocalStorage . getButtons ) . toHaveBeenCalled ( ) ;
391406 } ) ;
392407 } ) ;
408+
409+ describe ( "getRawButtonsForTarget" , ( ) => {
410+ it ( "should return empty array when getRawButtonsFromScope is not available" , ( ) => {
411+ const mockConfigReader = {
412+ getButtons : vi . fn ( ) ,
413+ getButtonsFromScope : vi . fn ( ) ,
414+ } ;
415+
416+ const mockConfig = createMockConfig ( ) ;
417+ mockConfig . get . mockReturnValue ( CONFIGURATION_TARGETS . WORKSPACE ) ;
418+ vi . spyOn ( vscode . workspace , "getConfiguration" ) . mockReturnValue (
419+ mockConfig as unknown as vscode . WorkspaceConfiguration
420+ ) ;
421+
422+ const mockConfigWriter = createMockConfigWriter ( ) ;
423+ const configManager = ConfigManager . create ( { configWriter : mockConfigWriter } ) ;
424+ const result = configManager . getRawButtonsForTarget (
425+ CONFIGURATION_TARGETS . WORKSPACE ,
426+ mockConfigReader
427+ ) ;
428+
429+ expect ( result ) . toEqual ( [ ] ) ;
430+ } ) ;
431+
432+ it ( "should return raw buttons from workspace scope" , ( ) => {
433+ const rawButtons = [ { command : "echo raw" , name : "Raw Button" } ] ;
434+ const mockConfigReader = {
435+ getButtons : vi . fn ( ) ,
436+ getButtonsFromScope : vi . fn ( ) ,
437+ getRawButtonsFromScope : vi . fn ( ) . mockReturnValue ( rawButtons ) ,
438+ } ;
439+
440+ const mockConfig = createMockConfig ( ) ;
441+ mockConfig . get . mockReturnValue ( CONFIGURATION_TARGETS . WORKSPACE ) ;
442+ vi . spyOn ( vscode . workspace , "getConfiguration" ) . mockReturnValue (
443+ mockConfig as unknown as vscode . WorkspaceConfiguration
444+ ) ;
445+
446+ const mockConfigWriter = createMockConfigWriter ( ) ;
447+ const configManager = ConfigManager . create ( { configWriter : mockConfigWriter } ) ;
448+ const result = configManager . getRawButtonsForTarget (
449+ CONFIGURATION_TARGETS . WORKSPACE ,
450+ mockConfigReader
451+ ) ;
452+
453+ expect ( result ) . toEqual ( rawButtons ) ;
454+ expect ( mockConfigReader . getRawButtonsFromScope ) . toHaveBeenCalledWith (
455+ vscode . ConfigurationTarget . Workspace
456+ ) ;
457+ } ) ;
458+
459+ it ( "should return raw buttons from global scope" , ( ) => {
460+ const rawButtons = [ { command : "echo global" , name : "Global Button" } ] ;
461+ const mockConfigReader = {
462+ getButtons : vi . fn ( ) ,
463+ getButtonsFromScope : vi . fn ( ) ,
464+ getRawButtonsFromScope : vi . fn ( ) . mockReturnValue ( rawButtons ) ,
465+ } ;
466+
467+ const mockConfig = createMockConfig ( ) ;
468+ mockConfig . get . mockReturnValue ( CONFIGURATION_TARGETS . GLOBAL ) ;
469+ vi . spyOn ( vscode . workspace , "getConfiguration" ) . mockReturnValue (
470+ mockConfig as unknown as vscode . WorkspaceConfiguration
471+ ) ;
472+
473+ const mockConfigWriter = createMockConfigWriter ( ) ;
474+ const configManager = ConfigManager . create ( { configWriter : mockConfigWriter } ) ;
475+ const result = configManager . getRawButtonsForTarget (
476+ CONFIGURATION_TARGETS . GLOBAL ,
477+ mockConfigReader
478+ ) ;
479+
480+ expect ( result ) . toEqual ( rawButtons ) ;
481+ expect ( mockConfigReader . getRawButtonsFromScope ) . toHaveBeenCalledWith (
482+ vscode . ConfigurationTarget . Global
483+ ) ;
484+ } ) ;
485+
486+ it ( "should return local storage buttons for LOCAL scope" , ( ) => {
487+ const localButtons = [ { command : "echo local" , id : "local-btn" , name : "Local Button" } ] ;
488+ const mockLocalStorage = createMockLocalStorage ( ) ;
489+ ( mockLocalStorage . getButtons as vi . Mock ) . mockReturnValue ( localButtons ) ;
490+
491+ const mockConfigReader = {
492+ getButtons : vi . fn ( ) ,
493+ getButtonsFromScope : vi . fn ( ) ,
494+ getRawButtonsFromScope : vi . fn ( ) ,
495+ } ;
496+
497+ const mockConfig = createMockConfig ( ) ;
498+ mockConfig . get . mockReturnValue ( CONFIGURATION_TARGETS . LOCAL ) ;
499+ vi . spyOn ( vscode . workspace , "getConfiguration" ) . mockReturnValue (
500+ mockConfig as unknown as vscode . WorkspaceConfiguration
501+ ) ;
502+
503+ const mockConfigWriter = createMockConfigWriter ( ) ;
504+ const configManager = ConfigManager . create ( {
505+ configWriter : mockConfigWriter ,
506+ localStorage : mockLocalStorage ,
507+ } ) ;
508+ const result = configManager . getRawButtonsForTarget (
509+ CONFIGURATION_TARGETS . LOCAL ,
510+ mockConfigReader
511+ ) ;
512+
513+ expect ( result ) . toEqual ( localButtons ) ;
514+ } ) ;
515+
516+ it ( "should return empty array for unknown target" , ( ) => {
517+ const mockConfigReader = {
518+ getButtons : vi . fn ( ) ,
519+ getButtonsFromScope : vi . fn ( ) ,
520+ getRawButtonsFromScope : vi . fn ( ) ,
521+ } ;
522+
523+ const mockConfig = createMockConfig ( ) ;
524+ vi . spyOn ( vscode . workspace , "getConfiguration" ) . mockReturnValue (
525+ mockConfig as unknown as vscode . WorkspaceConfiguration
526+ ) ;
527+
528+ const mockConfigWriter = createMockConfigWriter ( ) ;
529+ const configManager = ConfigManager . create ( { configWriter : mockConfigWriter } ) ;
530+ const result = configManager . getRawButtonsForTarget (
531+ "unknown" as typeof CONFIGURATION_TARGETS . WORKSPACE ,
532+ mockConfigReader
533+ ) ;
534+
535+ expect ( result ) . toEqual ( [ ] ) ;
536+ } ) ;
537+ } ) ;
538+
539+ describe ( "getButtonsForTarget" , ( ) => {
540+ it ( "should return empty array for unknown target" , ( ) => {
541+ const mockConfigReader = {
542+ getButtons : vi . fn ( ) ,
543+ getButtonsFromScope : vi . fn ( ) ,
544+ } ;
545+
546+ const mockConfig = createMockConfig ( ) ;
547+ vi . spyOn ( vscode . workspace , "getConfiguration" ) . mockReturnValue (
548+ mockConfig as unknown as vscode . WorkspaceConfiguration
549+ ) ;
550+
551+ const mockConfigWriter = createMockConfigWriter ( ) ;
552+ const configManager = ConfigManager . create ( { configWriter : mockConfigWriter } ) ;
553+ const result = configManager . getButtonsForTarget (
554+ "unknown" as typeof CONFIGURATION_TARGETS . WORKSPACE ,
555+ mockConfigReader
556+ ) ;
557+
558+ expect ( result ) . toEqual ( [ ] ) ;
559+ } ) ;
560+ } ) ;
393561} ) ;
0 commit comments