import { describe, expect, it } from 'vitest'; import { configSchema } from '../config/schema.js'; import { createConfiguredExternalBackend, createConfiguredExternalBackends } from './index.js'; describe('createConfiguredExternalBackend', () => { const base = configSchema.parse({ telegram: { bot_token: 'test', allowed_chat_ids: [1] }, models: { default: { provider: 'anthropic', model: 'claude-3' } }, }); it('returns undefined when no external backend is enabled', () => { const backend = createConfiguredExternalBackend(base); expect(backend).toBeUndefined(); }); it('selects codex when enabled', () => { const cfg = { ...base, backends: { ...base.backends, codex: { enabled: true, path: '/usr/bin/codex' }, }, }; const backend = createConfiguredExternalBackend(cfg); expect(backend?.name).toBe('codex'); }); it('selects gemini when enabled and higher-priority backends are disabled', () => { const cfg = { ...base, backends: { ...base.backends, gemini: { enabled: true, path: '/usr/bin/gemini' }, }, }; const backend = createConfiguredExternalBackend(cfg); expect(backend?.name).toBe('gemini'); }); it('returns all enabled external backends and the default priority selection', () => { const cfg = { ...base, backends: { ...base.backends, codex: { enabled: true, path: '/usr/bin/codex' }, gemini: { enabled: true, path: '/usr/bin/gemini' }, }, }; const configured = createConfiguredExternalBackends(cfg); expect(configured.defaultName).toBe('codex'); expect(configured.backends.codex?.name).toBe('codex'); expect(configured.backends.gemini?.name).toBe('gemini'); }); });