test: trim helper partial mocks

This commit is contained in:
Peter Steinberger 2026-04-03 21:33:36 +01:00
parent 183601c347
commit f3a6d13965
No known key found for this signature in database
11 changed files with 43 additions and 36 deletions

View File

@ -3,9 +3,9 @@ import { vi } from "vitest";
type PiAiMockModule = Record<string, unknown>;
export async function createPiAiStreamSimpleMock(
importOriginal: () => Promise<PiAiMockModule>,
loadActual: () => Promise<PiAiMockModule>,
): Promise<PiAiMockModule> {
const original = await importOriginal();
const original = await loadActual();
return {
...original,
streamSimple: vi.fn(() => ({

View File

@ -22,9 +22,9 @@ export function scanDirectoryWithSummaryFromMock(...args: unknown[]) {
}
export async function mockSkillScannerModule(
importOriginal: () => Promise<typeof import("../security/skill-scanner.js")>,
loadActual: () => Promise<typeof import("../security/skill-scanner.js")>,
) {
const actual = await importOriginal();
const actual = await loadActual();
return {
...actual,
scanDirectoryWithSummary: scanDirectoryWithSummaryFromMock,

View File

@ -28,8 +28,9 @@ vi.mock("../tools/web-tools.js", () => ({
createWebFetchTool: () => null,
}));
vi.mock("../../plugins/tools.js", async (importOriginal) => {
const mod = await importOriginal<typeof import("../../plugins/tools.js")>();
vi.mock("../../plugins/tools.js", async () => {
const mod =
await vi.importActual<typeof import("../../plugins/tools.js")>("../../plugins/tools.js");
return {
...mod,
resolvePluginTools: () => [],

View File

@ -1,7 +1,8 @@
import { vi } from "vitest";
vi.mock("../../config/config.js", async (importOriginal) => {
const actual = await importOriginal<typeof import("../../config/config.js")>();
vi.mock("../../config/config.js", async () => {
const actual =
await vi.importActual<typeof import("../../config/config.js")>("../../config/config.js");
return {
...actual,
loadConfig: () => ({}),

View File

@ -2,8 +2,10 @@ import { vi } from "vitest";
import { createMockTypingController } from "./reply.test-helpers.js";
export function registerGetReplyCommonMocks(): void {
vi.mock("../../agents/agent-scope.js", async (importOriginal) => {
const actual = await importOriginal<typeof import("../../agents/agent-scope.js")>();
vi.mock("../../agents/agent-scope.js", async () => {
const actual = await vi.importActual<typeof import("../../agents/agent-scope.js")>(
"../../agents/agent-scope.js",
);
return {
...actual,
resolveAgentDir: vi.fn(() => "/tmp/agent"),
@ -12,8 +14,10 @@ export function registerGetReplyCommonMocks(): void {
resolveAgentSkillsFilter: vi.fn(() => undefined),
};
});
vi.mock("../../agents/model-selection.js", async (importOriginal) => {
const actual = await importOriginal<typeof import("../../agents/model-selection.js")>();
vi.mock("../../agents/model-selection.js", async () => {
const actual = await vi.importActual<typeof import("../../agents/model-selection.js")>(
"../../agents/model-selection.js",
);
return {
...actual,
resolveModelRefFromString: vi.fn(() => null),

View File

@ -27,10 +27,10 @@ export function buildDispatchInboundCaptureMock<T extends Record<string, unknown
}
export async function buildDispatchInboundContextCapture(
importOriginal: <T extends Record<string, unknown>>() => Promise<T>,
loadActual: <T extends Record<string, unknown>>() => Promise<T>,
capture: InboundContextCapture,
) {
const actual = await importOriginal<typeof import("../../../auto-reply/dispatch.js")>();
const actual = await loadActual<typeof import("../../../auto-reply/dispatch.js")>();
return buildDispatchInboundCaptureMock(actual, (ctx) => {
capture.ctx = ctx as MsgContext;
});

View File

@ -64,10 +64,10 @@ export function createCliRuntimeCapture(): CliRuntimeCapture {
}
export async function mockRuntimeModule<TModule extends { defaultRuntime: OutputRuntimeEnv }>(
importOriginal: () => Promise<TModule>,
loadActual: () => Promise<TModule>,
defaultRuntime: TModule["defaultRuntime"],
): Promise<TModule> {
const actual = await importOriginal();
const actual = await loadActual();
return {
...actual,
defaultRuntime: {

View File

@ -24,8 +24,8 @@ export const replaceConfigFileMock: Mock<(...args: unknown[]) => Promise<unknown
},
) as Mock<(...args: unknown[]) => Promise<unknown>>;
vi.mock("../config/config.js", async (importOriginal) => {
const actual = await importOriginal<typeof import("../config/config.js")>();
vi.mock("../config/config.js", async () => {
const actual = await vi.importActual<typeof import("../config/config.js")>("../config/config.js");
return await mergeMockedModule(actual, () => ({
readConfigFileSnapshot: (...args: Parameters<typeof actual.readConfigFileSnapshot>) =>
readConfigFileSnapshotMock(...args) as ReturnType<typeof actual.readConfigFileSnapshot>,

View File

@ -27,8 +27,8 @@ export const offsetMocks: {
deleteTelegramUpdateOffset: vi.fn().mockResolvedValue(undefined) as unknown as MockFn,
};
vi.mock("../config/config.js", async (importOriginal) => {
const actual = await importOriginal<typeof import("../config/config.js")>();
vi.mock("../config/config.js", async () => {
const actual = await vi.importActual<typeof import("../config/config.js")>("../config/config.js");
return {
...actual,
readConfigFileSnapshot: configMocks.readConfigFileSnapshot,
@ -37,13 +37,12 @@ vi.mock("../config/config.js", async (importOriginal) => {
};
});
vi.mock(
buildBundledPluginModuleId("telegram", "update-offset-runtime-api.js"),
async (importOriginal) => {
const actual: Record<string, unknown> = await importOriginal();
return {
...actual,
deleteTelegramUpdateOffset: offsetMocks.deleteTelegramUpdateOffset,
};
},
);
vi.mock(buildBundledPluginModuleId("telegram", "update-offset-runtime-api.js"), async () => {
const actual: Record<string, unknown> = await vi.importActual(
buildBundledPluginModuleId("telegram", "update-offset-runtime-api.js"),
);
return {
...actual,
deleteTelegramUpdateOffset: offsetMocks.deleteTelegramUpdateOffset,
};
});

View File

@ -14,8 +14,10 @@ vi.mock("../agents/model-catalog.js", () => ({
loadModelCatalog: vi.fn(),
}));
vi.mock("../agents/model-selection.js", async (importOriginal) => {
const actual = await importOriginal<typeof import("../agents/model-selection.js")>();
vi.mock("../agents/model-selection.js", async () => {
const actual = await vi.importActual<typeof import("../agents/model-selection.js")>(
"../agents/model-selection.js",
);
return {
...actual,
isCliProvider: vi.fn(() => false),

View File

@ -4,10 +4,10 @@ import type * as SessionWriteLockModule from "../agents/session-write-lock.js";
type SessionWriteLockModuleShape = typeof SessionWriteLockModule;
export async function buildSessionWriteLockModuleMock(
importOriginal: () => Promise<SessionWriteLockModuleShape>,
loadActual: () => Promise<SessionWriteLockModuleShape>,
acquireSessionWriteLock: SessionWriteLockModuleShape["acquireSessionWriteLock"],
): Promise<SessionWriteLockModuleShape> {
const original = await importOriginal();
const original = await loadActual();
return {
...original,
acquireSessionWriteLock,
@ -19,9 +19,9 @@ export function resetModulesWithSessionWriteLockDoMock(
acquireSessionWriteLock: SessionWriteLockModuleShape["acquireSessionWriteLock"],
): void {
vi.resetModules();
vi.doMock(modulePath, (importOriginal) =>
vi.doMock(modulePath, () =>
buildSessionWriteLockModuleMock(
importOriginal as () => Promise<SessionWriteLockModuleShape>,
() => vi.importActual<SessionWriteLockModuleShape>(modulePath),
acquireSessionWriteLock,
),
);