mirror of
https://github.com/tiennm99/ccs.git
synced 2026-07-15 20:20:09 +00:00
89 lines
2.7 KiB
TypeScript
89 lines
2.7 KiB
TypeScript
import { describe, expect, it } from 'bun:test';
|
|
import {
|
|
parseThinkingCommandArgs,
|
|
parseThinkingOverrideInput,
|
|
} from '../../../src/commands/config-thinking-command';
|
|
import { clearProviderOverride } from '../../../src/commands/config-thinking-parser';
|
|
|
|
describe('config thinking command parser', () => {
|
|
it('rejects missing required option values', () => {
|
|
const result = parseThinkingCommandArgs(['--mode']);
|
|
expect(result.error).toBe('--mode requires a value');
|
|
});
|
|
|
|
it('rejects unknown options', () => {
|
|
const result = parseThinkingCommandArgs(['--unknown-flag']);
|
|
expect(result.error).toBe('Unknown option: --unknown-flag');
|
|
});
|
|
|
|
it('parses clear-provider-override with optional tier', () => {
|
|
const withTier = parseThinkingCommandArgs(['--clear-provider-override', 'codex', 'opus']);
|
|
expect(withTier.error).toBeUndefined();
|
|
expect(withTier.options.clearProviderOverride).toEqual({ provider: 'codex', tier: 'opus' });
|
|
|
|
const withoutTier = parseThinkingCommandArgs(['--clear-provider-override', 'codex']);
|
|
expect(withoutTier.error).toBeUndefined();
|
|
expect(withoutTier.options.clearProviderOverride).toEqual({ provider: 'codex', tier: undefined });
|
|
});
|
|
});
|
|
|
|
describe('config thinking override normalization', () => {
|
|
it('normalizes off aliases and case', () => {
|
|
expect(parseThinkingOverrideInput('OFF')).toEqual({ value: 'off' });
|
|
expect(parseThinkingOverrideInput('0')).toEqual({ value: 'off' });
|
|
});
|
|
|
|
it('accepts valid levels', () => {
|
|
expect(parseThinkingOverrideInput('High')).toEqual({ value: 'high' });
|
|
});
|
|
|
|
it('validates numeric bounds', () => {
|
|
expect(parseThinkingOverrideInput('100001').error).toContain('between 0 and 100000');
|
|
expect(parseThinkingOverrideInput('8192')).toEqual({ value: 8192 });
|
|
});
|
|
});
|
|
|
|
describe('config thinking provider override clearing', () => {
|
|
it('is a no-op when provider override does not exist', () => {
|
|
const result = clearProviderOverride(
|
|
{
|
|
codex: { opus: 'high' },
|
|
},
|
|
'gemini'
|
|
);
|
|
|
|
expect(result.changed).toBe(false);
|
|
expect(result.nextOverrides).toEqual({
|
|
codex: { opus: 'high' },
|
|
});
|
|
});
|
|
|
|
it('is a no-op when provider exists but tier override does not', () => {
|
|
const result = clearProviderOverride(
|
|
{
|
|
codex: { opus: 'high' },
|
|
},
|
|
'codex',
|
|
'haiku'
|
|
);
|
|
|
|
expect(result.changed).toBe(false);
|
|
expect(result.nextOverrides).toEqual({
|
|
codex: { opus: 'high' },
|
|
});
|
|
});
|
|
|
|
it('removes provider entry when last tier is cleared', () => {
|
|
const result = clearProviderOverride(
|
|
{
|
|
codex: { opus: 'high' },
|
|
},
|
|
'codex',
|
|
'opus'
|
|
);
|
|
|
|
expect(result.changed).toBe(true);
|
|
expect(result.nextOverrides).toBeUndefined();
|
|
});
|
|
});
|