68 lines
2.1 KiB
TypeScript
68 lines
2.1 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import {
|
|
OPENAI_CC_SWITCH_CODEX_MODEL,
|
|
buildCcSwitchImportDeeplink
|
|
} from '@/utils/ccswitchImport'
|
|
import type { GroupPlatform } from '@/types'
|
|
|
|
function paramsFromDeeplink(deeplink: string): URLSearchParams {
|
|
const query = deeplink.split('?')[1] || ''
|
|
return new URLSearchParams(query)
|
|
}
|
|
|
|
describe('ccswitchImport utils', () => {
|
|
const baseInput = {
|
|
baseUrl: 'https://api.example.com',
|
|
providerName: 'Sub2API',
|
|
apiKey: 'sk-test',
|
|
usageScript: 'return true'
|
|
}
|
|
|
|
it('adds the Codex model parameter for OpenAI imports', () => {
|
|
const params = paramsFromDeeplink(
|
|
buildCcSwitchImportDeeplink({
|
|
...baseInput,
|
|
platform: 'openai',
|
|
clientType: 'claude'
|
|
})
|
|
)
|
|
|
|
expect(params.get('resource')).toBe('provider')
|
|
expect(params.get('app')).toBe('codex')
|
|
expect(params.get('endpoint')).toBe(baseInput.baseUrl)
|
|
expect(params.get('model')).toBe(OPENAI_CC_SWITCH_CODEX_MODEL)
|
|
expect(atob(params.get('usageScript') || '')).toBe(baseInput.usageScript)
|
|
})
|
|
|
|
it.each([
|
|
{ platform: 'anthropic' as GroupPlatform, clientType: 'claude' as const, app: 'claude' },
|
|
{ platform: 'gemini' as GroupPlatform, clientType: 'gemini' as const, app: 'gemini' }
|
|
])('does not add a model parameter for $platform imports', ({ platform, clientType, app }) => {
|
|
const params = paramsFromDeeplink(
|
|
buildCcSwitchImportDeeplink({
|
|
...baseInput,
|
|
platform,
|
|
clientType
|
|
})
|
|
)
|
|
|
|
expect(params.get('app')).toBe(app)
|
|
expect(params.get('endpoint')).toBe(baseInput.baseUrl)
|
|
expect(params.has('model')).toBe(false)
|
|
})
|
|
|
|
it('keeps Antigravity imports on the selected client endpoint without a model parameter', () => {
|
|
const params = paramsFromDeeplink(
|
|
buildCcSwitchImportDeeplink({
|
|
...baseInput,
|
|
platform: 'antigravity',
|
|
clientType: 'gemini'
|
|
})
|
|
)
|
|
|
|
expect(params.get('app')).toBe('gemini')
|
|
expect(params.get('endpoint')).toBe(`${baseInput.baseUrl}/antigravity`)
|
|
expect(params.has('model')).toBe(false)
|
|
})
|
|
})
|