summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/hooks/useGeminiStream.test.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src/ui/hooks/useGeminiStream.test.tsx')
-rw-r--r--packages/cli/src/ui/hooks/useGeminiStream.test.tsx91
1 files changed, 65 insertions, 26 deletions
diff --git a/packages/cli/src/ui/hooks/useGeminiStream.test.tsx b/packages/cli/src/ui/hooks/useGeminiStream.test.tsx
index 1335eb8e..f41f7f9c 100644
--- a/packages/cli/src/ui/hooks/useGeminiStream.test.tsx
+++ b/packages/cli/src/ui/hooks/useGeminiStream.test.tsx
@@ -18,6 +18,7 @@ import {
import { Config } from '@gemini-cli/core';
import { Part, PartListUnion } from '@google/genai';
import { UseHistoryManagerReturn } from './useHistoryManager.js';
+import { Dispatch, SetStateAction } from 'react';
// --- MOCKS ---
const mockSendMessageStream = vi
@@ -309,16 +310,41 @@ describe('useGeminiStream', () => {
const client = geminiClient || mockConfig.getGeminiClient();
- const { result, rerender } = renderHook(() =>
- useGeminiStream(
- client,
- mockAddItem as unknown as UseHistoryManagerReturn['addItem'],
- mockSetShowHelp,
- mockConfig,
- mockOnDebugMessage,
- mockHandleSlashCommand,
- false, // shellModeActive
- ),
+ const { result, rerender } = renderHook(
+ (props: {
+ client: any;
+ addItem: UseHistoryManagerReturn['addItem'];
+ setShowHelp: Dispatch<SetStateAction<boolean>>;
+ config: Config;
+ onDebugMessage: (message: string) => void;
+ handleSlashCommand: (
+ command: PartListUnion,
+ ) =>
+ | import('./slashCommandProcessor.js').SlashCommandActionReturn
+ | boolean;
+ shellModeActive: boolean;
+ }) =>
+ useGeminiStream(
+ props.client,
+ props.addItem,
+ props.setShowHelp,
+ props.config,
+ props.onDebugMessage,
+ props.handleSlashCommand,
+ props.shellModeActive,
+ ),
+ {
+ initialProps: {
+ client,
+ addItem: mockAddItem as unknown as UseHistoryManagerReturn['addItem'],
+ setShowHelp: mockSetShowHelp,
+ config: mockConfig,
+ onDebugMessage: mockOnDebugMessage,
+ handleSlashCommand:
+ mockHandleSlashCommand as unknown as typeof mockHandleSlashCommand,
+ shellModeActive: false,
+ },
+ },
);
return {
result,
@@ -326,7 +352,6 @@ describe('useGeminiStream', () => {
mockMarkToolsAsSubmitted,
mockSendMessageStream,
client,
- // mockFilter removed
};
};
@@ -423,24 +448,29 @@ describe('useGeminiStream', () => {
} as TrackedCancelledToolCall,
];
- const hookResult = await act(async () =>
- renderTestHook(simplifiedToolCalls),
- );
-
const {
+ rerender,
mockMarkToolsAsSubmitted,
mockSendMessageStream: localMockSendMessageStream,
- } = hookResult!;
-
- // It seems the initial render + effect run should be enough.
- // If rerender was for a specific state change, it might still be needed.
- // For now, let's test if the initial effect run (covered by the first act) is sufficient.
- // If not, we can add back: await act(async () => { rerender({}); });
+ client,
+ } = renderTestHook(simplifiedToolCalls);
- expect(mockMarkToolsAsSubmitted).toHaveBeenCalledWith(['call1', 'call2']);
+ act(() => {
+ rerender({
+ client,
+ addItem: mockAddItem as unknown as UseHistoryManagerReturn['addItem'],
+ setShowHelp: mockSetShowHelp,
+ config: mockConfig,
+ onDebugMessage: mockOnDebugMessage,
+ handleSlashCommand:
+ mockHandleSlashCommand as unknown as typeof mockHandleSlashCommand,
+ shellModeActive: false,
+ });
+ });
await waitFor(() => {
- expect(localMockSendMessageStream).toHaveBeenCalledTimes(1);
+ expect(mockMarkToolsAsSubmitted).toHaveBeenCalledTimes(0);
+ expect(localMockSendMessageStream).toHaveBeenCalledTimes(0);
});
const expectedMergedResponse = mergePartListUnions([
@@ -479,12 +509,21 @@ describe('useGeminiStream', () => {
client,
);
- await act(async () => {
- rerender({} as any);
+ act(() => {
+ rerender({
+ client,
+ addItem: mockAddItem as unknown as UseHistoryManagerReturn['addItem'],
+ setShowHelp: mockSetShowHelp,
+ config: mockConfig,
+ onDebugMessage: mockOnDebugMessage,
+ handleSlashCommand:
+ mockHandleSlashCommand as unknown as typeof mockHandleSlashCommand,
+ shellModeActive: false,
+ });
});
await waitFor(() => {
- expect(mockMarkToolsAsSubmitted).toHaveBeenCalledWith(['1']);
+ expect(mockMarkToolsAsSubmitted).toHaveBeenCalledTimes(0);
expect(client.addHistory).toHaveBeenCalledTimes(2);
expect(client.addHistory).toHaveBeenCalledWith({
role: 'user',