DeepResearch / src /__tests__ /agent.test.ts
zhengr's picture
init
0bcc252
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);
});