mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 19:18:26 +00:00
refactor(test): dedupe models list provider filter cases
This commit is contained in:
@@ -107,6 +107,48 @@ afterEach(() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe("models list/status", () => {
|
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<typeof makeRuntime>) {
|
||||||
|
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 () => {
|
beforeAll(async () => {
|
||||||
({ modelsListCommand } = await import("./models/list.list-command.js"));
|
({ 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 () => {
|
it("models list provider filter normalizes z.ai alias", async () => {
|
||||||
loadConfig.mockReturnValue({
|
await expectZaiProviderFilter("z.ai");
|
||||||
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");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("models list provider filter normalizes Z.AI alias casing", async () => {
|
it("models list provider filter normalizes Z.AI alias casing", async () => {
|
||||||
loadConfig.mockReturnValue({
|
await expectZaiProviderFilter("Z.AI");
|
||||||
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");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("models list provider filter normalizes z-ai alias", async () => {
|
it("models list provider filter normalizes z-ai alias", async () => {
|
||||||
loadConfig.mockReturnValue({
|
await expectZaiProviderFilter("z-ai");
|
||||||
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");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("models list marks auth as unavailable when ZAI key is missing", async () => {
|
it("models list marks auth as unavailable when ZAI key is missing", async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user