wip: agui integration
This commit is contained in:
40
tests/renderer/navigation/useChatSurfaceState.test.tsx
Normal file
40
tests/renderer/navigation/useChatSurfaceState.test.tsx
Normal file
@@ -0,0 +1,40 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { act, renderHook } from '@testing-library/react';
|
||||
import { useChatSurfaceState } from '../../../src/renderer/navigation/useChatSurfaceState';
|
||||
|
||||
describe('useChatSurfaceState', () => {
|
||||
it('tracks a full user-assistant turn including streaming and tool calls', () => {
|
||||
const { result } = renderHook(() => useChatSurfaceState());
|
||||
|
||||
act(() => {
|
||||
result.current.beginUserTurn('conv-1', 'hello');
|
||||
result.current.appendStreamDelta('A');
|
||||
result.current.appendStreamDelta('B');
|
||||
result.current.recordToolCall('list_posts', { query: 'hello' });
|
||||
result.current.recordToolResult('list_posts');
|
||||
result.current.finalizeAssistantTurn('conv-1', 'AB');
|
||||
});
|
||||
|
||||
expect(result.current.messages).toHaveLength(2);
|
||||
expect(result.current.messages[0].role).toBe('user');
|
||||
expect(result.current.messages[1].role).toBe('assistant');
|
||||
expect(result.current.messages[1].content).toBe('AB');
|
||||
expect(result.current.messages[1].toolCalls).toContain('list_posts');
|
||||
expect(result.current.isStreaming).toBe(false);
|
||||
expect(result.current.streamingContent).toBe('');
|
||||
});
|
||||
|
||||
it('aborts a stream into a partial assistant message', () => {
|
||||
const { result } = renderHook(() => useChatSurfaceState());
|
||||
|
||||
act(() => {
|
||||
result.current.beginUserTurn('conv-2', 'hello');
|
||||
result.current.appendStreamDelta('partial content');
|
||||
result.current.abortStreaming('conv-2', 'Cancelled');
|
||||
});
|
||||
|
||||
expect(result.current.messages).toHaveLength(2);
|
||||
expect(result.current.messages[1].content).toContain('partial content');
|
||||
expect(result.current.messages[1].content).toContain('Cancelled');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user