Files
EasyCLIProxyAPI/tests/claudeCodeModels.test.ts
T
lzt404 b90445143c feat(claude-code): align model mapping UI with Claude Code settings
- Add per-role model rows with inline 1M context controls
- Add bulk action to apply Sonnet settings to all roles
- Persist startup model and context settings in official settings.json fields
- Preserve custom role mappings and Subagent configuration
- Add multilingual labels and UI regression coverage
- Validate behavior with real Claude Code 2.1.292
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 = { 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();
});