import { describe, it, expect } from "vitest"; import { matchChannelTemplate } from "@/channel-template"; describe("matchChannelTemplate", () => { it("matches a plain channel name exactly", () => { expect(matchChannelTemplate("blog.feed", "blog.feed")).toEqual({ params: {} }); expect(matchChannelTemplate("blog.feed", "blog.other")).toBeNull(); }); it("matches a templated channel and extracts params", () => { expect( matchChannelTemplate("notifications.user.{userId}", "notifications.user.user_42"), ).toEqual({ params: { userId: "user_42" } }); }); it("returns null when a templated channel doesn't match the shape", () => { expect( matchChannelTemplate("notifications.user.{userId}", "notifications.user"), ).toBeNull(); expect( matchChannelTemplate("notifications.user.{userId}", "blog.feed"), ).toBeNull(); }); it("supports multiple placeholders", () => { expect( matchChannelTemplate( "rooms.{roomId}.user.{userId}", "rooms.r1.user.u1", ), ).toEqual({ params: { roomId: "r1", userId: "u1" } }); }); });