Test selected provider model from settings

This commit is contained in:
rcourtman 2026-06-29 23:14:33 +01:00
parent c8dc45577c
commit dcf23fb2ca
2 changed files with 55 additions and 4 deletions

View file

@ -853,7 +853,43 @@ describe('AISettings OpenRouter flow', () => {
await waitFor(() => {
expect(testProviderMock).toHaveBeenCalledTimes(1);
expect(testProviderMock).toHaveBeenCalledWith('openrouter');
expect(testProviderMock).toHaveBeenCalledWith(
'openrouter',
'openrouter:openai/gpt-4o-mini',
);
});
});
it('tests the pending model selection instead of the previously saved provider model', async () => {
getSettingsMock.mockResolvedValue({
...baseSettings(),
configured: true,
enabled: true,
model: 'openrouter:openai/gpt-4o-mini',
openrouter_configured: true,
configured_providers: ['openrouter'],
});
getModelsMock.mockResolvedValue({ models: [] });
renderComponent();
await waitFor(() => {
expect(testProviderMock).toHaveBeenCalled();
});
testProviderMock.mockClear();
fireEvent.input(screen.getByLabelText('Default model identifier'), {
target: { value: 'openrouter:anthropic/claude-sonnet-4' },
});
fireEvent.click(screen.getByRole('button', { name: /openrouter/i }));
fireEvent.click(await screen.findByRole('button', { name: /^Test$/ }));
await waitFor(() => {
expect(testProviderMock).toHaveBeenCalledTimes(1);
expect(testProviderMock).toHaveBeenCalledWith(
'openrouter',
'openrouter:anthropic/claude-sonnet-4',
);
});
});
});
@ -953,7 +989,10 @@ describe('AISettings provider save failure context', () => {
renderComponent();
await waitFor(() => {
expect(testProviderMock).toHaveBeenCalledWith('openrouter');
expect(testProviderMock).toHaveBeenCalledWith(
'openrouter',
'openrouter:deepseek/deepseek-r1',
);
});
fireEvent.click(screen.getByRole('button', { name: /Save provider settings/i }));
@ -1039,7 +1078,10 @@ describe('AISettings provider save failure context', () => {
renderComponent();
await waitFor(() => {
expect(testProviderMock).toHaveBeenCalledWith('openrouter');
expect(testProviderMock).toHaveBeenCalledWith(
'openrouter',
'openrouter:deepseek/deepseek-r1',
);
});
fireEvent.click(screen.getByRole('button', { name: /Save provider settings/i }));

View file

@ -553,6 +553,15 @@ export const useAISettingsState = (options: AISettingsStateOptions = {}) => {
return `${session.title || 'Untitled'} - ${session.message_count} msgs - ${dateLabel} ${timeLabel}`;
};
const selectedModelForProviderTest = (provider: AIProvider): string | undefined =>
compactUnique([
form.patrolModel,
form.chatModel,
form.discoveryModel,
form.autoFixModel,
form.model,
]).find((model) => getProviderFromModelId(model) === provider);
const handleCloseSetupModal = () => {
setShowSetupModal(false);
setSetupApiKey('');
@ -567,7 +576,7 @@ export const useAISettingsState = (options: AISettingsStateOptions = {}) => {
opts: { notify?: boolean; storeManualResult?: boolean } = {},
): Promise<ProviderTestResult> => {
try {
const result = await AIAPI.testProvider(provider);
const result = await AIAPI.testProvider(provider, selectedModelForProviderTest(provider));
const message = getProviderTestDiagnosticMessage(result);
const normalizedResult: ProviderTestResult = {
provider,