Download packages/cli/src/ui/commands/clearCommand.test.ts from SaylorTwift/gemini-cli: direct link, hf CLI and curl.
- Browser
- Download file 4.07 kB
-
https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/packages/cli/src/ui/commands/clearCommand.test.ts
- Command line
-
hf download hf://SaylorTwift/gemini-cli/packages/cli/src/ui/commands/clearCommand.test.ts
-
curl -L -o clearCommand.test.ts https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/packages/cli/src/ui/commands/clearCommand.test.ts
4.07 kB
| /** | |
| * @license | |
| * Copyright 2025 Google LLC | |
| * SPDX-License-Identifier: Apache-2.0 | |
| */ | |
| import { vi, describe, it, expect, beforeEach, type Mock } from 'vitest'; | |
| import { clearCommand } from './clearCommand.js'; | |
| import { type CommandContext } from './types.js'; | |
| import { createMockCommandContext } from '../../test-utils/mockCommandContext.js'; | |
| // Mock the telemetry service | |
| vi.mock('@google/gemini-cli-core', async () => { | |
| const actual = await vi.importActual('@google/gemini-cli-core'); | |
| return { | |
| ...actual, | |
| uiTelemetryService: { | |
| setLastPromptTokenCount: vi.fn(), | |
| clear: vi.fn(), | |
| }, | |
| }; | |
| }); | |
| import { uiTelemetryService, type GeminiClient } from '@google/gemini-cli-core'; | |
| describe('clearCommand', () => { | |
| let mockContext: CommandContext; | |
| let mockResetChat: ReturnType<typeof vi.fn>; | |
| let mockHintClear: ReturnType<typeof vi.fn>; | |
| beforeEach(() => { | |
| mockResetChat = vi.fn().mockResolvedValue(undefined); | |
| mockHintClear = vi.fn(); | |
| const mockGetChatRecordingService = vi.fn(); | |
| vi.clearAllMocks(); | |
| mockContext = createMockCommandContext({ | |
| services: { | |
| agentContext: { | |
| config: { | |
| getEnableHooks: vi.fn().mockReturnValue(false), | |
| resetNewSessionState: vi.fn(), | |
| getMessageBus: vi.fn().mockReturnValue(undefined), | |
| getHookSystem: vi.fn().mockReturnValue({ | |
| fireSessionEndEvent: vi.fn().mockResolvedValue(undefined), | |
| fireSessionStartEvent: vi.fn().mockResolvedValue(undefined), | |
| }), | |
| injectionService: { | |
| clear: mockHintClear, | |
| }, | |
| }, | |
| geminiClient: { | |
| resetChat: mockResetChat, | |
| getChat: () => ({ | |
| getChatRecordingService: mockGetChatRecordingService, | |
| }), | |
| } as unknown as GeminiClient, | |
| }, | |
| }, | |
| }); | |
| }); | |
| it('should set debug message, reset chat, reset telemetry, clear hints, and clear UI when config is available', async () => { | |
| if (!clearCommand.action) { | |
| throw new Error('clearCommand must have an action.'); | |
| } | |
| await clearCommand.action(mockContext, ''); | |
| expect(mockContext.ui.setDebugMessage).toHaveBeenCalledWith( | |
| 'Clearing terminal and resetting chat.', | |
| ); | |
| expect(mockContext.ui.setDebugMessage).toHaveBeenCalledTimes(1); | |
| expect(mockResetChat).toHaveBeenCalledTimes(1); | |
| expect(mockHintClear).toHaveBeenCalledTimes(1); | |
| expect( | |
| mockContext.services.agentContext?.config.resetNewSessionState, | |
| ).toHaveBeenCalledTimes(1); | |
| expect(uiTelemetryService.clear).toHaveBeenCalled(); | |
| expect(uiTelemetryService.clear).toHaveBeenCalledTimes(1); | |
| expect(mockContext.ui.clear).toHaveBeenCalledTimes(1); | |
| // Check the order of operations. | |
| const setDebugMessageOrder = (mockContext.ui.setDebugMessage as Mock).mock | |
| .invocationCallOrder[0]; | |
| const resetChatOrder = mockResetChat.mock.invocationCallOrder[0]; | |
| const resetTelemetryOrder = (uiTelemetryService.clear as Mock).mock | |
| .invocationCallOrder[0]; | |
| const clearOrder = (mockContext.ui.clear as Mock).mock | |
| .invocationCallOrder[0]; | |
| expect(setDebugMessageOrder).toBeLessThan(resetChatOrder); | |
| expect(resetChatOrder).toBeLessThan(resetTelemetryOrder); | |
| expect(resetTelemetryOrder).toBeLessThan(clearOrder); | |
| }); | |
| it('should not attempt to reset chat if config service is not available', async () => { | |
| if (!clearCommand.action) { | |
| throw new Error('clearCommand must have an action.'); | |
| } | |
| const nullConfigContext = createMockCommandContext({ | |
| services: { | |
| agentContext: null, | |
| }, | |
| }); | |
| await clearCommand.action(nullConfigContext, ''); | |
| expect(nullConfigContext.ui.setDebugMessage).toHaveBeenCalledWith( | |
| 'Clearing terminal.', | |
| ); | |
| expect(mockResetChat).not.toHaveBeenCalled(); | |
| expect(uiTelemetryService.clear).toHaveBeenCalled(); | |
| expect(uiTelemetryService.clear).toHaveBeenCalledTimes(1); | |
| expect(nullConfigContext.ui.clear).toHaveBeenCalledTimes(1); | |
| }); | |
| }); | |