import { describe, expect, it } from "vitest"; import { looksLikeNextcloudTalkTargetId, normalizeNextcloudTalkMessagingTarget, stripNextcloudTalkTargetPrefix, } from "./normalize.js"; describe("nextcloud-talk target normalization", () => { it("strips supported prefixes to a room token", () => { expect(stripNextcloudTalkTargetPrefix(" room:abc123 ")).toBe("abc123"); expect(stripNextcloudTalkTargetPrefix("nextcloud-talk:room:AbC123")).toBe("AbC123"); expect(stripNextcloudTalkTargetPrefix("nc-talk:room:ops")).toBe("ops"); expect(stripNextcloudTalkTargetPrefix("nc:room:ops")).toBe("ops"); expect(stripNextcloudTalkTargetPrefix("room: ")).toBeUndefined(); }); it("normalizes messaging targets to lowercase channel ids", () => { expect(normalizeNextcloudTalkMessagingTarget("room:AbC123")).toBe("nextcloud-talk:abc123"); expect(normalizeNextcloudTalkMessagingTarget("nc-talk:room:Ops")).toBe("nextcloud-talk:ops"); }); it("detects prefixed and bare room ids", () => { expect(looksLikeNextcloudTalkTargetId("nextcloud-talk:room:abc12345")).toBe(true); expect(looksLikeNextcloudTalkTargetId("nc:opsroom1")).toBe(true); expect(looksLikeNextcloudTalkTargetId("abc12345")).toBe(true); expect(looksLikeNextcloudTalkTargetId("")).toBe(false); }); });