| 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) |
| }) |
| }) |
|
|