* test: stabilize suite and add coverage heatmap * ci: run full bun test suite in pr checks
84 lines
2.7 KiB
TypeScript
84 lines
2.7 KiB
TypeScript
import { afterEach, beforeEach, describe, expect, mock, test } from 'bun:test'
|
|
|
|
const originalEnv = { ...process.env }
|
|
const originalFetch = globalThis.fetch
|
|
|
|
async function importFreshModule() {
|
|
mock.restore()
|
|
return import(`./apiPreconnect.ts?ts=${Date.now()}-${Math.random()}`)
|
|
}
|
|
|
|
beforeEach(() => {
|
|
process.env = { ...originalEnv }
|
|
})
|
|
|
|
afterEach(() => {
|
|
process.env = { ...originalEnv }
|
|
globalThis.fetch = originalFetch
|
|
mock.restore()
|
|
})
|
|
|
|
describe('preconnectAnthropicApi', () => {
|
|
test('does not fetch when OpenAI mode is enabled', async () => {
|
|
process.env.CLAUDE_CODE_USE_OPENAI = '1'
|
|
mock.module('./model/providers.js', () => ({
|
|
getAPIProvider: () => 'openai',
|
|
}))
|
|
const fetchMock = mock(() => Promise.resolve(new Response(null, { status: 200 })))
|
|
globalThis.fetch = fetchMock as typeof globalThis.fetch
|
|
|
|
const { preconnectAnthropicApi } = await importFreshModule()
|
|
preconnectAnthropicApi()
|
|
|
|
expect(fetchMock).not.toHaveBeenCalled()
|
|
})
|
|
|
|
test('does not fetch when Gemini mode is enabled', async () => {
|
|
process.env.CLAUDE_CODE_USE_GEMINI = '1'
|
|
mock.module('./model/providers.js', () => ({
|
|
getAPIProvider: () => 'gemini',
|
|
}))
|
|
const fetchMock = mock(() => Promise.resolve(new Response(null, { status: 200 })))
|
|
globalThis.fetch = fetchMock as typeof globalThis.fetch
|
|
|
|
const { preconnectAnthropicApi } = await importFreshModule()
|
|
preconnectAnthropicApi()
|
|
|
|
expect(fetchMock).not.toHaveBeenCalled()
|
|
})
|
|
|
|
test('does not fetch when GitHub mode is enabled', async () => {
|
|
process.env.CLAUDE_CODE_USE_GITHUB = '1'
|
|
mock.module('./model/providers.js', () => ({
|
|
getAPIProvider: () => 'github',
|
|
}))
|
|
const fetchMock = mock(() => Promise.resolve(new Response(null, { status: 200 })))
|
|
globalThis.fetch = fetchMock as typeof globalThis.fetch
|
|
|
|
const { preconnectAnthropicApi } = await importFreshModule()
|
|
preconnectAnthropicApi()
|
|
|
|
expect(fetchMock).not.toHaveBeenCalled()
|
|
})
|
|
|
|
test('fetches in first-party mode', async () => {
|
|
delete process.env.CLAUDE_CODE_USE_OPENAI
|
|
delete process.env.CLAUDE_CODE_USE_GEMINI
|
|
delete process.env.CLAUDE_CODE_USE_GITHUB
|
|
delete process.env.CLAUDE_CODE_USE_BEDROCK
|
|
delete process.env.CLAUDE_CODE_USE_VERTEX
|
|
delete process.env.CLAUDE_CODE_USE_FOUNDRY
|
|
|
|
mock.module('./model/providers.js', () => ({
|
|
getAPIProvider: () => 'firstParty',
|
|
}))
|
|
const fetchMock = mock(() => Promise.resolve(new Response(null, { status: 200 })))
|
|
globalThis.fetch = fetchMock as typeof globalThis.fetch
|
|
|
|
const { preconnectAnthropicApi } = await importFreshModule()
|
|
preconnectAnthropicApi()
|
|
|
|
expect(fetchMock).toHaveBeenCalledTimes(1)
|
|
})
|
|
})
|