34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
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" } });
|
|
});
|
|
});
|