melbot / src /slack /monitor /thread-resolution.test.ts
amos-fernandes's picture
Upload 4501 files
3a65265 verified
import { describe, expect, it, vi } from "vitest";
import type { SlackMessageEvent } from "../types.js";
import { createSlackThreadTsResolver } from "./thread-resolution.js";
describe("createSlackThreadTsResolver", () => {
it("caches resolved thread_ts lookups", async () => {
const historyMock = vi.fn().mockResolvedValue({
messages: [{ ts: "1", thread_ts: "9" }],
});
const resolver = createSlackThreadTsResolver({
client: { conversations: { history: historyMock } } as any,
cacheTtlMs: 60_000,
maxSize: 5,
});
const message = {
channel: "C1",
parent_user_id: "U2",
ts: "1",
} as SlackMessageEvent;
const first = await resolver.resolve({ message, source: "message" });
const second = await resolver.resolve({ message, source: "message" });
expect(first.thread_ts).toBe("9");
expect(second.thread_ts).toBe("9");
expect(historyMock).toHaveBeenCalledTimes(1);
});
});