diff options
Diffstat (limited to 'packages/cli/src/ui/App.test.tsx')
| -rw-r--r-- | packages/cli/src/ui/App.test.tsx | 62 |
1 files changed, 46 insertions, 16 deletions
diff --git a/packages/cli/src/ui/App.test.tsx b/packages/cli/src/ui/App.test.tsx index 8390dac1..22547ae1 100644 --- a/packages/cli/src/ui/App.test.tsx +++ b/packages/cli/src/ui/App.test.tsx @@ -185,19 +185,30 @@ describe('App UI', () => { let currentUnmount: (() => void) | undefined; const createMockSettings = ( - settings: Partial<Settings> = {}, + settings: { + system?: Partial<Settings>; + user?: Partial<Settings>; + workspace?: Partial<Settings>; + } = {}, ): LoadedSettings => { + const systemSettingsFile: SettingsFile = { + path: '/system/settings.json', + settings: settings.system || {}, + }; const userSettingsFile: SettingsFile = { path: '/user/settings.json', - settings: {}, + settings: settings.user || {}, }; const workspaceSettingsFile: SettingsFile = { path: '/workspace/.gemini/settings.json', - settings: { - ...settings, - }, + settings: settings.workspace || {}, }; - return new LoadedSettings(userSettingsFile, workspaceSettingsFile, []); + return new LoadedSettings( + systemSettingsFile, + userSettingsFile, + workspaceSettingsFile, + [], + ); }; beforeEach(() => { @@ -222,7 +233,7 @@ describe('App UI', () => { mockConfig.getShowMemoryUsage.mockReturnValue(false); // Default for most tests // Ensure a theme is set so the theme dialog does not appear. - mockSettings = createMockSettings({ theme: 'Default' }); + mockSettings = createMockSettings({ workspace: { theme: 'Default' } }); }); afterEach(() => { @@ -268,8 +279,7 @@ describe('App UI', () => { it('should display custom contextFileName in footer when set and count is 1', async () => { mockSettings = createMockSettings({ - contextFileName: 'AGENTS.md', - theme: 'Default', + workspace: { contextFileName: 'AGENTS.md', theme: 'Default' }, }); mockConfig.getGeminiMdFileCount.mockReturnValue(1); mockConfig.getDebugMode.mockReturnValue(false); @@ -288,8 +298,10 @@ describe('App UI', () => { it('should display a generic message when multiple context files with different names are provided', async () => { mockSettings = createMockSettings({ - contextFileName: ['AGENTS.md', 'CONTEXT.md'], - theme: 'Default', + workspace: { + contextFileName: ['AGENTS.md', 'CONTEXT.md'], + theme: 'Default', + }, }); mockConfig.getGeminiMdFileCount.mockReturnValue(2); mockConfig.getDebugMode.mockReturnValue(false); @@ -308,8 +320,7 @@ describe('App UI', () => { it('should display custom contextFileName with plural when set and count is > 1', async () => { mockSettings = createMockSettings({ - contextFileName: 'MY_NOTES.TXT', - theme: 'Default', + workspace: { contextFileName: 'MY_NOTES.TXT', theme: 'Default' }, }); mockConfig.getGeminiMdFileCount.mockReturnValue(3); mockConfig.getDebugMode.mockReturnValue(false); @@ -328,8 +339,7 @@ describe('App UI', () => { it('should not display context file message if count is 0, even if contextFileName is set', async () => { mockSettings = createMockSettings({ - contextFileName: 'ANY_FILE.MD', - theme: 'Default', + workspace: { contextFileName: 'ANY_FILE.MD', theme: 'Default' }, }); mockConfig.getGeminiMdFileCount.mockReturnValue(0); mockConfig.getDebugMode.mockReturnValue(false); @@ -399,7 +409,9 @@ describe('App UI', () => { it('should not display Tips component when hideTips is true', async () => { mockSettings = createMockSettings({ - hideTips: true, + workspace: { + hideTips: true, + }, }); const { unmount } = render( @@ -413,6 +425,24 @@ describe('App UI', () => { expect(vi.mocked(Tips)).not.toHaveBeenCalled(); }); + it('should show tips if system says show, but workspace and user settings say hide', async () => { + mockSettings = createMockSettings({ + system: { hideTips: false }, + user: { hideTips: true }, + workspace: { hideTips: true }, + }); + + const { unmount } = render( + <App + config={mockConfig as unknown as ServerConfig} + settings={mockSettings} + />, + ); + currentUnmount = unmount; + await Promise.resolve(); + expect(vi.mocked(Tips)).toHaveBeenCalled(); + }); + describe('when no theme is set', () => { let originalNoColor: string | undefined; |
