Skip to content

Commit 8d220ea

Browse files
committed
refactor(webview): move UI hook changes to separate PR
1 parent f2d94c5 commit 8d220ea

3 files changed

Lines changed: 37 additions & 228 deletions

File tree

webview-ui/src/components/ui/hooks/__tests__/useSelectedModel.spec.ts

Lines changed: 0 additions & 167 deletions
Original file line numberDiff line numberDiff line change
@@ -18,32 +18,24 @@ import {
1818
minimaxModels,
1919
friendliDefaultModelId,
2020
friendliModels,
21-
deepSeekDefaultModelId,
2221
openRouterDefaultModelId,
2322
vscodeLlmModels,
2423
vscodeLlmDefaultModelId,
2524
moonshotDefaultModelId,
2625
moonshotModels,
2726
kimiCodeDefaultModelInfo,
2827
providerIdentifiers,
29-
retiredProviderIdentifiers,
3028
} from "@roo-code/types"
3129

3230
import { useSelectedModel } from "../useSelectedModel"
3331
import { useRouterModels } from "../useRouterModels"
3432
import { useOpenRouterModelProviders } from "../useOpenRouterModelProviders"
35-
import { useLmStudioModels } from "../useLmStudioModels"
36-
import { useOllamaModels } from "../useOllamaModels"
3733

3834
vi.mock("../useRouterModels")
3935
vi.mock("../useOpenRouterModelProviders")
40-
vi.mock("../useLmStudioModels")
41-
vi.mock("../useOllamaModels")
4236

4337
const mockUseRouterModels = useRouterModels as Mock<typeof useRouterModels>
4438
const mockUseOpenRouterModelProviders = useOpenRouterModelProviders as Mock<typeof useOpenRouterModelProviders>
45-
const mockUseLmStudioModels = useLmStudioModels as Mock<typeof useLmStudioModels>
46-
const mockUseOllamaModels = useOllamaModels as Mock<typeof useOllamaModels>
4739

