import { describe, expect, it } from "vitest"; import { browserPreviewActivity } from "./browser-preview-context"; describe("browserPreviewActivity", () => { it("publishes cursors to subscribers and drops cleared ids", () => { for (const id of browserPreviewActivity.snapshot().keys()) browserPreviewActivity.clear(id); const seen: string[][] = []; const unsubscribe = browserPreviewActivity.subscribe((activities) => { seen.push([...activities.keys()]); }); try { browserPreviewActivity.set("bot-a", 50, 40, "Ada"); browserPreviewActivity.set("bot-a", 50, 40, "Ada"); browserPreviewActivity.set("bot-b", 10, 20, "Bob"); expect(browserPreviewActivity.snapshot().get("bot-a")).toEqual({ x: 50, y: 40, label: "Ada", }); browserPreviewActivity.clear("bot-a"); browserPreviewActivity.clear("missing"); expect(seen).toEqual([[], ["bot-a"], ["bot-a", "bot-b"], ["bot-b"]]); } finally { unsubscribe(); for (const id of [...browserPreviewActivity.snapshot().keys()]) { browserPreviewActivity.clear(id); } } expect(browserPreviewActivity.snapshot().size).toBe(0); }); });