import { describe, it, expect, beforeEach } from "vitest"; import { SessionManager } from "../../src/session-manager.js"; describe("SessionManager", () => { let manager: SessionManager; beforeEach(() => { manager = new SessionManager(); }); it("returns undefined for unknown channel", () => { expect(manager.getSessionId("unknown")).toBeUndefined(); }); it("stores and retrieves a session", () => { manager.setSessionId("ch-1", "sess-abc"); expect(manager.getSessionId("ch-1")).toBe("sess-abc"); }); it("overwrites an existing session", () => { manager.setSessionId("ch-1", "sess-old"); manager.setSessionId("ch-1", "sess-new"); expect(manager.getSessionId("ch-1")).toBe("sess-new"); }); it("removes a session", () => { manager.setSessionId("ch-1", "sess-abc"); manager.removeSession("ch-1"); expect(manager.getSessionId("ch-1")).toBeUndefined(); }); it("removeSession on unknown channel is a no-op", () => { expect(() => manager.removeSession("nope")).not.toThrow(); }); it("clear removes all sessions", () => { manager.setSessionId("ch-1", "s1"); manager.setSessionId("ch-2", "s2"); manager.clear(); expect(manager.getSessionId("ch-1")).toBeUndefined(); expect(manager.getSessionId("ch-2")).toBeUndefined(); }); it("isolates sessions across channels", () => { manager.setSessionId("ch-1", "s1"); manager.setSessionId("ch-2", "s2"); expect(manager.getSessionId("ch-1")).toBe("s1"); expect(manager.getSessionId("ch-2")).toBe("s2"); manager.removeSession("ch-1"); expect(manager.getSessionId("ch-2")).toBe("s2"); }); });