test: speed up discord slack telegram suites

This commit is contained in:
Peter Steinberger
2026-03-24 16:22:57 +00:00
parent f0761b4914
commit 5edba12f79
6 changed files with 35 additions and 22 deletions

View File

@@ -1,8 +1,8 @@
import { beforeEach, describe, expect, it, vi } from "vitest";
import { beforeAll, describe, expect, it, vi } from "vitest";
let DiscordMessageListener: typeof import("./listeners.js").DiscordMessageListener;
beforeEach(async () => {
beforeAll(async () => {
vi.resetModules();
({ DiscordMessageListener } = await import("./listeners.js"));
});

View File

@@ -1,5 +1,5 @@
import { ChannelType } from "discord-api-types/v10";
import { beforeEach, describe, expect, it, vi } from "vitest";
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
import type { NativeCommandSpec } from "../../../../src/auto-reply/commands-registry.js";
import { setDefaultChannelPluginRegistryForTests } from "../../../../src/commands/channel-test-helpers.js";
import type { OpenClawConfig } from "../../../../src/config/config.js";
@@ -13,6 +13,8 @@ import { createNoopThreadBindingManager } from "./thread-bindings.js";
type EnsureConfiguredBindingRouteReadyFn =
typeof import("openclaw/plugin-sdk/conversation-runtime").ensureConfiguredBindingRouteReady;
let createDiscordNativeCommand: typeof import("./native-command.js").createDiscordNativeCommand;
const ensureConfiguredBindingRouteReadyMock = vi.hoisted(() =>
vi.fn<EnsureConfiguredBindingRouteReadyFn>(async () => ({
ok: true,
@@ -154,13 +156,7 @@ function createConfiguredAcpCase(params: {
};
}
async function loadCreateDiscordNativeCommand() {
vi.resetModules();
return (await import("./native-command.js")).createDiscordNativeCommand;
}
async function createNativeCommand(cfg: OpenClawConfig, commandSpec: NativeCommandSpec) {
const createDiscordNativeCommand = await loadCreateDiscordNativeCommand();
return createDiscordNativeCommand({
command: commandSpec,
cfg,
@@ -173,7 +169,6 @@ async function createNativeCommand(cfg: OpenClawConfig, commandSpec: NativeComma
}
async function createPluginCommand(params: { cfg: OpenClawConfig; name: string }) {
const createDiscordNativeCommand = await loadCreateDiscordNativeCommand();
return createDiscordNativeCommand({
command: {
name: params.name,
@@ -287,6 +282,11 @@ async function expectBoundStatusCommandDispatch(params: {
}
describe("Discord native plugin command dispatch", () => {
beforeAll(async () => {
vi.resetModules();
({ createDiscordNativeCommand } = await import("./native-command.js"));
});
beforeEach(async () => {
vi.clearAllMocks();
clearPluginCommands();

View File

@@ -1,9 +1,9 @@
import { beforeEach, describe, expect, it, vi } from "vitest";
import { beforeAll, describe, expect, it, vi } from "vitest";
let __testing: typeof import("./provider.js").__testing;
describe("resolveThreadBindingsEnabled", () => {
beforeEach(async () => {
beforeAll(async () => {
vi.resetModules();
({ __testing } = await import("./provider.js"));
});

View File

@@ -1,5 +1,5 @@
import type { WebClient } from "@slack/web-api";
import { beforeEach, describe, expect, it, vi } from "vitest";
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
const resolveSlackMedia = vi.fn();
@@ -68,12 +68,15 @@ function mockSuccessfulMediaDownload(client: ReturnType<typeof createClient>) {
}
describe("downloadSlackFile", () => {
beforeEach(async () => {
beforeAll(async () => {
vi.resetModules();
resolveSlackMedia.mockReset();
({ downloadSlackFile } = await import("./actions.js"));
});
beforeEach(() => {
resolveSlackMedia.mockReset();
});
it("returns null when files.info has no private download URL", async () => {
const client = createClient();
client.files.info.mockResolvedValueOnce({

View File

@@ -1,4 +1,4 @@
import { beforeEach, describe, expect, it, vi } from "vitest";
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
import { useFrozenTime, useRealTime } from "../../../test/helpers/extensions/frozen-time.js";
const harness = await import("./bot.create-telegram-bot.test-harness.js");
@@ -60,18 +60,25 @@ function resolveFlushTimer(setTimeoutSpy: ReturnType<typeof vi.spyOn>) {
}
describe("createTelegramBot channel_post media", () => {
beforeEach(async () => {
beforeAll(async () => {
vi.resetModules();
const { createTelegramBot: createTelegramBotBase, setTelegramBotRuntimeForTest } =
await import("./bot.js");
setTelegramBotRuntimeForTest(
telegramBotRuntimeForTest as unknown as Parameters<typeof setTelegramBotRuntimeForTest>[0],
);
createTelegramBot = (opts) =>
createTelegramBotBase({
...opts,
telegramDeps: telegramBotDepsForTest,
});
setTelegramBotRuntimeForTest(
telegramBotRuntimeForTest as unknown as Parameters<typeof setTelegramBotRuntimeForTest>[0],
);
});
beforeEach(async () => {
const { setTelegramBotRuntimeForTest } = await import("./bot.js");
setTelegramBotRuntimeForTest(
telegramBotRuntimeForTest as unknown as Parameters<typeof setTelegramBotRuntimeForTest>[0],
);
});
it("buffers channel_post media groups and processes them together", async () => {

View File

@@ -1,5 +1,5 @@
import type { Message } from "@grammyjs/types";
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
import type { TelegramContext } from "./types.js";
const saveMediaBuffer = vi.fn();
@@ -168,9 +168,12 @@ async function flushRetryTimers() {
}
describe("resolveMedia getFile retry", () => {
beforeEach(async () => {
beforeAll(async () => {
vi.resetModules();
({ resolveMedia } = await import("./delivery.js"));
});
beforeEach(() => {
vi.useFakeTimers();
fetchRemoteMedia.mockReset();
saveMediaBuffer.mockReset();