Files
iofficeai--aionui/tests/unit/renderer/teamCreateModelResolver.test.ts
2026-07-13 13:20:22 +08:00

99 lines
2.4 KiB
TypeScript

/**
* @license
* Copyright 2025 AionUi (aionui.com)
* SPDX-License-Identifier: Apache-2.0
*/
import { beforeEach, describe, expect, it, vi } from 'vitest';
const getAssistantMock = vi.fn();
vi.mock('@/common', () => ({
ipcBridge: {
assistants: {
get: {
invoke: (...args: unknown[]) => getAssistantMock(...args),
},
},
},
}));
import { resolveDefaultTeamAgentModel } from '@/renderer/pages/team/components/teamCreateModelResolver';
describe('resolveDefaultTeamAgentModel', () => {
beforeEach(() => {
getAssistantMock.mockReset();
});
it('prefers the assistant fixed default model over agent-level fallbacks', async () => {
getAssistantMock.mockResolvedValue({
defaults: {
model: { mode: 'fixed', value: 'claude-sonnet-4-5-20250514' },
},
preferences: {
last_model_id: 'claude-opus-4-1-20250805',
},
});
await expect(
resolveDefaultTeamAgentModel({
assistant_id: 'assistant-fixed',
})
).resolves.toBe('claude-sonnet-4-5-20250514');
});
it('uses the assistant remembered auto model before falling back to backend defaults', async () => {
getAssistantMock.mockResolvedValue({
defaults: {
model: { mode: 'auto' },
},
preferences: {
last_model_id: 'gemini-2.5-pro',
},
});
await expect(
resolveDefaultTeamAgentModel({
assistant_id: 'assistant-auto',
})
).resolves.toBe('gemini-2.5-pro');
});
it('falls back to the assistant engine backend when no assistant-owned model is stored', async () => {
getAssistantMock.mockResolvedValue({
defaults: {
model: { mode: 'auto' },
},
preferences: {
last_model_id: undefined,
},
engine: {
agent_id: 'cc126dd5',
agent: {
id: 'cc126dd5',
type: 'acp',
source: 'builtin',
acp_backend: 'gemini',
},
},
});
await expect(
resolveDefaultTeamAgentModel({
assistant_id: 'assistant-gemini',
})
).resolves.toBe('auto');
});
it('uses the provided assistant backend when detail lookup fails', async () => {
getAssistantMock.mockRejectedValue(new Error('lookup failed'));
await expect(
resolveDefaultTeamAgentModel({
assistant_id: 'assistant-gemini',
assistant_backend: 'gemini',
})
).resolves.toBe('auto');
});
});