import { beforeEach, describe, expect, it } from "vitest"; import type { GatewayPresenceUpdate } from "discord-api-types/v10"; import { clearPresences, getPresence, presenceCacheSize, setPresence } from "./presence-cache.js"; describe("presence-cache", () => { beforeEach(() => { clearPresences(); }); it("scopes presence entries by account", () => { const presenceA = { status: "online" } as GatewayPresenceUpdate; const presenceB = { status: "idle" } as GatewayPresenceUpdate; setPresence("account-a", "user-1", presenceA); setPresence("account-b", "user-1", presenceB); expect(getPresence("account-a", "user-1")).toBe(presenceA); expect(getPresence("account-b", "user-1")).toBe(presenceB); expect(getPresence("account-a", "user-2")).toBeUndefined(); }); it("clears presence per account", () => { const presence = { status: "dnd" } as GatewayPresenceUpdate; setPresence("account-a", "user-1", presence); setPresence("account-b", "user-2", presence); clearPresences("account-a"); expect(getPresence("account-a", "user-1")).toBeUndefined(); expect(getPresence("account-b", "user-2")).toBe(presence); expect(presenceCacheSize()).toBe(1); }); });