const GoogleSearch = require('../GoogleSearch'); jest.mock('node-fetch'); jest.mock('@langchain/core/utils/env'); describe('GoogleSearch', () => { let originalEnv; const mockApiKey = 'mock_api'; const mockSearchEngineId = 'mock_search_engine_id'; beforeAll(() => { originalEnv = { ...process.env }; }); beforeEach(() => { jest.resetModules(); process.env = { ...originalEnv, GOOGLE_SEARCH_API_KEY: mockApiKey, GOOGLE_CSE_ID: mockSearchEngineId, }; }); afterEach(() => { jest.clearAllMocks(); process.env = originalEnv; }); it('should use mockApiKey and mockSearchEngineId when environment variables are not set', () => { const instance = new GoogleSearch({ GOOGLE_SEARCH_API_KEY: mockApiKey, GOOGLE_CSE_ID: mockSearchEngineId, }); expect(instance.apiKey).toBe(mockApiKey); expect(instance.searchEngineId).toBe(mockSearchEngineId); }); it('should throw an error if GOOGLE_SEARCH_API_KEY or GOOGLE_CSE_ID is missing', () => { delete process.env.GOOGLE_SEARCH_API_KEY; expect(() => new GoogleSearch()).toThrow( 'Missing GOOGLE_SEARCH_API_KEY or GOOGLE_CSE_ID environment variable.', ); process.env.GOOGLE_SEARCH_API_KEY = mockApiKey; delete process.env.GOOGLE_CSE_ID; expect(() => new GoogleSearch()).toThrow( 'Missing GOOGLE_SEARCH_API_KEY or GOOGLE_CSE_ID environment variable.', ); }); });