summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/hooks/slashCommandProcessor.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src/ui/hooks/slashCommandProcessor.test.ts')
-rw-r--r--packages/cli/src/ui/hooks/slashCommandProcessor.test.ts37
1 files changed, 37 insertions, 0 deletions
diff --git a/packages/cli/src/ui/hooks/slashCommandProcessor.test.ts b/packages/cli/src/ui/hooks/slashCommandProcessor.test.ts
index 221893a2..3fcdff97 100644
--- a/packages/cli/src/ui/hooks/slashCommandProcessor.test.ts
+++ b/packages/cli/src/ui/hooks/slashCommandProcessor.test.ts
@@ -61,10 +61,15 @@ import {
MCPServerStatus,
getMCPServerStatus,
} from '@gemini-cli/core';
+import { useSession } from '../contexts/SessionContext.js';
import * as ShowMemoryCommandModule from './useShowMemoryCommand.js';
import { GIT_COMMIT_INFO } from '../../generated/git-commit.js';
+vi.mock('../contexts/SessionContext.js', () => ({
+ useSession: vi.fn(),
+}));
+
vi.mock('./useShowMemoryCommand.js', () => ({
SHOW_MEMORY_COMMAND_NAME: '/memory show',
createShowMemoryAction: vi.fn(() => vi.fn()),
@@ -84,6 +89,7 @@ describe('useSlashCommandProcessor', () => {
let mockPerformMemoryRefresh: ReturnType<typeof vi.fn>;
let mockConfig: Config;
let mockCorgiMode: ReturnType<typeof vi.fn>;
+ const mockUseSession = useSession as Mock;
beforeEach(() => {
mockAddItem = vi.fn();
@@ -99,6 +105,9 @@ describe('useSlashCommandProcessor', () => {
getModel: vi.fn(() => 'test-model'),
} as unknown as Config;
mockCorgiMode = vi.fn();
+ mockUseSession.mockReturnValue({
+ startTime: new Date('2025-01-01T00:00:00.000Z'),
+ });
(open as Mock).mockClear();
mockProcessExit.mockClear();
@@ -230,6 +239,34 @@ describe('useSlashCommandProcessor', () => {
});
});
+ describe('/stats command', () => {
+ it('should show the session duration', async () => {
+ const { handleSlashCommand } = getProcessor();
+ let commandResult: SlashCommandActionReturn | boolean = false;
+
+ // Mock current time
+ const mockDate = new Date('2025-01-01T00:01:05.000Z');
+ vi.setSystemTime(mockDate);
+
+ await act(async () => {
+ commandResult = handleSlashCommand('/stats');
+ });
+
+ expect(mockAddItem).toHaveBeenNthCalledWith(
+ 2,
+ expect.objectContaining({
+ type: MessageType.INFO,
+ text: 'Session duration: 1m 5s',
+ }),
+ expect.any(Number),
+ );
+ expect(commandResult).toBe(true);
+
+ // Restore system time
+ vi.useRealTimers();
+ });
+ });
+
describe('Other commands', () => {
it('/help should open help and return true', async () => {
const { handleSlashCommand } = getProcessor();