const dispatcher = require("../../../../src/services/integrations/dispatcher"); describe("Integration Dispatcher", () => { it("dispatches erp.reimbursement.paid", async () => { const result = await dispatcher.dispatchOutboxEvent({ config: { erpSyncEnabled: true, erpSyncProvider: "mock" }, eventType: "erp.reimbursement.paid", payload: { reimbursementId: "rb-1", formNumber: "BX-001" }, }); expect(result.channel).toBe("erp"); expect(result.code).toBe("mock_synced"); }); it("dispatches notification.im with mock channel", async () => { const result = await dispatcher.dispatchOutboxEvent({ prisma: { notificationChannel: { findUnique: vi.fn().mockResolvedValue({ id: "channel-1", channel_type: "wecom", name: "test", enabled: true, config_json: { mode: "mock", routing: {} }, template_json: null, }), }, }, config: { imNotifierEnabled: true }, eventType: "notification.im", payload: { channelId: "channel-1", channelType: "wecom", title: "title", body: "body" }, }); expect(result.channel).toBe("im"); expect(result.code).toBe("mock_sent"); }); it("throws error for unsupported event", async () => { await expect( dispatcher.dispatchOutboxEvent({ config: {}, eventType: "unknown.event", }), ).rejects.toThrow("unsupported_outbox_event:unknown.event"); }); });