test: trim telegram media retry import cost

This commit is contained in:
Peter Steinberger
2026-04-03 11:59:01 +01:00
parent 05df7f802b
commit 225431665a
5 changed files with 61 additions and 37 deletions

View File

@@ -1,27 +1,23 @@
import type { Message } from "@grammyjs/types";
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import { retryAsync } from "../../../../src/infra/retry.js";
import { resolveMedia } from "./delivery.resolve-media.js";
import type { TelegramContext } from "./types.js";
const saveMediaBuffer = vi.fn();
const fetchRemoteMedia = vi.fn();
vi.mock("openclaw/plugin-sdk/media-runtime", async (importOriginal) => {
const actual = await importOriginal<typeof import("openclaw/plugin-sdk/media-runtime")>();
vi.mock("./delivery.resolve-media.runtime.js", () => {
return {
...actual,
saveMediaBuffer: (...args: unknown[]) => saveMediaBuffer(...args),
fetchRemoteMedia: (...args: unknown[]) => fetchRemoteMedia(...args),
};
});
vi.mock("openclaw/plugin-sdk/runtime-env", async (importOriginal) => {
const actual = await importOriginal<typeof import("openclaw/plugin-sdk/runtime-env")>();
return {
...actual,
formatErrorMessage: (err: unknown) => (err instanceof Error ? err.message : String(err)),
logVerbose: () => {},
resolveTelegramApiBase: (apiRoot?: string) =>
apiRoot?.trim() ? apiRoot.replace(/\/+$/u, "") : "https://api.telegram.org",
retryAsync,
saveMediaBuffer: (...args: unknown[]) => saveMediaBuffer(...args),
shouldRetryTelegramTransportFallback: vi.fn(() => false),
warn: (s: string) => s,
danger: (s: string) => s,
};
});

View File

@@ -0,0 +1,15 @@
import { fetchRemoteMedia, saveMediaBuffer } from "openclaw/plugin-sdk/media-runtime";
import { logVerbose, retryAsync, warn } from "openclaw/plugin-sdk/runtime-env";
import { formatErrorMessage } from "openclaw/plugin-sdk/ssrf-runtime";
import { resolveTelegramApiBase, shouldRetryTelegramTransportFallback } from "../fetch.js";
export {
fetchRemoteMedia,
formatErrorMessage,
logVerbose,
resolveTelegramApiBase,
retryAsync,
saveMediaBuffer,
shouldRetryTelegramTransportFallback,
warn,
};

View File

@@ -1,16 +1,17 @@
import path from "node:path";
import { GrammyError } from "grammy";
import { fetchRemoteMedia } from "openclaw/plugin-sdk/media-runtime";
import { saveMediaBuffer } from "openclaw/plugin-sdk/media-runtime";
import { logVerbose, warn } from "openclaw/plugin-sdk/runtime-env";
import { retryAsync } from "openclaw/plugin-sdk/runtime-env";
import { formatErrorMessage } from "openclaw/plugin-sdk/ssrf-runtime";
import {
resolveTelegramApiBase,
shouldRetryTelegramTransportFallback,
type TelegramTransport,
} from "../fetch.js";
import type { TelegramTransport } from "../fetch.js";
import { cacheSticker, getCachedSticker } from "../sticker-cache.js";
import {
fetchRemoteMedia,
formatErrorMessage,
logVerbose,
resolveTelegramApiBase,
retryAsync,
saveMediaBuffer,
shouldRetryTelegramTransportFallback,
warn,
} from "./delivery.resolve-media.runtime.js";
import { resolveTelegramMediaPlaceholder } from "./helpers.js";
import type { StickerMetadata, TelegramContext } from "./types.js";

View File

@@ -56,24 +56,36 @@ vi.mock("undici", () => ({
setGlobalDispatcher,
}));
vi.mock("openclaw/plugin-sdk/runtime-env", async (importOriginal) => {
const actual = await importOriginal<typeof import("openclaw/plugin-sdk/runtime-env")>();
return {
...actual,
createSubsystemLogger: () => ({
vi.mock("openclaw/plugin-sdk/runtime-env", () => ({
createSubsystemLogger: () => ({
info: loggerInfo,
debug: loggerDebug,
warn: vi.fn(),
error: vi.fn(),
child: () => ({
info: loggerInfo,
debug: loggerDebug,
warn: vi.fn(),
error: vi.fn(),
child: () => ({
info: loggerInfo,
debug: loggerDebug,
warn: vi.fn(),
error: vi.fn(),
}),
}),
};
});
}),
isTruthyEnvValue: (value?: string) => {
if (typeof value !== "string") {
return false;
}
switch (value.trim().toLowerCase()) {
case "":
case "0":
case "false":
case "no":
case "off":
return false;
default:
return true;
}
},
isWSL2Sync: () => false,
}));
let resolveFetch: typeof import("../../../src/infra/fetch.js").resolveFetch;
let resolveTelegramFetch: typeof import("./fetch.js").resolveTelegramFetch;