Spaces:
Sleeping
Sleeping
import { getResponse } from '../agent'; | |
import { generateObject } from 'ai'; | |
import { search } from '../tools/jina-search'; | |
import { readUrl } from '../tools/read'; | |
// Mock external dependencies | |
jest.mock('ai', () => ({ | |
generateObject: jest.fn() | |
})); | |
jest.mock('../tools/jina-search', () => ({ | |
search: jest.fn() | |
})); | |
jest.mock('../tools/read', () => ({ | |
readUrl: jest.fn() | |
})); | |
describe('getResponse', () => { | |
beforeEach(() => { | |
// Mock generateObject to return a valid response | |
(generateObject as jest.Mock).mockResolvedValue({ | |
object: { action: 'answer', answer: 'mocked response', references: [], think: 'mocked thought' }, | |
usage: { totalTokens: 100 } | |
}); | |
// Mock search to return empty results | |
(search as jest.Mock).mockResolvedValue({ | |
response: { data: [] } | |
}); | |
// Mock readUrl to return empty content | |
(readUrl as jest.Mock).mockResolvedValue({ | |
response: { data: { content: '', url: 'test-url' } }, | |
tokens: 0 | |
}); | |
}); | |
afterEach(() => { | |
jest.useRealTimers(); | |
jest.clearAllMocks(); | |
}); | |
it('should handle search action', async () => { | |
const result = await getResponse('What is TypeScript?', 50000); // Increased token budget to handle real-world usage | |
expect(result.result.action).toBeDefined(); | |
expect(result.context).toBeDefined(); | |
expect(result.context.tokenTracker).toBeDefined(); | |
expect(result.context.actionTracker).toBeDefined(); | |
}, 30000); | |
}); | |