diff options
Diffstat (limited to 'packages/cli/src/ui/App.test.tsx')
| -rw-r--r-- | packages/cli/src/ui/App.test.tsx | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/packages/cli/src/ui/App.test.tsx b/packages/cli/src/ui/App.test.tsx index 903f4b66..4abf2d06 100644 --- a/packages/cli/src/ui/App.test.tsx +++ b/packages/cli/src/ui/App.test.tsx @@ -20,7 +20,8 @@ import { import { LoadedSettings, SettingsFile, Settings } from '../config/settings.js'; import process from 'node:process'; import { useGeminiStream } from './hooks/useGeminiStream.js'; -import { StreamingState } from './types.js'; +import { useConsoleMessages } from './hooks/useConsoleMessages.js'; +import { StreamingState, ConsoleMessageItem } from './types.js'; import { Tips } from './components/Tips.js'; // Define a more complete mock server config based on actual Config @@ -192,6 +193,14 @@ vi.mock('./hooks/useLogger', () => ({ })), })); +vi.mock('./hooks/useConsoleMessages.js', () => ({ + useConsoleMessages: vi.fn(() => ({ + consoleMessages: [], + handleNewMessage: vi.fn(), + clearConsoleMessages: vi.fn(), + })), +})); + vi.mock('../config/config.js', async (importOriginal) => { const actual = await importOriginal(); return { @@ -692,4 +701,35 @@ describe('App UI', () => { ); }); }); + + describe('errorCount', () => { + it('should correctly sum the counts of error messages', async () => { + const mockConsoleMessages: ConsoleMessageItem[] = [ + { type: 'error', content: 'First error', count: 1 }, + { type: 'log', content: 'some log', count: 1 }, + { type: 'error', content: 'Second error', count: 3 }, + { type: 'warn', content: 'a warning', count: 1 }, + { type: 'error', content: 'Third error', count: 1 }, + ]; + + vi.mocked(useConsoleMessages).mockReturnValue({ + consoleMessages: mockConsoleMessages, + handleNewMessage: vi.fn(), + clearConsoleMessages: vi.fn(), + }); + + const { lastFrame, unmount } = render( + <App + config={mockConfig as unknown as ServerConfig} + settings={mockSettings} + version={mockVersion} + />, + ); + currentUnmount = unmount; + await Promise.resolve(); + + // Total error count should be 1 + 3 + 1 = 5 + expect(lastFrame()).toContain('5 errors'); + }); + }); }); |
