| import { describe, expect, it } from "vitest"; |
|
|
| import { resolveSlackThreadContext, resolveSlackThreadTargets } from "./threading.js"; |
|
|
| describe("resolveSlackThreadTargets", () => { |
| it("threads replies when message is already threaded", () => { |
| const { replyThreadTs, statusThreadTs } = resolveSlackThreadTargets({ |
| replyToMode: "off", |
| message: { |
| type: "message", |
| channel: "C1", |
| ts: "123", |
| thread_ts: "456", |
| }, |
| }); |
|
|
| expect(replyThreadTs).toBe("456"); |
| expect(statusThreadTs).toBe("456"); |
| }); |
|
|
| it("threads top-level replies when mode is all", () => { |
| const { replyThreadTs, statusThreadTs } = resolveSlackThreadTargets({ |
| replyToMode: "all", |
| message: { |
| type: "message", |
| channel: "C1", |
| ts: "123", |
| }, |
| }); |
|
|
| expect(replyThreadTs).toBe("123"); |
| expect(statusThreadTs).toBe("123"); |
| }); |
|
|
| it("keeps status threading even when reply threading is off", () => { |
| const { replyThreadTs, statusThreadTs } = resolveSlackThreadTargets({ |
| replyToMode: "off", |
| message: { |
| type: "message", |
| channel: "C1", |
| ts: "123", |
| }, |
| }); |
|
|
| expect(replyThreadTs).toBeUndefined(); |
| expect(statusThreadTs).toBe("123"); |
| }); |
|
|
| it("sets messageThreadId for top-level messages when replyToMode is all", () => { |
| const context = resolveSlackThreadContext({ |
| replyToMode: "all", |
| message: { |
| type: "message", |
| channel: "C1", |
| ts: "123", |
| }, |
| }); |
|
|
| expect(context.isThreadReply).toBe(false); |
| expect(context.messageThreadId).toBe("123"); |
| expect(context.replyToId).toBe("123"); |
| }); |
|
|
| it("prefers thread_ts as messageThreadId for replies", () => { |
| const context = resolveSlackThreadContext({ |
| replyToMode: "off", |
| message: { |
| type: "message", |
| channel: "C1", |
| ts: "123", |
| thread_ts: "456", |
| }, |
| }); |
|
|
| expect(context.isThreadReply).toBe(true); |
| expect(context.messageThreadId).toBe("456"); |
| expect(context.replyToId).toBe("456"); |
| }); |
| }); |
|
|