4840
const createWrapper = () => {
4941
const queryClient = new QueryClient({
@@ -58,146 +50,6 @@ const createWrapper = () => {
5850
}
5951

6052
describe("useSelectedModel", () => {
61-
beforeEach(() => {
62-
mockUseLmStudioModels.mockReturnValue({ data: {}, isLoading: false, isError: false } as any)
63-
mockUseOllamaModels.mockReturnValue({ data: {}, isLoading: false, isError: false } as any)
64-
})
65-
66-
const dynamicProviderCases = [
67-
[providerIdentifiers.requesty, "requestyModelId"],
68-
[providerIdentifiers.unbound, "unboundModelId"],
69-
[providerIdentifiers.vercelAiGateway, "vercelAiGatewayModelId"],
70-
[providerIdentifiers.opencodeGo, "opencodeGoModelId"],
71-
[providerIdentifiers.zooGateway, "zooGatewayModelId"],
72-
] as const
73-
74-
it.each(dynamicProviderCases)("uses router data for %s", (provider, modelIdKey) => {
75-
const modelInfo: ModelInfo = { contextWindow: 42_000, supportsPromptCache: false }
76-
mockUseRouterModels.mockReturnValue({
77-
data: { [provider]: { model: modelInfo } },
78-
isLoading: false,
79-
isError: false,
80-
} as any)
81-
mockUseOpenRouterModelProviders.mockReturnValue({ data: {}, isLoading: false, isError: false } as any)
82-
83-
const apiConfiguration = {
84-
apiProvider: provider,
85-
[modelIdKey]: "model",
86-
} as ProviderSettings
87-
const { result } = renderHook(() => useSelectedModel(apiConfiguration), { wrapper: createWrapper() })
88-
89-
expect(result.current.id).toBe("model")
90-
expect(result.current.info).toEqual(modelInfo)
91-
})
92-
93-
it.each([
94-
[providerIdentifiers.lmstudio, "lmStudioModelId"],
95-
[providerIdentifiers.ollama, "ollamaModelId"],
96-
] as const)("passes the configured model ID to the %s model hook", (provider, modelIdKey) => {
97-
mockUseRouterModels.mockReturnValue({ data: {}, isLoading: false, isError: false } as any)
98-
mockUseOpenRouterModelProviders.mockReturnValue({ data: {}, isLoading: false, isError: false } as any)
99-
mockUseLmStudioModels.mockReturnValue({
100-
data: { "configured-model": {} },
101-
isLoading: false,
102-
isError: false,
103-
} as any)
104-
mockUseOllamaModels.mockReturnValue({
105-
data: { "configured-model": {} },
106-
isLoading: false,
107-
isError: false,
108-
} as any)
109-
110-
const { result } = renderHook(
111-
() => useSelectedModel({ apiProvider: provider, [modelIdKey]: "configured-model" }),
112-
{ wrapper: createWrapper() },
113-
)
114-
115-
expect(result.current.id).toBe("configured-model")
116-
})
117-
118-
it("falls back to the OpenRouter default for a retired provider", () => {
119-
mockUseRouterModels.mockReturnValue({ data: {}, isLoading: false, isError: false } as any)
120-
mockUseOpenRouterModelProviders.mockReturnValue({ data: {}, isLoading: false, isError: false } as any)
121-
122-
const { result } = renderHook(() => useSelectedModel({ apiProvider: retiredProviderIdentifiers.cerebras }), {
123-
wrapper: createWrapper(),
124-
})
125-
126-
expect(result.current.id).toBe(openRouterDefaultModelId)
127-
})
128-
129-
it("uses OpenCode Go default model information when the router catalog is empty", () => {
130-
mockUseRouterModels.mockReturnValue({
131-
data: { [providerIdentifiers.opencodeGo]: {} },
132-
isLoading: false,
133-
isError: false,
134-
} as any)
135-
mockUseOpenRouterModelProviders.mockReturnValue({ data: {}, isLoading: false, isError: false } as any)
136-
137-
const { result } = renderHook(() => useSelectedModel({ apiProvider: providerIdentifiers.opencodeGo }), {
138-
wrapper: createWrapper(),
139-
})
140-
141-
expect(result.current.info).toBeDefined()
142-
})
143-
144-
it.each([providerIdentifiers.deepseek, providerIdentifiers.moonshot])(
145-
"prefers router data over static data for %s",
146-
(provider) => {
147-
const modelInfo: ModelInfo = { contextWindow: 42_000, supportsPromptCache: false }
148-
const modelId = provider === providerIdentifiers.deepseek ? deepSeekDefaultModelId : moonshotDefaultModelId
149-
mockUseRouterModels.mockReturnValue({
150-
data: { [provider]: { [modelId]: modelInfo } },
151-
isLoading: false,
152-
isError: false,
153-
} as any)
154-
mockUseOpenRouterModelProviders.mockReturnValue({ data: {}, isLoading: false, isError: false } as any)
155-
156-
const { result } = renderHook(() => useSelectedModel({ apiProvider: provider, apiModelId: modelId }), {
157-
wrapper: createWrapper(),
158-
})
159-
160-
expect(result.current.info).toEqual(modelInfo)
161-
},
162-
)
163-
164-
it.each([providerIdentifiers.deepseek, providerIdentifiers.moonshot])(
165-
"falls back to static data when the %s router catalog is null",
166-
(provider) => {
167-
const modelId = provider === providerIdentifiers.deepseek ? deepSeekDefaultModelId : moonshotDefaultModelId
168-
mockUseRouterModels.mockReturnValue({
169-
data: { [provider]: null },
170-
isLoading: false,
171-
isError: false,
172-
} as any)
173-
mockUseOpenRouterModelProviders.mockReturnValue({ data: {}, isLoading: false, isError: false } as any)
174-
175-
const { result } = renderHook(() => useSelectedModel({ apiProvider: provider, apiModelId: modelId }), {
176-
wrapper: createWrapper(),
177-
})
178-
179-
expect(result.current.id).toBe(modelId)
180-
expect(result.current.info).toBeDefined()
181-
},
182-
)
183-
184-
it("uses router data for Poe", () => {
185-
const modelInfo: ModelInfo = { contextWindow: 42_000, supportsPromptCache: false }
186-
mockUseRouterModels.mockReturnValue({
187-
data: { [providerIdentifiers.poe]: { model: modelInfo } },
188-
isLoading: false,
189-
isError: false,
190-
} as any)
191-
mockUseOpenRouterModelProviders.mockReturnValue({ data: {}, isLoading: false, isError: false } as any)
192-
193-
const { result } = renderHook(
194-
() => useSelectedModel({ apiProvider: providerIdentifiers.poe, apiModelId: "model" }),
195-
{ wrapper: createWrapper() },
196-
)
197-
198-
expect(result.current.info).toEqual(modelInfo)
199-
})
200-
20153
describe("OpenRouter provider merging", () => {
20254
it("should merge base model info with specific provider info when both exist", () => {
20355
const baseModelInfo: ModelInfo = {
@@ -1229,25 +1081,6 @@ describe("useSelectedModel", () => {
12291081
})
12301082

12311083
describe("Kimi Code provider", () => {
1232-
it("should use the Kimi Code default while router models are loading and no model is configured", () => {
1233-
mockUseRouterModels.mockReturnValue({
1234-
data: undefined,
1235-
isLoading: true,
1236-
isError: false,
1237-
} as any)
1238-
1239-
const apiConfiguration: ProviderSettings = {
1240-
apiProvider: providerIdentifiers.kimiCode,
1241-
}
1242-
1243-
const { result } = renderHook(() => useSelectedModel(apiConfiguration), { wrapper: createWrapper() })
1244-
1245-
expect(result.current.provider).toBe(providerIdentifiers.kimiCode)
1246-
expect(result.current.id).toBe("kimi-for-coding")
1247-
expect(result.current.info).toEqual(kimiCodeDefaultModelInfo)
1248-
expect(result.current.isLoading).toBe(true)
1249-
})
1250-
12511084
it("should resolve the configured model from router models", () => {
12521085
const modelInfo: ModelInfo = {
12531086
...kimiCodeDefaultModelInfo,

0 commit comments

Comments
 (0)