mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-25 17:02:46 +00:00
test: speed up slack extension suites
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import {
|
||||
defaultSlackTestConfig,
|
||||
getSlackTestState,
|
||||
@@ -20,15 +20,15 @@ let monitorSlackProvider: typeof import("./monitor.js").monitorSlackProvider;
|
||||
const slackTestState = getSlackTestState();
|
||||
const { sendMock, replyMock, reactMock, upsertPairingRequestMock } = slackTestState;
|
||||
|
||||
beforeEach(() => {
|
||||
beforeAll(async () => {
|
||||
vi.resetModules();
|
||||
});
|
||||
|
||||
beforeEach(async () => {
|
||||
({ resetInboundDedupe } = await import("../../../src/auto-reply/reply/inbound-dedupe.js"));
|
||||
({ HISTORY_CONTEXT_MARKER } = await import("../../../src/auto-reply/reply/history.js"));
|
||||
({ CURRENT_MESSAGE_MARKER } = await import("../../../src/auto-reply/reply/mentions.js"));
|
||||
({ monitorSlackProvider } = await import("./monitor.js"));
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
resetInboundDedupe();
|
||||
resetSlackTestState(defaultSlackTestConfig());
|
||||
});
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
const enqueueSystemEventMock = vi.hoisted(() => vi.fn());
|
||||
let registerSlackChannelEvents: typeof import("./channels.js").registerSlackChannelEvents;
|
||||
@@ -32,13 +32,16 @@ function createChannelContext(params?: {
|
||||
}
|
||||
|
||||
describe("registerSlackChannelEvents", () => {
|
||||
beforeEach(async () => {
|
||||
beforeAll(async () => {
|
||||
vi.resetModules();
|
||||
enqueueSystemEventMock.mockClear();
|
||||
({ registerSlackChannelEvents } = await import("./channels.js"));
|
||||
({ createSlackSystemEventTestHarness } = await import("./system-event-test-harness.js"));
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
enqueueSystemEventMock.mockClear();
|
||||
});
|
||||
|
||||
it("does not track mismatched events", async () => {
|
||||
const trackEvent = vi.fn();
|
||||
const { getCreatedHandler } = createChannelContext({
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
const enqueueSystemEventMock = vi.fn();
|
||||
const dispatchPluginInteractiveHandlerMock = vi.fn(async () => ({
|
||||
@@ -197,9 +197,12 @@ function createContext(overrides?: {
|
||||
}
|
||||
|
||||
describe("registerSlackInteractionEvents", () => {
|
||||
beforeEach(async () => {
|
||||
beforeAll(async () => {
|
||||
vi.resetModules();
|
||||
({ registerSlackInteractionEvents } = await import("./interactions.js"));
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
enqueueSystemEventMock.mockClear();
|
||||
dispatchPluginInteractiveHandlerMock.mockClear();
|
||||
resolvePluginConversationBindingApprovalMock.mockClear();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
const memberMocks = vi.hoisted(() => ({
|
||||
enqueue: vi.fn(),
|
||||
@@ -65,14 +65,17 @@ async function runMemberCase(args: MemberCaseArgs = {}): Promise<void> {
|
||||
}
|
||||
|
||||
describe("registerSlackMemberEvents", () => {
|
||||
beforeEach(async () => {
|
||||
beforeAll(async () => {
|
||||
vi.resetModules();
|
||||
memberMocks.enqueue.mockClear();
|
||||
({ registerSlackMemberEvents } = await import("./members.js"));
|
||||
({ createSlackSystemEventTestHarness: initSlackHarness } =
|
||||
await import("./system-event-test-harness.js"));
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
memberMocks.enqueue.mockClear();
|
||||
});
|
||||
|
||||
const cases: Array<{ name: string; args: MemberCaseArgs; calls: number }> = [
|
||||
{
|
||||
name: "enqueues DM member events when dmPolicy is open",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import {
|
||||
createSlackSystemEventTestHarness,
|
||||
type SlackSystemEventTestOverrides,
|
||||
@@ -52,11 +52,15 @@ function resetMessageMocks(): void {
|
||||
messageAllowMock.mockReset().mockResolvedValue([]);
|
||||
}
|
||||
|
||||
beforeEach(async () => {
|
||||
beforeAll(async () => {
|
||||
vi.resetModules();
|
||||
({ registerSlackMessageEvents } = await import("./messages.js"));
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
resetMessageMocks();
|
||||
});
|
||||
|
||||
function makeChangedEvent(overrides?: { channel?: string; user?: string }) {
|
||||
const user = overrides?.user ?? "U1";
|
||||
return {
|
||||
@@ -116,7 +120,6 @@ async function invokeRegisteredHandler(input: {
|
||||
event: Record<string, unknown>;
|
||||
body?: unknown;
|
||||
}) {
|
||||
resetMessageMocks();
|
||||
const { handler, handleSlackMessage } = createHandlers(input.eventName, input.overrides);
|
||||
expect(handler).toBeTruthy();
|
||||
await handler!({
|
||||
@@ -127,7 +130,6 @@ async function invokeRegisteredHandler(input: {
|
||||
}
|
||||
|
||||
async function runMessageCase(input: MessageCase = {}): Promise<void> {
|
||||
resetMessageMocks();
|
||||
const { handler } = createHandlers("message", input.overrides);
|
||||
expect(handler).toBeTruthy();
|
||||
await handler!({
|
||||
@@ -204,7 +206,6 @@ describe("registerSlackMessageEvents", () => {
|
||||
});
|
||||
|
||||
it("handles channel and group messages via the unified message handler", async () => {
|
||||
resetMessageMocks();
|
||||
const { handler, handleSlackMessage } = createHandlers("message", {
|
||||
dmPolicy: "open",
|
||||
channelType: "channel",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
const pinEnqueueMock = vi.hoisted(() => vi.fn());
|
||||
let registerSlackPinEvents: typeof import("./pins.js").registerSlackPinEvents;
|
||||
@@ -69,14 +69,17 @@ async function runPinCase(input: PinCase = {}): Promise<void> {
|
||||
}
|
||||
|
||||
describe("registerSlackPinEvents", () => {
|
||||
beforeEach(async () => {
|
||||
beforeAll(async () => {
|
||||
vi.resetModules();
|
||||
pinEnqueueMock.mockClear();
|
||||
({ registerSlackPinEvents } = await import("./pins.js"));
|
||||
({ createSlackSystemEventTestHarness: buildPinHarness } =
|
||||
await import("./system-event-test-harness.js"));
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
pinEnqueueMock.mockClear();
|
||||
});
|
||||
|
||||
const cases: Array<{ name: string; args: PinCase; expectedCalls: number }> = [
|
||||
{
|
||||
name: "enqueues DM pin system events when dmPolicy is open",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
const reactionQueueMock = vi.hoisted(() => vi.fn());
|
||||
let registerSlackReactionEvents: typeof import("./reactions.js").registerSlackReactionEvents;
|
||||
@@ -71,13 +71,16 @@ async function executeReactionCase(input: ReactionRunInput = {}) {
|
||||
}
|
||||
|
||||
describe("registerSlackReactionEvents", () => {
|
||||
beforeEach(async () => {
|
||||
beforeAll(async () => {
|
||||
vi.resetModules();
|
||||
reactionQueueMock.mockClear();
|
||||
({ registerSlackReactionEvents } = await import("./reactions.js"));
|
||||
({ createSlackSystemEventTestHarness } = await import("./system-event-test-harness.js"));
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
reactionQueueMock.mockClear();
|
||||
});
|
||||
|
||||
const cases: Array<{ name: string; input: ReactionRunInput; expectedCalls: number }> = [
|
||||
{
|
||||
name: "enqueues DM reaction system events when dmPolicy is open",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
const enqueueMock = vi.fn(async (_entry: unknown) => {});
|
||||
const flushKeyMock = vi.fn(async (_key: string) => {});
|
||||
@@ -70,12 +70,15 @@ async function handleDirectMessage(
|
||||
}
|
||||
|
||||
describe("createSlackMessageHandler", () => {
|
||||
beforeEach(async () => {
|
||||
beforeAll(async () => {
|
||||
vi.resetModules();
|
||||
({ createSlackMessageHandler } = await import("./message-handler.js"));
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
enqueueMock.mockClear();
|
||||
flushKeyMock.mockClear();
|
||||
resolveThreadTsMock.mockClear();
|
||||
({ createSlackMessageHandler } = await import("./message-handler.js"));
|
||||
});
|
||||
|
||||
it("does not track invalid non-message events from the message stream", async () => {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
const sendMock = vi.fn();
|
||||
vi.mock("../send.js", () => ({
|
||||
@@ -21,9 +21,12 @@ function baseParams(overrides?: Record<string, unknown>) {
|
||||
}
|
||||
|
||||
describe("deliverReplies identity passthrough", () => {
|
||||
beforeEach(async () => {
|
||||
beforeAll(async () => {
|
||||
vi.resetModules();
|
||||
({ deliverReplies } = await import("./replies.js"));
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
sendMock.mockReset();
|
||||
});
|
||||
it("passes identity to sendMessageSlack for text replies", async () => {
|
||||
|
||||
@@ -194,8 +194,11 @@ async function loadRegisterSlackMonitorSlashCommands(): Promise<RegisterFn> {
|
||||
|
||||
const { dispatchMock } = getSlackSlashMocks();
|
||||
|
||||
beforeEach(async () => {
|
||||
beforeAll(() => {
|
||||
vi.resetModules();
|
||||
});
|
||||
|
||||
beforeEach(async () => {
|
||||
registerSlackMonitorSlashCommandsPromise = undefined;
|
||||
resetSlackSlashMocks();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user