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();
});
});
Messung V0.5 in Prozent C=100 H=100 G=100
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-08)
¤
*© Formatika GbR, Deutschland