Files
openclaw/src/commands/status.scan.config-shared.test.ts
2026-04-06 14:05:49 +05:30

90 lines
2.7 KiB
TypeScript

import { beforeEach, describe, expect, it, vi } from "vitest";
import {
loadStatusScanCommandConfig,
resolveStatusScanColdStart,
shouldSkipStatusScanMissingConfigFastPath,
} from "./status.scan.config-shared.js";
const mocks = vi.hoisted(() => ({
resolveConfigPath: vi.fn(),
}));
vi.mock("../config/paths.js", () => ({
resolveConfigPath: mocks.resolveConfigPath,
}));
describe("status.scan.config-shared", () => {
beforeEach(() => {
vi.clearAllMocks();
mocks.resolveConfigPath.mockReturnValue(
`/tmp/openclaw-status-scan-config-shared-missing-${process.pid}.json`,
);
});
it("detects the test fast-path env toggle", () => {
expect(shouldSkipStatusScanMissingConfigFastPath({ ...process.env, VITEST: "true" })).toBe(
true,
);
expect(shouldSkipStatusScanMissingConfigFastPath({ ...process.env, NODE_ENV: "test" })).toBe(
true,
);
expect(shouldSkipStatusScanMissingConfigFastPath({})).toBe(false);
});
it("treats missing config as cold-start when fast-path bypass is disabled", () => {
expect(resolveStatusScanColdStart({ env: {}, allowMissingConfigFastPath: false })).toBe(true);
});
it("skips read/resolve on fast-json cold-start outside tests", async () => {
const readBestEffortConfig = vi.fn(async () => ({ channels: { telegram: {} } }));
const resolveConfig = vi.fn(async () => ({
resolvedConfig: { channels: { telegram: {} } },
diagnostics: ["resolved"],
}));
const result = await loadStatusScanCommandConfig({
commandName: "status --json",
readBestEffortConfig,
resolveConfig,
env: {},
allowMissingConfigFastPath: true,
});
expect(readBestEffortConfig).not.toHaveBeenCalled();
expect(resolveConfig).not.toHaveBeenCalled();
expect(result).toEqual({
coldStart: true,
sourceConfig: {},
resolvedConfig: {},
secretDiagnostics: [],
});
});
it("still reads and resolves during tests even when the config path is missing", async () => {
const sourceConfig = { channels: { telegram: {} } };
const resolvedConfig = { channels: { telegram: {} } };
const readBestEffortConfig = vi.fn(async () => sourceConfig);
const resolveConfig = vi.fn(async () => ({
resolvedConfig,
diagnostics: ["resolved"],
}));
const result = await loadStatusScanCommandConfig({
commandName: "status --json",
readBestEffortConfig,
resolveConfig,
env: { VITEST: "true" },
allowMissingConfigFastPath: true,
});
expect(readBestEffortConfig).toHaveBeenCalled();
expect(resolveConfig).toHaveBeenCalledWith(sourceConfig);
expect(result).toEqual({
coldStart: false,
sourceConfig,
resolvedConfig,
secretDiagnostics: ["resolved"],
});
});
});