import { Command } from "commander"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const configureCommandFromSectionsArgMock = vi.fn(); const runtime = { log: vi.fn(), error: vi.fn(), exit: vi.fn(), }; vi.mock("../../commands/configure.js", () => ({ CONFIGURE_WIZARD_SECTIONS: ["auth", "channels", "gateway", "agent"], configureCommandFromSectionsArg: configureCommandFromSectionsArgMock, })); vi.mock("../../runtime.js", () => ({ defaultRuntime: runtime, })); let registerConfigureCommand: typeof import("./register.configure.js").registerConfigureCommand; beforeAll(async () => { ({ registerConfigureCommand } = await import("./register.configure.js")); }); describe("registerConfigureCommand", () => { async function runCli(args: string[]) { const program = new Command(); registerConfigureCommand(program); await program.parseAsync(args, { from: "user" }); } beforeEach(() => { vi.clearAllMocks(); configureCommandFromSectionsArgMock.mockResolvedValue(undefined); }); it("forwards repeated --section values", async () => { await runCli(["configure", "--section", "auth", "--section", "channels"]); expect(configureCommandFromSectionsArgMock).toHaveBeenCalledWith(["auth", "channels"], runtime); }); it("reports errors through runtime when configure command fails", async () => { configureCommandFromSectionsArgMock.mockRejectedValueOnce(new Error("configure failed")); await runCli(["configure"]); expect(runtime.error).toHaveBeenCalledWith("Error: configure failed"); expect(runtime.exit).toHaveBeenCalledWith(1); }); });