// @vitest-environment jsdom import { beforeEach, expect, test, vi } from 'vitest'; import { resolveTauriInvoke } from '../src/app/tauri'; import { loadClientLlmModels } from '../src/services/clientApi'; vi.mock('../src/app/tauri', () => ({ resolveTauriInvoke: vi.fn() })); const invoke = vi.fn(); beforeEach(() => { vi.clearAllMocks(); vi.mocked(resolveTauriInvoke).mockReturnValue(invoke); }); test('模型目录缺少 agentMode 时默认使用 codex,同时保留官方 cc 路由', async () => { invoke.mockResolvedValue({ defaultModelId: 'quality', models: [ { id: 'quality', displayName: '高质量' }, { id: 'claude', displayName: 'Claude', agentMode: 'cc' }, ], revision: 1, }); await expect(loadClientLlmModels()).resolves.toEqual({ defaultModelId: 'quality', models: [ { id: 'quality', displayName: '高质量', agentMode: 'codex' }, { id: 'claude', displayName: 'Claude', agentMode: 'cc' }, ], revision: 1, }); expect(invoke).toHaveBeenCalledWith('load_game_creator_llm_models'); });