diff options
| author | shrutip90 <[email protected]> | 2025-08-19 21:20:41 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-08-20 04:20:41 +0000 |
| commit | d250293c2e0a4a50f5ef6b4b6cd3257730338d13 (patch) | |
| tree | da91b3cc7af02e40bc80df6857a2b2abcc12d4e3 /packages/cli/src/ui/hooks/useEditorSettings.test.ts | |
| parent | 179f1414daf9058a05d38a170c0d36ca9f2b8547 (diff) | |
Ignore workspace settings for untrusted folders (#6606)
Diffstat (limited to 'packages/cli/src/ui/hooks/useEditorSettings.test.ts')
| -rw-r--r-- | packages/cli/src/ui/hooks/useEditorSettings.test.ts | 283 |
1 files changed, 0 insertions, 283 deletions
diff --git a/packages/cli/src/ui/hooks/useEditorSettings.test.ts b/packages/cli/src/ui/hooks/useEditorSettings.test.ts deleted file mode 100644 index 7b056c2a..00000000 --- a/packages/cli/src/ui/hooks/useEditorSettings.test.ts +++ /dev/null @@ -1,283 +0,0 @@ -/** - * @license - * Copyright 2025 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -import { - afterEach, - beforeEach, - describe, - expect, - it, - vi, - type MockedFunction, -} from 'vitest'; -import { act } from 'react'; -import { renderHook } from '@testing-library/react'; -import { useEditorSettings } from './useEditorSettings.js'; -import { LoadedSettings, SettingScope } from '../../config/settings.js'; -import { MessageType, type HistoryItem } from '../types.js'; -import { - type EditorType, - checkHasEditorType, - allowEditorTypeInSandbox, -} from '@google/gemini-cli-core'; - -vi.mock('@google/gemini-cli-core', async () => { - const actual = await vi.importActual('@google/gemini-cli-core'); - return { - ...actual, - checkHasEditorType: vi.fn(() => true), - allowEditorTypeInSandbox: vi.fn(() => true), - }; -}); - -const mockCheckHasEditorType = vi.mocked(checkHasEditorType); -const mockAllowEditorTypeInSandbox = vi.mocked(allowEditorTypeInSandbox); - -describe('useEditorSettings', () => { - let mockLoadedSettings: LoadedSettings; - let mockSetEditorError: MockedFunction<(error: string | null) => void>; - let mockAddItem: MockedFunction< - (item: Omit<HistoryItem, 'id'>, timestamp: number) => void - >; - - beforeEach(() => { - vi.resetAllMocks(); - - mockLoadedSettings = { - setValue: vi.fn(), - } as unknown as LoadedSettings; - - mockSetEditorError = vi.fn(); - mockAddItem = vi.fn(); - - // Reset mock implementations to default - mockCheckHasEditorType.mockReturnValue(true); - mockAllowEditorTypeInSandbox.mockReturnValue(true); - }); - - afterEach(() => { - vi.restoreAllMocks(); - }); - - it('should initialize with dialog closed', () => { - const { result } = renderHook(() => - useEditorSettings(mockLoadedSettings, mockSetEditorError, mockAddItem), - ); - - expect(result.current.isEditorDialogOpen).toBe(false); - }); - - it('should open editor dialog when openEditorDialog is called', () => { - const { result } = renderHook(() => - useEditorSettings(mockLoadedSettings, mockSetEditorError, mockAddItem), - ); - - act(() => { - result.current.openEditorDialog(); - }); - - expect(result.current.isEditorDialogOpen).toBe(true); - }); - - it('should close editor dialog when exitEditorDialog is called', () => { - const { result } = renderHook(() => - useEditorSettings(mockLoadedSettings, mockSetEditorError, mockAddItem), - ); - act(() => { - result.current.openEditorDialog(); - result.current.exitEditorDialog(); - }); - expect(result.current.isEditorDialogOpen).toBe(false); - }); - - it('should handle editor selection successfully', () => { - const { result } = renderHook(() => - useEditorSettings(mockLoadedSettings, mockSetEditorError, mockAddItem), - ); - - const editorType: EditorType = 'vscode'; - const scope = SettingScope.User; - - act(() => { - result.current.openEditorDialog(); - result.current.handleEditorSelect(editorType, scope); - }); - - expect(mockLoadedSettings.setValue).toHaveBeenCalledWith( - scope, - 'preferredEditor', - editorType, - ); - - expect(mockAddItem).toHaveBeenCalledWith( - { - type: MessageType.INFO, - text: 'Editor preference set to "vscode" in User settings.', - }, - expect.any(Number), - ); - - expect(mockSetEditorError).toHaveBeenCalledWith(null); - expect(result.current.isEditorDialogOpen).toBe(false); - }); - - it('should handle clearing editor preference (undefined editor)', () => { - const { result } = renderHook(() => - useEditorSettings(mockLoadedSettings, mockSetEditorError, mockAddItem), - ); - - const scope = SettingScope.Workspace; - - act(() => { - result.current.openEditorDialog(); - result.current.handleEditorSelect(undefined, scope); - }); - - expect(mockLoadedSettings.setValue).toHaveBeenCalledWith( - scope, - 'preferredEditor', - undefined, - ); - - expect(mockAddItem).toHaveBeenCalledWith( - { - type: MessageType.INFO, - text: 'Editor preference cleared in Workspace settings.', - }, - expect.any(Number), - ); - - expect(mockSetEditorError).toHaveBeenCalledWith(null); - expect(result.current.isEditorDialogOpen).toBe(false); - }); - - it('should handle different editor types', () => { - const { result } = renderHook(() => - useEditorSettings(mockLoadedSettings, mockSetEditorError, mockAddItem), - ); - - const editorTypes: EditorType[] = ['cursor', 'windsurf', 'vim']; - const scope = SettingScope.User; - - editorTypes.forEach((editorType) => { - act(() => { - result.current.handleEditorSelect(editorType, scope); - }); - - expect(mockLoadedSettings.setValue).toHaveBeenCalledWith( - scope, - 'preferredEditor', - editorType, - ); - - expect(mockAddItem).toHaveBeenCalledWith( - { - type: MessageType.INFO, - text: `Editor preference set to "${editorType}" in User settings.`, - }, - expect.any(Number), - ); - }); - }); - - it('should handle different setting scopes', () => { - const { result } = renderHook(() => - useEditorSettings(mockLoadedSettings, mockSetEditorError, mockAddItem), - ); - - const editorType: EditorType = 'vscode'; - const scopes = [SettingScope.User, SettingScope.Workspace]; - - scopes.forEach((scope) => { - act(() => { - result.current.handleEditorSelect(editorType, scope); - }); - - expect(mockLoadedSettings.setValue).toHaveBeenCalledWith( - scope, - 'preferredEditor', - editorType, - ); - - expect(mockAddItem).toHaveBeenCalledWith( - { - type: MessageType.INFO, - text: `Editor preference set to "vscode" in ${scope} settings.`, - }, - expect.any(Number), - ); - }); - }); - - it('should not set preference for unavailable editors', () => { - const { result } = renderHook(() => - useEditorSettings(mockLoadedSettings, mockSetEditorError, mockAddItem), - ); - - mockCheckHasEditorType.mockReturnValue(false); - - const editorType: EditorType = 'vscode'; - const scope = SettingScope.User; - - act(() => { - result.current.openEditorDialog(); - result.current.handleEditorSelect(editorType, scope); - }); - - expect(mockLoadedSettings.setValue).not.toHaveBeenCalled(); - expect(mockAddItem).not.toHaveBeenCalled(); - expect(result.current.isEditorDialogOpen).toBe(true); - }); - - it('should not set preference for editors not allowed in sandbox', () => { - const { result } = renderHook(() => - useEditorSettings(mockLoadedSettings, mockSetEditorError, mockAddItem), - ); - - mockAllowEditorTypeInSandbox.mockReturnValue(false); - - const editorType: EditorType = 'vscode'; - const scope = SettingScope.User; - - act(() => { - result.current.openEditorDialog(); - result.current.handleEditorSelect(editorType, scope); - }); - - expect(mockLoadedSettings.setValue).not.toHaveBeenCalled(); - expect(mockAddItem).not.toHaveBeenCalled(); - expect(result.current.isEditorDialogOpen).toBe(true); - }); - - it('should handle errors during editor selection', () => { - const { result } = renderHook(() => - useEditorSettings(mockLoadedSettings, mockSetEditorError, mockAddItem), - ); - - const errorMessage = 'Failed to save settings'; - ( - mockLoadedSettings.setValue as MockedFunction< - typeof mockLoadedSettings.setValue - > - ).mockImplementation(() => { - throw new Error(errorMessage); - }); - - const editorType: EditorType = 'vscode'; - const scope = SettingScope.User; - - act(() => { - result.current.openEditorDialog(); - result.current.handleEditorSelect(editorType, scope); - }); - - expect(mockSetEditorError).toHaveBeenCalledWith( - `Failed to set editor preference: Error: ${errorMessage}`, - ); - expect(mockAddItem).not.toHaveBeenCalled(); - expect(result.current.isEditorDialogOpen).toBe(true); - }); -}); |
