File size: 2,631 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 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | import { Command } from "commander";
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
const backupCreateCommand = vi.fn();
const backupVerifyCommand = vi.fn();
const runtime = {
log: vi.fn(),
error: vi.fn(),
exit: vi.fn(),
};
vi.mock("../../commands/backup.js", () => ({
backupCreateCommand,
}));
vi.mock("../../commands/backup-verify.js", () => ({
backupVerifyCommand,
}));
vi.mock("../../runtime.js", () => ({
defaultRuntime: runtime,
}));
let registerBackupCommand: typeof import("./register.backup.js").registerBackupCommand;
beforeAll(async () => {
({ registerBackupCommand } = await import("./register.backup.js"));
});
describe("registerBackupCommand", () => {
async function runCli(args: string[]) {
const program = new Command();
registerBackupCommand(program);
await program.parseAsync(args, { from: "user" });
}
beforeEach(() => {
vi.clearAllMocks();
backupCreateCommand.mockResolvedValue(undefined);
backupVerifyCommand.mockResolvedValue(undefined);
});
it("runs backup create with forwarded options", async () => {
await runCli(["backup", "create", "--output", "/tmp/backups", "--json", "--dry-run"]);
expect(backupCreateCommand).toHaveBeenCalledWith(
runtime,
expect.objectContaining({
output: "/tmp/backups",
json: true,
dryRun: true,
verify: false,
onlyConfig: false,
includeWorkspace: true,
}),
);
});
it("honors --no-include-workspace", async () => {
await runCli(["backup", "create", "--no-include-workspace"]);
expect(backupCreateCommand).toHaveBeenCalledWith(
runtime,
expect.objectContaining({
includeWorkspace: false,
}),
);
});
it("forwards --verify to backup create", async () => {
await runCli(["backup", "create", "--verify"]);
expect(backupCreateCommand).toHaveBeenCalledWith(
runtime,
expect.objectContaining({
verify: true,
}),
);
});
it("forwards --only-config to backup create", async () => {
await runCli(["backup", "create", "--only-config"]);
expect(backupCreateCommand).toHaveBeenCalledWith(
runtime,
expect.objectContaining({
onlyConfig: true,
}),
);
});
it("runs backup verify with forwarded options", async () => {
await runCli(["backup", "verify", "/tmp/openclaw-backup.tar.gz", "--json"]);
expect(backupVerifyCommand).toHaveBeenCalledWith(
runtime,
expect.objectContaining({
archive: "/tmp/openclaw-backup.tar.gz",
json: true,
}),
);
});
});
|