diff --git a/src/commands/models.list.test.ts b/src/commands/models.list.test.ts index 218817a7c..27e2b1af0 100644 --- a/src/commands/models.list.test.ts +++ b/src/commands/models.list.test.ts @@ -107,6 +107,48 @@ afterEach(() => { }); describe("models list/status", () => { + const ZAI_MODEL = { + provider: "zai", + id: "glm-4.7", + name: "GLM-4.7", + input: ["text"], + baseUrl: "https://api.z.ai/v1", + contextWindow: 128000, + }; + const OPENAI_MODEL = { + provider: "openai", + id: "gpt-4.1-mini", + name: "GPT-4.1 mini", + input: ["text"], + baseUrl: "https://api.openai.com/v1", + contextWindow: 128000, + }; + + function setDefaultModel(model: string) { + loadConfig.mockReturnValue({ + agents: { defaults: { model } }, + }); + } + + function parseJsonLog(runtime: ReturnType) { + expect(runtime.log).toHaveBeenCalledTimes(1); + return JSON.parse(String(runtime.log.mock.calls[0]?.[0])); + } + + async function expectZaiProviderFilter(provider: string) { + setDefaultModel("z.ai/glm-4.7"); + const runtime = makeRuntime(); + const models = [ZAI_MODEL, OPENAI_MODEL]; + modelRegistryState.models = models; + modelRegistryState.available = models; + + await modelsListCommand({ all: true, provider, json: true }, runtime); + + const payload = parseJsonLog(runtime); + expect(payload.count).toBe(1); + expect(payload.models[0]?.key).toBe("zai/glm-4.7"); + } + beforeAll(async () => { ({ modelsListCommand } = await import("./models/list.list-command.js")); }); @@ -159,108 +201,15 @@ describe("models list/status", () => { }); it("models list provider filter normalizes z.ai alias", async () => { - loadConfig.mockReturnValue({ - agents: { defaults: { model: "z.ai/glm-4.7" } }, - }); - const runtime = makeRuntime(); - - const models = [ - { - provider: "zai", - id: "glm-4.7", - name: "GLM-4.7", - input: ["text"], - baseUrl: "https://api.z.ai/v1", - contextWindow: 128000, - }, - { - provider: "openai", - id: "gpt-4.1-mini", - name: "GPT-4.1 mini", - input: ["text"], - baseUrl: "https://api.openai.com/v1", - contextWindow: 128000, - }, - ]; - - modelRegistryState.models = models; - modelRegistryState.available = models; - await modelsListCommand({ all: true, provider: "z.ai", json: true }, runtime); - - expect(runtime.log).toHaveBeenCalledTimes(1); - const payload = JSON.parse(String(runtime.log.mock.calls[0]?.[0])); - expect(payload.count).toBe(1); - expect(payload.models[0]?.key).toBe("zai/glm-4.7"); + await expectZaiProviderFilter("z.ai"); }); it("models list provider filter normalizes Z.AI alias casing", async () => { - loadConfig.mockReturnValue({ - agents: { defaults: { model: "z.ai/glm-4.7" } }, - }); - const runtime = makeRuntime(); - - const models = [ - { - provider: "zai", - id: "glm-4.7", - name: "GLM-4.7", - input: ["text"], - baseUrl: "https://api.z.ai/v1", - contextWindow: 128000, - }, - { - provider: "openai", - id: "gpt-4.1-mini", - name: "GPT-4.1 mini", - input: ["text"], - baseUrl: "https://api.openai.com/v1", - contextWindow: 128000, - }, - ]; - - modelRegistryState.models = models; - modelRegistryState.available = models; - await modelsListCommand({ all: true, provider: "Z.AI", json: true }, runtime); - - expect(runtime.log).toHaveBeenCalledTimes(1); - const payload = JSON.parse(String(runtime.log.mock.calls[0]?.[0])); - expect(payload.count).toBe(1); - expect(payload.models[0]?.key).toBe("zai/glm-4.7"); + await expectZaiProviderFilter("Z.AI"); }); it("models list provider filter normalizes z-ai alias", async () => { - loadConfig.mockReturnValue({ - agents: { defaults: { model: "z.ai/glm-4.7" } }, - }); - const runtime = makeRuntime(); - - const models = [ - { - provider: "zai", - id: "glm-4.7", - name: "GLM-4.7", - input: ["text"], - baseUrl: "https://api.z.ai/v1", - contextWindow: 128000, - }, - { - provider: "openai", - id: "gpt-4.1-mini", - name: "GPT-4.1 mini", - input: ["text"], - baseUrl: "https://api.openai.com/v1", - contextWindow: 128000, - }, - ]; - - modelRegistryState.models = models; - modelRegistryState.available = models; - await modelsListCommand({ all: true, provider: "z-ai", json: true }, runtime); - - expect(runtime.log).toHaveBeenCalledTimes(1); - const payload = JSON.parse(String(runtime.log.mock.calls[0]?.[0])); - expect(payload.count).toBe(1); - expect(payload.models[0]?.key).toBe("zai/glm-4.7"); + await expectZaiProviderFilter("z-ai"); }); it("models list marks auth as unavailable when ZAI key is missing", async () => {