Files
clawdbot/src/commands/models.set.test.ts
Peter Steinberger c379191f80 chore: migrate to oxlint and oxfmt
Co-authored-by: Christoph Nakazawa <christoph.pojer@gmail.com>
2026-01-14 15:02:19 +00:00

101 lines
2.9 KiB
TypeScript

import { beforeEach, describe, expect, it, vi } from "vitest";
const readConfigFileSnapshot = vi.fn();
const writeConfigFile = vi.fn().mockResolvedValue(undefined);
const loadConfig = vi.fn().mockReturnValue({});
vi.mock("../config/config.js", () => ({
CONFIG_PATH_CLAWDBOT: "/tmp/clawdbot.json",
readConfigFileSnapshot,
writeConfigFile,
loadConfig,
}));
describe("models set + fallbacks", () => {
beforeEach(() => {
readConfigFileSnapshot.mockReset();
writeConfigFile.mockClear();
});
it("normalizes z.ai provider in models set", async () => {
readConfigFileSnapshot.mockResolvedValue({
path: "/tmp/clawdbot.json",
exists: true,
raw: "{}",
parsed: {},
valid: true,
config: {},
issues: [],
legacyIssues: [],
});
const runtime = { log: vi.fn(), error: vi.fn(), exit: vi.fn() };
const { modelsSetCommand } = await import("./models/set.js");
await modelsSetCommand("z.ai/glm-4.7", runtime);
expect(writeConfigFile).toHaveBeenCalledTimes(1);
const written = writeConfigFile.mock.calls[0]?.[0] as Record<string, unknown>;
expect(written.agents).toEqual({
defaults: {
model: { primary: "zai/glm-4.7" },
models: { "zai/glm-4.7": {} },
},
});
});
it("normalizes z-ai provider in models fallbacks add", async () => {
readConfigFileSnapshot.mockResolvedValue({
path: "/tmp/clawdbot.json",
exists: true,
raw: "{}",
parsed: {},
valid: true,
config: { agents: { defaults: { model: { fallbacks: [] } } } },
issues: [],
legacyIssues: [],
});
const runtime = { log: vi.fn(), error: vi.fn(), exit: vi.fn() };
const { modelsFallbacksAddCommand } = await import("./models/fallbacks.js");
await modelsFallbacksAddCommand("z-ai/glm-4.7", runtime);
expect(writeConfigFile).toHaveBeenCalledTimes(1);
const written = writeConfigFile.mock.calls[0]?.[0] as Record<string, unknown>;
expect(written.agents).toEqual({
defaults: {
model: { fallbacks: ["zai/glm-4.7"] },
models: { "zai/glm-4.7": {} },
},
});
});
it("normalizes provider casing in models set", async () => {
readConfigFileSnapshot.mockResolvedValue({
path: "/tmp/clawdbot.json",
exists: true,
raw: "{}",
parsed: {},
valid: true,
config: {},
issues: [],
legacyIssues: [],
});
const runtime = { log: vi.fn(), error: vi.fn(), exit: vi.fn() };
const { modelsSetCommand } = await import("./models/set.js");
await modelsSetCommand("Z.AI/glm-4.7", runtime);
expect(writeConfigFile).toHaveBeenCalledTimes(1);
const written = writeConfigFile.mock.calls[0]?.[0] as Record<string, unknown>;
expect(written.agents).toEqual({
defaults: {
model: { primary: "zai/glm-4.7" },
models: { "zai/glm-4.7": {} },
},
});
});
});