Spaces:
Paused
Paused
| import { describe, expect, it } from "vitest"; | |
| import { normalizeSlackMessagingTarget } from "../channels/plugins/normalize/slack.js"; | |
| import { parseSlackTarget, resolveSlackChannelId } from "./targets.js"; | |
| describe("parseSlackTarget", () => { | |
| it("parses user mentions and prefixes", () => { | |
| expect(parseSlackTarget("<@U123>")).toMatchObject({ | |
| kind: "user", | |
| id: "U123", | |
| normalized: "user:u123", | |
| }); | |
| expect(parseSlackTarget("user:U456")).toMatchObject({ | |
| kind: "user", | |
| id: "U456", | |
| normalized: "user:u456", | |
| }); | |
| expect(parseSlackTarget("slack:U789")).toMatchObject({ | |
| kind: "user", | |
| id: "U789", | |
| normalized: "user:u789", | |
| }); | |
| }); | |
| it("parses channel targets", () => { | |
| expect(parseSlackTarget("channel:C123")).toMatchObject({ | |
| kind: "channel", | |
| id: "C123", | |
| normalized: "channel:c123", | |
| }); | |
| expect(parseSlackTarget("#C999")).toMatchObject({ | |
| kind: "channel", | |
| id: "C999", | |
| normalized: "channel:c999", | |
| }); | |
| }); | |
| it("rejects invalid @ and # targets", () => { | |
| expect(() => parseSlackTarget("@bob-1")).toThrow(/Slack DMs require a user id/); | |
| expect(() => parseSlackTarget("#general-1")).toThrow(/Slack channels require a channel id/); | |
| }); | |
| }); | |
| describe("resolveSlackChannelId", () => { | |
| it("strips channel: prefix and accepts raw ids", () => { | |
| expect(resolveSlackChannelId("channel:C123")).toBe("C123"); | |
| expect(resolveSlackChannelId("C123")).toBe("C123"); | |
| }); | |
| it("rejects user targets", () => { | |
| expect(() => resolveSlackChannelId("user:U123")).toThrow(/channel id is required/i); | |
| }); | |
| }); | |
| describe("normalizeSlackMessagingTarget", () => { | |
| it("defaults raw ids to channels", () => { | |
| expect(normalizeSlackMessagingTarget("C123")).toBe("channel:c123"); | |
| }); | |
| }); | |