99 lines
2.4 KiB
TypeScript
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');
|
|
});
|
|
});
|