File size: 2,443 Bytes
fc93158 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | import { Command } from "commander";
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
const setupCommandMock = vi.fn();
const onboardCommandMock = vi.fn();
const runtime = {
log: vi.fn(),
error: vi.fn(),
exit: vi.fn(),
};
vi.mock("../../commands/setup.js", () => ({
setupCommand: setupCommandMock,
}));
vi.mock("../../commands/onboard.js", () => ({
onboardCommand: onboardCommandMock,
}));
vi.mock("../../runtime.js", () => ({
defaultRuntime: runtime,
}));
let registerSetupCommand: typeof import("./register.setup.js").registerSetupCommand;
beforeAll(async () => {
({ registerSetupCommand } = await import("./register.setup.js"));
});
describe("registerSetupCommand", () => {
async function runCli(args: string[]) {
const program = new Command();
registerSetupCommand(program);
await program.parseAsync(args, { from: "user" });
}
beforeEach(() => {
vi.clearAllMocks();
setupCommandMock.mockResolvedValue(undefined);
onboardCommandMock.mockResolvedValue(undefined);
});
it("runs setup command by default", async () => {
await runCli(["setup", "--workspace", "/tmp/ws"]);
expect(setupCommandMock).toHaveBeenCalledWith(
expect.objectContaining({
workspace: "/tmp/ws",
}),
runtime,
);
expect(onboardCommandMock).not.toHaveBeenCalled();
});
it("runs onboard command when --wizard is set", async () => {
await runCli(["setup", "--wizard", "--mode", "remote", "--remote-url", "wss://example"]);
expect(onboardCommandMock).toHaveBeenCalledWith(
expect.objectContaining({
mode: "remote",
remoteUrl: "wss://example",
}),
runtime,
);
expect(setupCommandMock).not.toHaveBeenCalled();
});
it("runs onboard command when wizard-only flags are passed explicitly", async () => {
await runCli(["setup", "--mode", "remote", "--non-interactive"]);
expect(onboardCommandMock).toHaveBeenCalledWith(
expect.objectContaining({
mode: "remote",
nonInteractive: true,
}),
runtime,
);
expect(setupCommandMock).not.toHaveBeenCalled();
});
it("reports setup errors through runtime", async () => {
setupCommandMock.mockRejectedValueOnce(new Error("setup failed"));
await runCli(["setup"]);
expect(runtime.error).toHaveBeenCalledWith("Error: setup failed");
expect(runtime.exit).toHaveBeenCalledWith(1);
});
});
|