import { expect, test } from 'vitest' import { renderHook } from '@testing-library/react'; import { useExtractReferences } from './useExtractReferences'; import { getFileReferenceId } from './utils'; import { TextUIPart } from 'ai'; test('useExtractReferences extracts file references from text content', () => { const part: TextUIPart = { type: 'text', text: 'The auth flow is implemented in @file:{github.com/sourcebot-dev/sourcebot::auth.ts} and uses sessions @file:{github.com/sourcebot-dev/sourcebot::auth.ts:45-60}.' } const { result } = renderHook(() => useExtractReferences(part)); expect(result.current).toHaveLength(2); expect(result.current[0]).toMatchObject({ repo: 'github.com/sourcebot-dev/sourcebot', path: 'auth.ts', id: getFileReferenceId({ repo: 'github.com/sourcebot-dev/sourcebot', path: 'auth.ts' }), type: 'file', }); expect(result.current[1]).toMatchObject({ repo: 'github.com/sourcebot-dev/sourcebot', path: 'auth.ts', id: getFileReferenceId({ repo: 'github.com/sourcebot-dev/sourcebot', path: 'auth.ts', range: { startLine: 45, endLine: 60, } }), type: 'file', range: { startLine: 45, endLine: 60, } }); });