import { describe, expect, it } from "vitest"; import { isSlackStreamingEnabled, resolveSlackStreamingThreadHint } from "./dispatch.js"; describe("slack native streaming defaults", () => { it("is enabled for partial mode when native streaming is on", () => { expect(isSlackStreamingEnabled({ mode: "partial", nativeStreaming: true })).toBe(true); }); it("is disabled outside partial mode or when native streaming is off", () => { expect(isSlackStreamingEnabled({ mode: "partial", nativeStreaming: false })).toBe(false); expect(isSlackStreamingEnabled({ mode: "block", nativeStreaming: true })).toBe(false); expect(isSlackStreamingEnabled({ mode: "progress", nativeStreaming: true })).toBe(false); expect(isSlackStreamingEnabled({ mode: "off", nativeStreaming: true })).toBe(false); }); }); describe("slack native streaming thread hint", () => { it("stays off-thread when replyToMode=off and message is not in a thread", () => { expect( resolveSlackStreamingThreadHint({ replyToMode: "off", incomingThreadTs: undefined, messageTs: "1000.1", }), ).toBeUndefined(); }); it("uses first-reply thread when replyToMode=first", () => { expect( resolveSlackStreamingThreadHint({ replyToMode: "first", incomingThreadTs: undefined, messageTs: "1000.2", }), ).toBe("1000.2"); }); it("uses the existing incoming thread regardless of replyToMode", () => { expect( resolveSlackStreamingThreadHint({ replyToMode: "off", incomingThreadTs: "2000.1", messageTs: "1000.3", }), ).toBe("2000.1"); }); });