import { describe, expect, it } from "vitest"; import {
resolveChatModelOverrideValue,
resolveChatModelSelectState,
} from "./chat-model-select-state.ts"; import {
createModelCatalog,
createSessionsListResult,
DEEPSEEK_CHAT_MODEL,
DEFAULT_CHAT_MODEL_CATALOG,
} from "./chat-model.test-helpers.ts";
type ChatModelStateInput = Parameters<typeof resolveChatModelSelectState>[0];
type ResolvedChatModelState = ReturnType<typeof resolveChatModelSelectState>;
function expectOptionValues(
resolved: ResolvedChatModelState,
params: { include?: string[]; exclude?: string[] },
) { const values = resolved.options.map((option) => option.value); for (const value of params.include ?? []) {
expect(values).toContain(value);
} for (const value of params.exclude ?? []) {
expect(values).not.toContain(value);
}
}
describe("chat-model-select-state", () => {
it("uses the server-qualified value when the active session provider is present", () => { const state = createChatModelState({
chatModelCatalog: createModelCatalog(DEEPSEEK_CHAT_MODEL),
sessionsResult: createSessionsListResult({
model: "deepseek-chat",
modelProvider: "deepseek",
}),
});
it("falls back to the server-qualified value when catalog lookup fails", () => { const state = createChatModelState({
sessionsResult: createSessionsListResult({
model: "gpt-5-mini",
modelProvider: "openai",
}),
});
it("preserves already-qualified active-session models when the provider is stale and the catalog is empty", () => { const state = createChatModelState({
sessionsResult: createSessionsListResult({
model: "openai/gpt-5-mini",
modelProvider: "zai",
}),
});
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.