@gauf/tracker
Version:
Browser tracker with perfect customization
57 lines (45 loc) • 1.14 kB
text/typescript
/* tslint:disable:no-console */
import Tracker from "@gauf/tracker";
import Emitter from "@gauf/tracker/emitter";
class MetricCustomEmitter extends Emitter {
protected static emitter: string = "custom";
protected interval?: number;
public activate() {
this.interval = window.setInterval(() =>
this.emit("random", Math.random())
, 300);
}
public deactivate() {
if (this.interval) {
window.clearTimeout(this.interval);
}
}
}
describe("Custom emitter", () => {
beforeEach(() => {
console.log = jest.fn();
jest.useFakeTimers();
});
afterEach(() => {
jest.clearAllTimers();
});
it("correct works with `MetricCustomEmitter`", () => {
const url = "console://non-exists-urls";
const payload = { userId: 1 };
const tracker = new Tracker(url, {
collector: {
emitters: [
MetricCustomEmitter,
],
},
});
tracker.activate(payload);
jest.runOnlyPendingTimers();
expect(console.log).toHaveBeenCalledWith(
expect.objectContaining({
metrics: expect.any(Array),
payload,
}),
);
});
});