UNPKG

@gauf/tracker

Version:

Browser tracker with perfect customization

57 lines (40 loc) 1.36 kB
/* tslint:disable:no-console */ import Tracker from "@gauf/tracker"; describe("Tracker", () => { beforeEach(() => { console.log = jest.fn(); jest.useFakeTimers(); }); afterEach(() => { jest.clearAllTimers(); }); it("deactiavte on window unload", () => { const tracker = new Tracker("console://non-exists-url"); const event = new Event("beforeunload"); tracker.activate(); window.dispatchEvent(event); expect(console.log).toBeCalledTimes(1); }); it("try to send metrics after deactivation", () => { const tracker = new Tracker("console://non-exists-url"); tracker.activate(); tracker.deactivate(); expect(console.log).toBeCalledTimes(1); }); it("has different heartbeat parameter values", () => { const heartbeats = [1, 2, 3]; const url = "console://non-exists-url"; const trackers = heartbeats.map((heartbeat) => ( new Tracker(url, { heartbeat }) )); trackers.forEach((tracker, userId) => tracker.activate({ userId })); jest.runOnlyPendingTimers(); expect(console.log).toBeCalledTimes(trackers.length); trackers.forEach((_, userId) => expect(console.log).toHaveBeenNthCalledWith(userId + 1, expect.objectContaining({ metrics: expect.any(Array), payload: expect.objectContaining({ userId }), })), ); }); });