test: stabilize slack reaction assertions

This commit is contained in:
Peter Steinberger
2026-05-02 01:30:57 +01:00
parent 58897de60c
commit 7c740711b4
2 changed files with 17 additions and 4 deletions

View File

@@ -15,6 +15,8 @@ type SlackTestState = {
replyMock: Mock<(...args: unknown[]) => unknown>;
updateLastRouteMock: Mock<(...args: unknown[]) => unknown>;
reactMock: Mock<(...args: unknown[]) => unknown>;
reactionAddMock: Mock<(...args: unknown[]) => unknown>;
reactionRemoveMock: Mock<(...args: unknown[]) => unknown>;
readAllowFromStoreMock: Mock<(...args: unknown[]) => Promise<unknown>>;
upsertPairingRequestMock: Mock<(...args: unknown[]) => Promise<unknown>>;
};
@@ -25,6 +27,8 @@ const slackTestState: SlackTestState = vi.hoisted(() => ({
replyMock: vi.fn(),
updateLastRouteMock: vi.fn(),
reactMock: vi.fn(),
reactionAddMock: vi.fn(),
reactionRemoveMock: vi.fn(),
readAllowFromStoreMock: vi.fn(),
upsertPairingRequestMock: vi.fn(),
}));
@@ -88,8 +92,14 @@ function ensureSlackTestRuntime(): {
},
},
reactions: {
add: (...args: unknown[]) => slackTestState.reactMock(...args),
remove: (...args: unknown[]) => slackTestState.reactMock(...args),
add: (...args: unknown[]) => {
slackTestState.reactionAddMock(...args);
return slackTestState.reactMock(...args);
},
remove: (...args: unknown[]) => {
slackTestState.reactionRemoveMock(...args);
return slackTestState.reactMock(...args);
},
},
};
}
@@ -182,6 +192,8 @@ export function resetSlackTestState(config: Record<string, unknown> = defaultSla
slackTestState.replyMock.mockReset();
slackTestState.updateLastRouteMock.mockReset();
slackTestState.reactMock.mockReset();
slackTestState.reactionAddMock.mockReset();
slackTestState.reactionRemoveMock.mockReset();
slackTestState.readAllowFromStoreMock.mockReset().mockResolvedValue([]);
slackTestState.upsertPairingRequestMock.mockReset().mockResolvedValue({
code: "PAIRCODE",

View File

@@ -19,7 +19,8 @@ import {
const { monitorSlackProvider } = await import("./monitor/provider.js");
const slackTestState = getSlackTestState();
const { sendMock, replyMock, reactMock, upsertPairingRequestMock } = slackTestState;
const { sendMock, replyMock, reactMock, reactionAddMock, upsertPairingRequestMock } =
slackTestState;
beforeEach(() => {
resetInboundDedupe();
@@ -275,7 +276,7 @@ describe("monitorSlackProvider tool results", () => {
endsWith: string;
includes: string;
}) {
const names = reactMock.mock.calls.map(([args]) => (args as { name: string }).name);
const names = reactionAddMock.mock.calls.map(([args]) => (args as { name: string }).name);
expect(names.slice(0, expected.startsWith.length)).toEqual(expected.startsWith);
expect(names).toContain(expected.includes);
expect(names.at(-1)).toBe(expected.endsWith);