mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 20:18:28 +00:00
refactor(test): share onboarding and model auth test helpers
This commit is contained in:
@@ -112,16 +112,28 @@ describe("onboard-hooks", () => {
|
||||
],
|
||||
});
|
||||
|
||||
async function runSetupInternalHooks(params: {
|
||||
selected: string[];
|
||||
cfg?: OpenClawConfig;
|
||||
eligible?: boolean;
|
||||
}) {
|
||||
const { buildWorkspaceHookStatus } = await import("../hooks/hooks-status.js");
|
||||
vi.mocked(buildWorkspaceHookStatus).mockReturnValue(
|
||||
createMockHookReport(params.eligible ?? true),
|
||||
);
|
||||
|
||||
const cfg = params.cfg ?? {};
|
||||
const prompter = createMockPrompter(params.selected);
|
||||
const runtime = createMockRuntime();
|
||||
const result = await setupInternalHooks(cfg, runtime, prompter);
|
||||
return { result, cfg, prompter };
|
||||
}
|
||||
|
||||
describe("setupInternalHooks", () => {
|
||||
it("should enable hooks when user selects them", async () => {
|
||||
const { buildWorkspaceHookStatus } = await import("../hooks/hooks-status.js");
|
||||
vi.mocked(buildWorkspaceHookStatus).mockReturnValue(createMockHookReport());
|
||||
|
||||
const cfg: OpenClawConfig = {};
|
||||
const prompter = createMockPrompter(["session-memory"]);
|
||||
const runtime = createMockRuntime();
|
||||
|
||||
const result = await setupInternalHooks(cfg, runtime, prompter);
|
||||
const { result, prompter } = await runSetupInternalHooks({
|
||||
selected: ["session-memory"],
|
||||
});
|
||||
|
||||
expect(result.hooks?.internal?.enabled).toBe(true);
|
||||
expect(result.hooks?.internal?.entries).toEqual({
|
||||
@@ -147,28 +159,19 @@ describe("onboard-hooks", () => {
|
||||
});
|
||||
|
||||
it("should not enable hooks when user skips", async () => {
|
||||
const { buildWorkspaceHookStatus } = await import("../hooks/hooks-status.js");
|
||||
vi.mocked(buildWorkspaceHookStatus).mockReturnValue(createMockHookReport());
|
||||
|
||||
const cfg: OpenClawConfig = {};
|
||||
const prompter = createMockPrompter(["__skip__"]);
|
||||
const runtime = createMockRuntime();
|
||||
|
||||
const result = await setupInternalHooks(cfg, runtime, prompter);
|
||||
const { result, prompter } = await runSetupInternalHooks({
|
||||
selected: ["__skip__"],
|
||||
});
|
||||
|
||||
expect(result.hooks?.internal).toBeUndefined();
|
||||
expect(prompter.note).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
it("should handle no eligible hooks", async () => {
|
||||
const { buildWorkspaceHookStatus } = await import("../hooks/hooks-status.js");
|
||||
vi.mocked(buildWorkspaceHookStatus).mockReturnValue(createMockHookReport(false));
|
||||
|
||||
const cfg: OpenClawConfig = {};
|
||||
const prompter = createMockPrompter([]);
|
||||
const runtime = createMockRuntime();
|
||||
|
||||
const result = await setupInternalHooks(cfg, runtime, prompter);
|
||||
const { result, cfg, prompter } = await runSetupInternalHooks({
|
||||
selected: [],
|
||||
eligible: false,
|
||||
});
|
||||
|
||||
expect(result).toEqual(cfg);
|
||||
expect(prompter.multiselect).not.toHaveBeenCalled();
|
||||
@@ -179,9 +182,6 @@ describe("onboard-hooks", () => {
|
||||
});
|
||||
|
||||
it("should preserve existing hooks config when enabled", async () => {
|
||||
const { buildWorkspaceHookStatus } = await import("../hooks/hooks-status.js");
|
||||
vi.mocked(buildWorkspaceHookStatus).mockReturnValue(createMockHookReport());
|
||||
|
||||
const cfg: OpenClawConfig = {
|
||||
hooks: {
|
||||
enabled: true,
|
||||
@@ -189,10 +189,10 @@ describe("onboard-hooks", () => {
|
||||
token: "existing-token",
|
||||
},
|
||||
};
|
||||
const prompter = createMockPrompter(["session-memory"]);
|
||||
const runtime = createMockRuntime();
|
||||
|
||||
const result = await setupInternalHooks(cfg, runtime, prompter);
|
||||
const { result } = await runSetupInternalHooks({
|
||||
selected: ["session-memory"],
|
||||
cfg,
|
||||
});
|
||||
|
||||
expect(result.hooks?.enabled).toBe(true);
|
||||
expect(result.hooks?.path).toBe("/webhook");
|
||||
@@ -204,30 +204,22 @@ describe("onboard-hooks", () => {
|
||||
});
|
||||
|
||||
it("should preserve existing config when user skips", async () => {
|
||||
const { buildWorkspaceHookStatus } = await import("../hooks/hooks-status.js");
|
||||
vi.mocked(buildWorkspaceHookStatus).mockReturnValue(createMockHookReport());
|
||||
|
||||
const cfg: OpenClawConfig = {
|
||||
agents: { defaults: { workspace: "/workspace" } },
|
||||
};
|
||||
const prompter = createMockPrompter(["__skip__"]);
|
||||
const runtime = createMockRuntime();
|
||||
|
||||
const result = await setupInternalHooks(cfg, runtime, prompter);
|
||||
const { result } = await runSetupInternalHooks({
|
||||
selected: ["__skip__"],
|
||||
cfg,
|
||||
});
|
||||
|
||||
expect(result).toEqual(cfg);
|
||||
expect(result.agents?.defaults?.workspace).toBe("/workspace");
|
||||
});
|
||||
|
||||
it("should show informative notes to user", async () => {
|
||||
const { buildWorkspaceHookStatus } = await import("../hooks/hooks-status.js");
|
||||
vi.mocked(buildWorkspaceHookStatus).mockReturnValue(createMockHookReport());
|
||||
|
||||
const cfg: OpenClawConfig = {};
|
||||
const prompter = createMockPrompter(["session-memory"]);
|
||||
const runtime = createMockRuntime();
|
||||
|
||||
await setupInternalHooks(cfg, runtime, prompter);
|
||||
const { prompter } = await runSetupInternalHooks({
|
||||
selected: ["session-memory"],
|
||||
});
|
||||
|
||||
const noteCalls = (prompter.note as ReturnType<typeof vi.fn>).mock.calls;
|
||||
expect(noteCalls).toHaveLength(2);
|
||||
|
||||
Reference in New Issue
Block a user