From 60b9ede1ac5d16f2608a0ce29b777a0b3685f2ee Mon Sep 17 00:00:00 2001 From: fkwp Date: Thu, 7 May 2026 10:58:05 +0200 Subject: [PATCH] test CallReconnecting event --- src/analytics/PosthogEvents.test.ts | 41 +++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/analytics/PosthogEvents.test.ts b/src/analytics/PosthogEvents.test.ts index d14e9dc2..6e44f6ab 100644 --- a/src/analytics/PosthogEvents.test.ts +++ b/src/analytics/PosthogEvents.test.ts @@ -192,4 +192,45 @@ describe("CallEnded", () => { ); }); }); + +describe("CallReconnecting", () => { + beforeAll(() => { + mockConfig(); + }); + + beforeEach(() => { + vi.restoreAllMocks(); + vi.spyOn(PosthogAnalytics.instance, "trackEvent").mockImplementation( + () => {}, + ); + }); + + afterAll(() => { + PosthogAnalytics.resetInstance(); + }); + + it("tracks event with correct shape", () => { + const tracker = new CallReconnectingTracker(); + tracker.track("!room:example.org", "syncing"); + + expect(PosthogAnalytics.instance.trackEvent).toHaveBeenCalledWith({ + eventName: "CallReconnecting", + callId: "!room:example.org", + reason: "syncing", + }); + }); + + it.each([ + "syncing", + "membershipConnected", + "certainlyConnected", + "livekit", + ] as CallReconnectingReason[])("tracks reason %s correctly", (reason) => { + const tracker = new CallReconnectingTracker(); + tracker.track("!room:example.org", reason); + + expect(PosthogAnalytics.instance.trackEvent).toHaveBeenCalledWith( + expect.objectContaining({ reason }), + ); + }); });