Initial commit: Discord-Claude Gateway with event-driven agent runtime
This commit is contained in:
52
tests/unit/session-manager.test.ts
Normal file
52
tests/unit/session-manager.test.ts
Normal file
@@ -0,0 +1,52 @@
|
||||
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");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user