Files
openclaw-zero-token/wizard/setup.completion.test.ts
sjhu 571e14a236 feat: upgrade to upstream v2026.3.28
Major upgrade from e26988a38 to upstream v2026.3.28 (f9b107928).
Key changes:
- Upstream src/, ui/, extensions/ (89 bundled extensions)
- Zero-token web providers preserved in src/zero-token/
- AskOnce plugin restored and registered as CLI command
- Added missing packages: @anthropic-ai/vertex-sdk, @modelcontextprotocol/sdk
- Fixed tsconfig rootDir, skipLibCheck for plugin-sdk DTS build
- Added askonce to bundled plugin metadata and package.json exports
- Fixed AskOnce CLI command registration (missing commands metadata)
- Restored AskOnce adapter imports (correct 5-level relative paths)
- Removed stale migration artifacts from root directory
2026-03-30 17:58:12 +08:00

52 lines
1.7 KiB
TypeScript

import { describe, expect, it, vi } from "vitest";
import { setupWizardShellCompletion } from "./setup.completion.js";
function createPrompter(confirmValue = false) {
return {
confirm: vi.fn(async () => confirmValue),
note: vi.fn(async () => {}),
};
}
function createDeps() {
const deps: NonNullable<Parameters<typeof setupWizardShellCompletion>[0]["deps"]> = {
resolveCliName: () => "openclaw",
checkShellCompletionStatus: vi.fn(async (_binName: string) => ({
shell: "zsh" as const,
profileInstalled: false,
cacheExists: false,
cachePath: "/tmp/openclaw.zsh",
usesSlowPattern: false,
})),
ensureCompletionCacheExists: vi.fn(async (_binName: string) => true),
installCompletion: vi.fn(async () => {}),
};
return deps;
}
describe("setupWizardShellCompletion", () => {
it("QuickStart: installs without prompting", async () => {
const prompter = createPrompter();
const deps = createDeps();
await setupWizardShellCompletion({ flow: "quickstart", prompter, deps });
expect(prompter.confirm).not.toHaveBeenCalled();
expect(deps.ensureCompletionCacheExists).toHaveBeenCalledWith("openclaw");
expect(deps.installCompletion).toHaveBeenCalledWith("zsh", true, "openclaw");
expect(prompter.note).toHaveBeenCalled();
});
it("Advanced: prompts; skip means no install", async () => {
const prompter = createPrompter();
const deps = createDeps();
await setupWizardShellCompletion({ flow: "advanced", prompter, deps });
expect(prompter.confirm).toHaveBeenCalledTimes(1);
expect(deps.ensureCompletionCacheExists).not.toHaveBeenCalled();
expect(deps.installCompletion).not.toHaveBeenCalled();
expect(prompter.note).not.toHaveBeenCalled();
});
});