Files
clawdbot/src/infra/system-events.test.ts
2026-01-09 21:59:01 +01:00

60 lines
1.7 KiB
TypeScript

import { beforeEach, describe, expect, it } from "vitest";
import { prependSystemEvents } from "../auto-reply/reply/session-updates.js";
import type { ClawdbotConfig } from "../config/config.js";
import { resolveMainSessionKey } from "../config/sessions.js";
import {
enqueueSystemEvent,
peekSystemEvents,
resetSystemEventsForTest,
} from "./system-events.js";
const cfg = {} as unknown as ClawdbotConfig;
const mainKey = resolveMainSessionKey(cfg);
describe("system events (session routing)", () => {
beforeEach(() => {
resetSystemEventsForTest();
});
it("does not leak session-scoped events into main", async () => {
enqueueSystemEvent("Discord reaction added: ✅", {
sessionKey: "discord:group:123",
contextKey: "discord:reaction:added:msg:user:✅",
});
expect(peekSystemEvents(mainKey)).toEqual([]);
expect(peekSystemEvents("discord:group:123")).toEqual([
"Discord reaction added: ✅",
]);
const main = await prependSystemEvents({
cfg,
sessionKey: mainKey,
isMainSession: true,
isNewSession: false,
prefixedBodyBase: "hello",
});
expect(main).toBe("hello");
expect(peekSystemEvents("discord:group:123")).toEqual([
"Discord reaction added: ✅",
]);
const discord = await prependSystemEvents({
cfg,
sessionKey: "discord:group:123",
isMainSession: false,
isNewSession: false,
prefixedBodyBase: "hi",
});
expect(discord).toBe("System: Discord reaction added: ✅\n\nhi");
expect(peekSystemEvents("discord:group:123")).toEqual([]);
});
it("requires an explicit session key", () => {
expect(() =>
enqueueSystemEvent("Node: Mac Studio", { sessionKey: " " }),
).toThrow("sessionKey");
});
});