feat(desktop): open read-only TurkServis combo details in browser pane

This commit is contained in:
yilsem committed 2026-09-07 21:46:57 +03:00
1 parent ff2eb47302
commit 3332458708
16 files changed
+110 -4

No files matched your search

@@ -12,6 +12,7 @@ import {
setModelVisibilityOpen,
setVisibleModels
} from '@/store/model-visibility'
import { openPreview } from '@/store/preview'
import type { LocalRuntimeJob } from '@/types/hermes'
import { ModelCatalogMenu, type ModelMenuController } from './model-catalog-menu'
@@ -24,6 +25,7 @@ beforeAll(() => {
})
const getGlobalModelOptions = vi.fn()
vi.mock('@/store/preview', () => ({ openPreview: vi.fn() }))
vi.mock('@/hermes', () => ({
getGlobalModelOptions: (...args: unknown[]) => getGlobalModelOptions(...args),
@@ -88,6 +90,22 @@ function renderMenu() {
// the kanban board would end up disagreeing about what "my models" means —
// which is exactly the drift extracting this component was meant to prevent.
describe('the catalog owns model curation', () => {
it('opens the chosen TurkServis model details without selecting that model', async () => {
getGlobalModelOptions.mockResolvedValue({ providers: [{
models: ['Outer'], name: 'TurkServis', slug: 'turkservis', api_url: 'https://ai.turkservis.online/v1'
}] })
const select = renderMenu()
const trigger = await screen.findByRole('menuitem', { name: /Outer/ })
fireEvent.keyDown(trigger, { key: 'ArrowRight' })
fireEvent.click(await screen.findByRole('menuitem', { name: /Model \/ combo (details|ayrıntıları)/ }))
expect(openPreview).toHaveBeenCalledWith(expect.objectContaining({
kind: 'url', url: 'https://turkservis.online/router?model=Outer'
}))
expect(select).not.toHaveBeenCalled()
})
it('honours the stored Edit Models shortlist', async () => {
setVisibleModels(new Set([modelVisibilityKey('google', 'gemini-2.5-flash')]))