From 486b7379d4e420ae286a714676feb51c75bac1f0 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 16 Feb 2026 22:52:24 +0000 Subject: [PATCH] refactor(test): dedupe doctor harness mock payload factories --- src/commands/doctor.e2e-harness.ts | 90 +++++++++++++++--------------- 1 file changed, 44 insertions(+), 46 deletions(-) diff --git a/src/commands/doctor.e2e-harness.ts b/src/commands/doctor.e2e-harness.ts index f417c7c55a..9959f85a15 100644 --- a/src/commands/doctor.e2e-harness.ts +++ b/src/commands/doctor.e2e-harness.ts @@ -20,18 +20,47 @@ function setStdinTty(value: boolean | undefined) { } } +function createGatewayUpdateResult() { + return { + status: "skipped", + mode: "unknown", + steps: [], + durationMs: 0, + } as const; +} + +function createCommandWithTimeoutResult() { + return { + stdout: "", + stderr: "", + code: 0, + signal: null, + killed: false, + } as const; +} + +function createLegacyConfigSnapshot() { + return { + path: "/tmp/openclaw.json", + exists: false, + raw: null, + parsed: {}, + valid: true, + config: {}, + issues: [], + legacyIssues: [], + } as const; +} + export const readConfigFileSnapshot = vi.fn() as unknown as MockFn; export const confirm = vi.fn().mockResolvedValue(true) as unknown as MockFn; export const select = vi.fn().mockResolvedValue("node") as unknown as MockFn; export const note = vi.fn() as unknown as MockFn; export const writeConfigFile = vi.fn().mockResolvedValue(undefined) as unknown as MockFn; export const resolveOpenClawPackageRoot = vi.fn().mockResolvedValue(null) as unknown as MockFn; -export const runGatewayUpdate = vi.fn().mockResolvedValue({ - status: "skipped", - mode: "unknown", - steps: [], - durationMs: 0, -}) as unknown as MockFn; +export const runGatewayUpdate = vi + .fn() + .mockResolvedValue(createGatewayUpdateResult()) as unknown as MockFn; export const migrateLegacyConfig = vi.fn((raw: unknown) => ({ config: raw as Record, changes: ["Moved routing.allowFrom → channels.whatsapp.allowFrom."], @@ -41,28 +70,17 @@ export const runExec = vi.fn().mockResolvedValue({ stdout: "", stderr: "", }) as unknown as MockFn; -export const runCommandWithTimeout = vi.fn().mockResolvedValue({ - stdout: "", - stderr: "", - code: 0, - signal: null, - killed: false, -}) as unknown as MockFn; +export const runCommandWithTimeout = vi + .fn() + .mockResolvedValue(createCommandWithTimeoutResult()) as unknown as MockFn; export const ensureAuthProfileStore = vi .fn() .mockReturnValue({ version: 1, profiles: {} }) as unknown as MockFn; -export const legacyReadConfigFileSnapshot = vi.fn().mockResolvedValue({ - path: "/tmp/openclaw.json", - exists: false, - raw: null, - parsed: {}, - valid: true, - config: {}, - issues: [], - legacyIssues: [], -}) as unknown as MockFn; +export const legacyReadConfigFileSnapshot = vi + .fn() + .mockResolvedValue(createLegacyConfigSnapshot()) as unknown as MockFn; export const createConfigIO = vi.fn(() => ({ readConfigFileSnapshot: legacyReadConfigFileSnapshot, })) as unknown as MockFn; @@ -350,33 +368,13 @@ beforeEach(() => { readConfigFileSnapshot.mockReset(); writeConfigFile.mockReset().mockResolvedValue(undefined); resolveOpenClawPackageRoot.mockReset().mockResolvedValue(null); - runGatewayUpdate.mockReset().mockResolvedValue({ - status: "skipped", - mode: "unknown", - steps: [], - durationMs: 0, - }); - legacyReadConfigFileSnapshot.mockReset().mockResolvedValue({ - path: "/tmp/openclaw.json", - exists: false, - raw: null, - parsed: {}, - valid: true, - config: {}, - issues: [], - legacyIssues: [], - }); + runGatewayUpdate.mockReset().mockResolvedValue(createGatewayUpdateResult()); + legacyReadConfigFileSnapshot.mockReset().mockResolvedValue(createLegacyConfigSnapshot()); createConfigIO.mockReset().mockImplementation(() => ({ readConfigFileSnapshot: legacyReadConfigFileSnapshot, })); runExec.mockReset().mockResolvedValue({ stdout: "", stderr: "" }); - runCommandWithTimeout.mockReset().mockResolvedValue({ - stdout: "", - stderr: "", - code: 0, - signal: null, - killed: false, - }); + runCommandWithTimeout.mockReset().mockResolvedValue(createCommandWithTimeoutResult()); ensureAuthProfileStore.mockReset().mockReturnValue({ version: 1, profiles: {} }); migrateLegacyConfig.mockReset().mockImplementation((raw: unknown) => ({ config: raw as Record,