refactor: trim telegram test harness exports

This commit is contained in:
Peter Steinberger
2026-05-01 18:58:42 +01:00
parent 3961f52ab2
commit 9300d48244
5 changed files with 20 additions and 29 deletions

View File

@@ -9,9 +9,8 @@ type AsyncUnknownMock = Mock<(...args: unknown[]) => Promise<unknown>>;
type BuildTelegramMessageContextForTest =
typeof import("./bot-message-context.test-harness.js").buildTelegramMessageContextForTest;
type BuildTelegramMessageContextForTestParams = Parameters<BuildTelegramMessageContextForTest>[0];
type TelegramTestSessionRuntime = NonNullable<
import("./bot-message-context.types.js").BuildTelegramMessageContextParams["sessionRuntime"]
>;
type BuildTelegramMessageContextParams =
import("./bot-message-context.types.js").BuildTelegramMessageContextParams;
const hoisted = vi.hoisted((): { recordInboundSessionMock: AsyncUnknownMock } => ({
recordInboundSessionMock: vi.fn().mockResolvedValue(undefined),
@@ -19,15 +18,17 @@ const hoisted = vi.hoisted((): { recordInboundSessionMock: AsyncUnknownMock } =>
export const recordInboundSessionMock: AsyncUnknownMock = hoisted.recordInboundSessionMock;
const finalizeInboundContextForTest = finalizeTelegramInboundContextForTest as NonNullable<
TelegramTestSessionRuntime["finalizeInboundContext"]
NonNullable<BuildTelegramMessageContextParams["sessionRuntime"]>["finalizeInboundContext"]
>;
const recordInboundSessionForTest: NonNullable<
TelegramTestSessionRuntime["recordInboundSession"]
NonNullable<BuildTelegramMessageContextParams["sessionRuntime"]>["recordInboundSession"]
> = async (params) => {
await recordInboundSessionMock(params);
};
export const telegramRouteTestSessionRuntime = {
export const telegramRouteTestSessionRuntime: NonNullable<
BuildTelegramMessageContextParams["sessionRuntime"]
> = {
finalizeInboundContext: finalizeInboundContextForTest,
readSessionUpdatedAt: () => undefined,
recordInboundSession: recordInboundSessionForTest,
@@ -35,7 +36,7 @@ export const telegramRouteTestSessionRuntime = {
route.lastRoutePolicy === "main" ? route.mainSessionKey : sessionKey,
resolvePinnedMainDmOwnerFromAllowlist: () => null,
resolveStorePath: () => "/tmp/openclaw/session-store.json",
} satisfies TelegramTestSessionRuntime;
};
export async function loadTelegramMessageContextRouteHarness() {
const { buildTelegramMessageContextForTest } =

View File

@@ -4,7 +4,6 @@ import type { TelegramAccountConfig } from "openclaw/plugin-sdk/config-types";
import type { MockFn } from "openclaw/plugin-sdk/plugin-test-runtime";
import type { RuntimeEnv } from "openclaw/plugin-sdk/runtime-env";
import { vi } from "vitest";
import { createNativeCommandTestParams } from "./bot-native-commands.fixture-test-support.js";
import type { RegisterTelegramNativeCommandsParams } from "./bot-native-commands.js";
import { registerTelegramNativeCommands } from "./bot-native-commands.js";
@@ -42,10 +41,6 @@ const pluginCommandMocks = vi.hoisted(() => ({
matchPluginCommand: vi.fn<MatchPluginCommandFn>(() => null),
executePluginCommand: vi.fn<ExecutePluginCommandFn>(async () => ({ text: "ok" })),
}));
export const getPluginCommandSpecs = pluginCommandMocks.getPluginCommandSpecs;
export const matchPluginCommand = pluginCommandMocks.matchPluginCommand;
export const executePluginCommand = pluginCommandMocks.executePluginCommand;
vi.mock("openclaw/plugin-sdk/plugin-runtime", () => ({
getPluginCommandSpecs: pluginCommandMocks.getPluginCommandSpecs,
matchPluginCommand: pluginCommandMocks.matchPluginCommand,
@@ -74,13 +69,9 @@ const replyPipelineMocks = vi.hoisted(() => {
getAgentScopedMediaLocalRoots: vi.fn<GetAgentScopedMediaLocalRootsFn>(() => []),
};
});
export const dispatchReplyWithBufferedBlockDispatcher =
replyPipelineMocks.dispatchReplyWithBufferedBlockDispatcher;
const deliveryMocks = vi.hoisted(() => ({
deliverReplies: vi.fn(async () => {}),
}));
export const deliverReplies = deliveryMocks.deliverReplies;
vi.mock("./bot-native-commands.runtime.js", () => ({
getPluginCommandSpecs: pluginCommandMocks.getPluginCommandSpecs,
@@ -120,7 +111,6 @@ vi.mock("openclaw/plugin-sdk/conversation-runtime", () => ({
}));
vi.mock("./bot/delivery.js", () => ({ deliverReplies: deliveryMocks.deliverReplies }));
vi.mock("./bot/delivery.replies.js", () => ({ deliverReplies: deliveryMocks.deliverReplies }));
export { createNativeCommandTestParams };
export function createNativeCommandsHarness(params?: {
cfg?: OpenClawConfig;

View File

@@ -13,10 +13,10 @@ type DispatchReplyWithBufferedBlockDispatcherFn =
type DispatchReplyHarnessParams = Parameters<DispatchReplyWithBufferedBlockDispatcherFn>[0];
type FetchRemoteMediaFn = typeof import("openclaw/plugin-sdk/media-runtime").fetchRemoteMedia;
export const useSpy: Mock = vi.fn();
export const middlewareUseSpy: Mock = vi.fn();
const useSpy: Mock = vi.fn();
const middlewareUseSpy: Mock = vi.fn();
export const onSpy: Mock = vi.fn();
export const stopSpy: Mock = vi.fn();
const stopSpy: Mock = vi.fn();
export const sendChatActionSpy: Mock = vi.fn();
function defaultUndiciFetch(input: RequestInfo | URL, init?: RequestInit) {
@@ -25,7 +25,7 @@ function defaultUndiciFetch(input: RequestInfo | URL, init?: RequestInit) {
export const undiciFetchSpy: Mock = vi.fn(defaultUndiciFetch);
export function resetUndiciFetchMock() {
function resetUndiciFetchMock() {
undiciFetchSpy.mockReset();
undiciFetchSpy.mockImplementation(defaultUndiciFetch);
}
@@ -84,7 +84,7 @@ export function setNextSavedMediaPath(params: {
);
}
export function resetSaveMediaBufferMock() {
function resetSaveMediaBufferMock() {
saveMediaBufferSpy.mockReset();
saveMediaBufferSpy.mockImplementation(defaultSaveMediaBuffer);
}

View File

@@ -1,6 +1,6 @@
import { vi } from "vitest";
export type TestDraftStream = {
type TestDraftStream = {
update: ReturnType<typeof vi.fn<(text: string) => void>>;
flush: ReturnType<typeof vi.fn<() => Promise<void>>>;
messageId: ReturnType<typeof vi.fn<() => number | undefined>>;

View File

@@ -4,15 +4,15 @@ import { beforeAll, beforeEach, describe, expect, it, vi, type Mock } from "vite
type UnknownMock = Mock<(...args: unknown[]) => unknown>;
type AsyncUnknownMock = Mock<(...args: unknown[]) => Promise<unknown>>;
export const readConfigFileSnapshotForWrite: AsyncUnknownMock = vi.fn();
export const writeConfigFile: AsyncUnknownMock = vi.fn();
export const replaceConfigFile: AsyncUnknownMock = vi.fn(async (params: unknown) => {
const readConfigFileSnapshotForWrite: AsyncUnknownMock = vi.fn();
const writeConfigFile: AsyncUnknownMock = vi.fn();
const replaceConfigFile: AsyncUnknownMock = vi.fn(async (params: unknown) => {
const record = params as { nextConfig?: unknown; writeOptions?: unknown };
await writeConfigFile(record.nextConfig, record.writeOptions);
});
export const loadCronStore: AsyncUnknownMock = vi.fn();
export const resolveCronStorePath: UnknownMock = vi.fn();
export const saveCronStore: AsyncUnknownMock = vi.fn();
const loadCronStore: AsyncUnknownMock = vi.fn();
const resolveCronStorePath: UnknownMock = vi.fn();
const saveCronStore: AsyncUnknownMock = vi.fn();
vi.mock("openclaw/plugin-sdk/config-mutation", async () => {
const actual = await vi.importActual<typeof import("openclaw/plugin-sdk/config-mutation")>(