Files
EasyCLIProxyAPI/tests/claudeCodeModels.test.ts
T
lzt404 97ba1051a2 feat(claude-code): refine model mapping UI and defaults
- Add independent Fable model mapping
- Rename startup model to default model
- Default to the Opus mapping and preserve Subagent inheritance
- Replace 1M checkboxes with standard toggle switches
- Align form fields and simplify explanatory text
- Remove bulk role synchronization
- Update translations and regression tests
2026-10-08 18:36:58 +08:00

19 lines
1.2 KiB
TypeScript

import { expect, test } from 'bun:test';
import { claudeCodeModelPreview, isKnownClaudeCodeModel } from '../src/services/claudeCodeModels';
const routes = { fable: 'model-f', fable1m: false, opus: 'model-a', sonnet: 'model-b', haiku: 'model-c', opus1m: true, sonnet1m: false, haiku1m: false };
test('role selections follow changed mappings and role context flags', () => {
expect(claudeCodeModelPreview('opus', routes).model).toBe('model-a[1m]');
expect(claudeCodeModelPreview('sonnet', { ...routes, sonnet: 'model-d', sonnet1m: true }).model).toBe('model-d[1m]');
});
test('direct model stays pinned and has its own context flag', () => {
expect(claudeCodeModelPreview('model-a', routes)).toEqual({ role: null, model: 'model-a', context1m: false });
expect(claudeCodeModelPreview('model-a[1m]', { ...routes, opus: 'other' }).model).toBe('model-a[1m]');
});
test('role aliases do not need to appear in CPA model list', () => {
expect(isKnownClaudeCodeModel('sonnet[1m]', [])).toBeTrue();
expect(isKnownClaudeCodeModel('', [])).toBeTrue();
expect(isKnownClaudeCodeModel('model-a[1m]', [{ name: 'model-a' }])).toBeTrue();
expect(isKnownClaudeCodeModel('unknown', [{ name: 'model-a' }])).toBeFalse();
});