import { beforeEach, describe, expect, it } from "vite-plus/test"; import { useBrowserPointerStore } from "./browserPointerStore"; beforeEach(() => { useBrowserPointerStore.setState({ byTabId: {} });}); describe("browserPointerStore", () => { it("tracks the latest pointer target independently for each tab", () => { const store = useBrowserPointerStore.getState(); store.apply({ tabId: "tab_a", phase: "move", x: 20, y: 30, sequence: 0, createdAt: "2026-06-12T00:00:00.000Z", }); store.apply({ tabId: "tab_b", phase: "move", x: 40, y: 50, sequence: 1, createdAt: "2026-06-12T00:00:01.000Z", }); store.apply({ tabId: "tab_a", phase: "click", x: 60, y: 70, sequence: 2, createdAt: "2026-06-12T00:00:02.000Z", }); expect(useBrowserPointerStore.getState().byTabId).toMatchObject({ tab_a: { phase: "click", x: 60, y: 70, sequence: 2 }, tab_b: { phase: "move", x: 40, y: 50, sequence: 1 }, }); }); it("clears one tab without affecting the others", () => { const store = useBrowserPointerStore.getState(); store.apply({ tabId: "tab_a", phase: "move", x: 20, y: 30, sequence: 0, createdAt: "2026-06-12T00:00:00.000Z", }); store.apply({ tabId: "tab_b", phase: "move", x: 40, y: 50, sequence: 1, createdAt: "2026-06-12T00:00:01.000Z", }); store.clear("tab_a"); expect(useBrowserPointerStore.getState().byTabId).toEqual({ tab_b: expect.objectContaining({ x: 40, y: 50 }), }); });});
import { beforeEach, describe, expect, it } from "vite-plus/test";
import { useBrowserPointerStore } from "./browserPointerStore";
beforeEach(() => {
useBrowserPointerStore.setState({ byTabId: {} });
});
describe("browserPointerStore", () => {
it("tracks the latest pointer target independently for each tab", () => {
const store = useBrowserPointerStore.getState();
store.apply({
tabId: "tab_a",
phase: "move",
x: 20,
y: 30,
sequence: 0,
createdAt: "2026-06-12T00:00:00.000Z",
});
store.apply({
tabId: "tab_b",
phase: "move",
x: 40,
y: 50,
sequence: 1,
createdAt: "2026-06-12T00:00:01.000Z",
});
store.apply({
tabId: "tab_a",
phase: "click",
x: 60,
y: 70,
sequence: 2,
createdAt: "2026-06-12T00:00:02.000Z",
});
expect(useBrowserPointerStore.getState().byTabId).toMatchObject({
tab_a: { phase: "click", x: 60, y: 70, sequence: 2 },
tab_b: { phase: "move", x: 40, y: 50, sequence: 1 },
});
});
it("clears one tab without affecting the others", () => {
const store = useBrowserPointerStore.getState();
store.apply({
tabId: "tab_a",
phase: "move",
x: 20,
y: 30,
sequence: 0,
createdAt: "2026-06-12T00:00:00.000Z",
});
store.apply({
tabId: "tab_b",
phase: "move",
x: 40,
y: 50,
sequence: 1,
createdAt: "2026-06-12T00:00:01.000Z",
});
store.clear("tab_a");
expect(useBrowserPointerStore.getState().byTabId).toEqual({
tab_b: expect.objectContaining({ x: 40, y: 50 }),
});
});
});