mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-18 22:35:51 +00:00
Add brave as alternative WebSearchTool
This commit is contained in:
70
src/tools/WebSearchTool/__tests__/adapterFactory.test.ts
Normal file
70
src/tools/WebSearchTool/__tests__/adapterFactory.test.ts
Normal file
@@ -0,0 +1,70 @@
|
||||
import { afterEach, describe, expect, mock, test } from 'bun:test'
|
||||
|
||||
let isFirstPartyBaseUrl = true
|
||||
|
||||
mock.module('../adapters/apiAdapter.js', () => ({
|
||||
ApiSearchAdapter: class ApiSearchAdapter {},
|
||||
}))
|
||||
|
||||
mock.module('../adapters/bingAdapter.js', () => ({
|
||||
BingSearchAdapter: class BingSearchAdapter {},
|
||||
}))
|
||||
|
||||
mock.module('../adapters/braveAdapter.js', () => ({
|
||||
BraveSearchAdapter: class BraveSearchAdapter {},
|
||||
}))
|
||||
|
||||
mock.module('../../../utils/model/providers.js', () => ({
|
||||
isFirstPartyAnthropicBaseUrl: () => isFirstPartyBaseUrl,
|
||||
}))
|
||||
|
||||
const { createAdapter } = await import('../adapters/index')
|
||||
|
||||
const originalWebSearchAdapter = process.env.WEB_SEARCH_ADAPTER
|
||||
|
||||
afterEach(() => {
|
||||
isFirstPartyBaseUrl = true
|
||||
|
||||
if (originalWebSearchAdapter === undefined) {
|
||||
delete process.env.WEB_SEARCH_ADAPTER
|
||||
} else {
|
||||
process.env.WEB_SEARCH_ADAPTER = originalWebSearchAdapter
|
||||
}
|
||||
})
|
||||
|
||||
describe('createAdapter', () => {
|
||||
test('reuses the same instance when the selected backend does not change', () => {
|
||||
process.env.WEB_SEARCH_ADAPTER = 'brave'
|
||||
|
||||
const firstAdapter = createAdapter()
|
||||
const secondAdapter = createAdapter()
|
||||
|
||||
expect(firstAdapter).toBe(secondAdapter)
|
||||
expect(firstAdapter.constructor.name).toBe('BraveSearchAdapter')
|
||||
})
|
||||
|
||||
test('rebuilds the adapter when WEB_SEARCH_ADAPTER changes', () => {
|
||||
process.env.WEB_SEARCH_ADAPTER = 'brave'
|
||||
const braveAdapter = createAdapter()
|
||||
|
||||
process.env.WEB_SEARCH_ADAPTER = 'bing'
|
||||
const bingAdapter = createAdapter()
|
||||
|
||||
expect(bingAdapter).not.toBe(braveAdapter)
|
||||
expect(bingAdapter.constructor.name).toBe('BingSearchAdapter')
|
||||
})
|
||||
|
||||
test('selects the API adapter for first-party Anthropic URLs', () => {
|
||||
delete process.env.WEB_SEARCH_ADAPTER
|
||||
isFirstPartyBaseUrl = true
|
||||
|
||||
expect(createAdapter().constructor.name).toBe('ApiSearchAdapter')
|
||||
})
|
||||
|
||||
test('selects the Bing adapter for third-party Anthropic base URLs', () => {
|
||||
delete process.env.WEB_SEARCH_ADAPTER
|
||||
isFirstPartyBaseUrl = false
|
||||
|
||||
expect(createAdapter().constructor.name).toBe('BingSearchAdapter')
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user