60 lines
1.7 KiB
TypeScript
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");
|
|
});
|
|
});
|