fix: route system events per session
This commit is contained in:
64
src/infra/system-events.test.ts
Normal file
64
src/infra/system-events.test.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
import { beforeEach, describe, expect, it } from "vitest";
|
||||
|
||||
import { prependSystemEvents } from "../auto-reply/reply/session-updates.js";
|
||||
import type { ClawdbotConfig } from "../config/config.js";
|
||||
import {
|
||||
enqueueSystemEvent,
|
||||
peekSystemEvents,
|
||||
resetSystemEventsForTest,
|
||||
} from "./system-events.js";
|
||||
|
||||
const cfg = {} as unknown as ClawdbotConfig;
|
||||
|
||||
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()).toEqual([]);
|
||||
expect(peekSystemEvents("discord:group:123")).toEqual([
|
||||
"Discord reaction added: ✅",
|
||||
]);
|
||||
|
||||
const main = await prependSystemEvents({
|
||||
cfg,
|
||||
sessionKey: "main",
|
||||
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("defaults system events to main", async () => {
|
||||
enqueueSystemEvent("Node: Mac Studio");
|
||||
|
||||
const main = await prependSystemEvents({
|
||||
cfg,
|
||||
sessionKey: "main",
|
||||
isMainSession: true,
|
||||
isNewSession: false,
|
||||
prefixedBodyBase: "ping",
|
||||
});
|
||||
expect(main).toBe("System: Node: Mac Studio\n\nping");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user