Files
openclaw/src/commands/status.scan-execute.test.ts
2026-04-06 13:34:08 +01:00

99 lines
3.3 KiB
TypeScript

import { beforeEach, describe, expect, it, vi } from "vitest";
import type { StatusScanOverviewResult } from "./status.scan-overview.ts";
import type { MemoryStatusSnapshot } from "./status.scan.shared.js";
const { resolveStatusSummaryFromOverview, resolveMemoryPluginStatus } = vi.hoisted(() => ({
resolveStatusSummaryFromOverview: vi.fn(async () => ({ sessions: { count: 1 } })),
resolveMemoryPluginStatus: vi.fn(() => ({
enabled: false,
slot: null,
reason: "memorySearch not configured",
})),
}));
describe("executeStatusScanFromOverview", () => {
beforeEach(() => {
vi.resetModules();
vi.clearAllMocks();
vi.doMock("./status.scan-overview.ts", () => ({
resolveStatusSummaryFromOverview,
}));
vi.doMock("./status.scan.shared.js", () => ({
resolveMemoryPluginStatus,
}));
});
it("resolves memory and summary, then builds the final scan result", async () => {
const { executeStatusScanFromOverview } = await import("./status.scan-execute.ts");
const overview = {
cfg: { channels: {} },
sourceConfig: { channels: {} },
secretDiagnostics: ["diag"],
osSummary: { label: "linux" },
tailscaleMode: "tailnet",
tailscaleDns: "box.tail.ts.net",
tailscaleHttpsUrl: "https://box.tail.ts.net",
update: { available: false, installKind: "package" },
gatewaySnapshot: {
gatewayConnection: { url: "ws://127.0.0.1:18789", urlSource: "local" },
remoteUrlMissing: false,
gatewayMode: "local",
gatewayProbeAuth: {},
gatewayProbeAuthWarning: undefined,
gatewayProbe: null,
gatewayReachable: true,
gatewaySelf: null,
},
agentStatus: { agents: [{ id: "main" }], defaultId: "main" },
skipColdStartNetworkChecks: false,
} as unknown as StatusScanOverviewResult;
const resolveMemory = vi.fn<
(args: {
cfg: unknown;
agentStatus: unknown;
memoryPlugin: unknown;
runtime?: unknown;
}) => Promise<MemoryStatusSnapshot>
>(async () => ({
agentId: "main",
backend: "builtin",
provider: "memory-core",
}));
const result = await executeStatusScanFromOverview({
overview,
runtime: {} as never,
resolveMemory,
channelIssues: [],
channels: { rows: [], details: [] },
pluginCompatibility: [],
});
expect(resolveMemoryPluginStatus).toHaveBeenCalledWith(overview.cfg);
expect(resolveStatusSummaryFromOverview).toHaveBeenCalledWith({ overview });
expect(resolveMemory).toHaveBeenCalledWith({
cfg: overview.cfg,
agentStatus: overview.agentStatus,
memoryPlugin: { enabled: false, slot: null, reason: "memorySearch not configured" },
runtime: {},
});
expect(result).toEqual(
expect.objectContaining({
cfg: overview.cfg,
sourceConfig: overview.sourceConfig,
secretDiagnostics: ["diag"],
tailscaleDns: "box.tail.ts.net",
tailscaleHttpsUrl: "https://box.tail.ts.net",
gatewayConnection: { url: "ws://127.0.0.1:18789", urlSource: "local" },
gatewayMode: "local",
gatewayReachable: true,
channels: { rows: [], details: [] },
summary: { sessions: { count: 1 } },
memory: { agentId: "main", backend: "builtin", provider: "memory-core" },
pluginCompatibility: [],
}),
);
});
});