Spaces:
Running
Running
| import { beforeEach, describe, expect, it, vi } from "vitest"; | |
| import type { RuntimeEnv } from "../runtime.js"; | |
| const configMocks = vi.hoisted(() => ({ | |
| readConfigFileSnapshot: vi.fn(), | |
| writeConfigFile: vi.fn().mockResolvedValue(undefined), | |
| })); | |
| vi.mock("../config/config.js", async (importOriginal) => { | |
| const actual = await importOriginal<typeof import("../config/config.js")>(); | |
| return { | |
| ...actual, | |
| readConfigFileSnapshot: configMocks.readConfigFileSnapshot, | |
| writeConfigFile: configMocks.writeConfigFile, | |
| }; | |
| }); | |
| import { agentsAddCommand } from "./agents.js"; | |
| const runtime: RuntimeEnv = { | |
| log: vi.fn(), | |
| error: vi.fn(), | |
| exit: vi.fn(), | |
| }; | |
| const baseSnapshot = { | |
| path: "/tmp/openclaw.json", | |
| exists: true, | |
| raw: "{}", | |
| parsed: {}, | |
| valid: true, | |
| config: {}, | |
| issues: [], | |
| legacyIssues: [], | |
| }; | |
| describe("agents add command", () => { | |
| beforeEach(() => { | |
| configMocks.readConfigFileSnapshot.mockReset(); | |
| configMocks.writeConfigFile.mockClear(); | |
| runtime.log.mockClear(); | |
| runtime.error.mockClear(); | |
| runtime.exit.mockClear(); | |
| }); | |
| it("requires --workspace when flags are present", async () => { | |
| configMocks.readConfigFileSnapshot.mockResolvedValue({ ...baseSnapshot }); | |
| await agentsAddCommand({ name: "Work" }, runtime, { hasFlags: true }); | |
| expect(runtime.error).toHaveBeenCalledWith(expect.stringContaining("--workspace")); | |
| expect(runtime.exit).toHaveBeenCalledWith(1); | |
| expect(configMocks.writeConfigFile).not.toHaveBeenCalled(); | |
| }); | |
| it("requires --workspace in non-interactive mode", async () => { | |
| configMocks.readConfigFileSnapshot.mockResolvedValue({ ...baseSnapshot }); | |
| await agentsAddCommand({ name: "Work", nonInteractive: true }, runtime, { | |
| hasFlags: false, | |
| }); | |
| expect(runtime.error).toHaveBeenCalledWith(expect.stringContaining("--workspace")); | |
| expect(runtime.exit).toHaveBeenCalledWith(1); | |
| expect(configMocks.writeConfigFile).not.toHaveBeenCalled(); | |
| }); | |
| }); | |