UNPKG

avo-inspector

Version:

[![npm version](https://badge.fury.io/js/avo-inspector.svg)](https://badge.fury.io/js/avo-inspector)

112 lines (111 loc) 6.11 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var AvoDeduplicator_1 = require("../AvoDeduplicator"); var utils_1 = require("../utils"); var AvoSchemaParser_1 = require("../AvoSchemaParser"); var AvoInspector_1 = require("../AvoInspector"); var constants_1 = require("./constants"); describe("Deduplicator", function () { var deduplicator = new AvoDeduplicator_1.AvoDeduplicator(); var testObject = { "0": "some string", "1": [1, 2, 3], 2: [["str", true]], 3: { avo: [1.1, 2.2, 3.3] } }; test("AvoDeduplicator.deepEqual tests", function () { var secondObject = { "0": "some string", "1": [1, 2, 3], 2: [["str", true]], 3: { avo: [1.1, 2.2, 3.3] } }; expect((0, utils_1.deepEquals)(testObject, secondObject)).toBe(true); expect((0, utils_1.deepEquals)(testObject, __assign(__assign({}, secondObject), { "4": "4" }))).toBe(false); expect((0, utils_1.deepEquals)(testObject, __assign(__assign({}, secondObject), { 3: __assign(__assign({}, secondObject[3]), { avo: [1.1] }) }))).toBe(false); expect((0, utils_1.deepEquals)(testObject, __assign(__assign({}, secondObject), { 0: "other string" }))).toBe(false); }); test("Detects duplications when track in avo and then manually", function () { var shouldRegisterFromAvo = deduplicator.shouldRegisterEvent("Test", testObject, true); var shouldRegisterManual = deduplicator.shouldRegisterEvent("Test", testObject, false); expect(shouldRegisterFromAvo).toBe(true); expect(shouldRegisterManual).toBe(false); }); test("Detects duplications when track manually and then in avo", function () { var shouldRegisterManual = deduplicator.shouldRegisterEvent("Test", testObject, false); var shouldRegisterFromAvo = deduplicator.shouldRegisterEvent("Test", testObject, true); expect(shouldRegisterManual).toBe(true); expect(shouldRegisterFromAvo).toBe(false); }); test("Detects duplications when track in avo and then schema manually", function () { var shouldRegisterFromAvo = deduplicator.shouldRegisterEvent("Test", testObject, true); var shouldRegisterSchemaManual = deduplicator.shouldRegisterSchemaFromManually("Test", AvoSchemaParser_1.AvoSchemaParser.extractSchema(testObject)); expect(shouldRegisterFromAvo).toBe(true); expect(shouldRegisterSchemaManual).toBe(false); }); test("Inspector deduplicates only one event when track manually, in avo and then manually again", function () { var inspector = new AvoInspector_1.AvoInspector(constants_1.defaultOptions); inspector.enableLogging(false); var manuallyTrackedSchema = inspector.trackSchemaFromEvent("test", testObject); // @ts-ignore var avoTrackedSchema = inspector._avoFunctionTrackSchemaFromEvent("test", testObject, "eventId", "eventhash"); var manuallyTrackedSchemaAgain = inspector.trackSchemaFromEvent("test", testObject); expect(manuallyTrackedSchema.length).toBe(4); expect(avoTrackedSchema.length).toBe(0); expect(manuallyTrackedSchemaAgain.length).toBe(4); }); test("Inspector deduplicates only one event when track in avo, manually and then in avo again", function () { var inspector = new AvoInspector_1.AvoInspector(constants_1.defaultOptions); inspector.enableLogging(false); // @ts-ignore var avoTrackedSchema = inspector._avoFunctionTrackSchemaFromEvent("test", testObject, "eventId", "eventhash"); var manuallyTrackedSchema = inspector.trackSchemaFromEvent("test", testObject); // @ts-ignore var avoTrackedSchemaAgain = inspector._avoFunctionTrackSchemaFromEvent("test", testObject, "eventId", "eventhash"); expect(avoTrackedSchema.length).toBe(4); expect(manuallyTrackedSchema.length).toBe(0); expect(avoTrackedSchemaAgain.length).toBe(4); }); test("Allows two same manual events in a row", function () { var inspector = new AvoInspector_1.AvoInspector(constants_1.defaultOptions); inspector.enableLogging(false); var manuallyTrackedSchema = inspector.trackSchemaFromEvent("test", testObject); var manuallyTrackedSchemaAgain = inspector.trackSchemaFromEvent("test", testObject); expect(manuallyTrackedSchema.length).toBe(4); expect(manuallyTrackedSchemaAgain.length).toBe(4); }); test("Allows two same avo events in a row", function () { var inspector = new AvoInspector_1.AvoInspector(constants_1.defaultOptions); inspector.enableLogging(false); // @ts-ignore var avoTrackedSchema = inspector._avoFunctionTrackSchemaFromEvent("test", testObject, "eventId", "eventhash"); // @ts-ignore var avoTrackedSchemaAgain = inspector._avoFunctionTrackSchemaFromEvent("test", testObject, "eventId", "eventhash"); expect(avoTrackedSchema.length).toBe(4); expect(avoTrackedSchemaAgain.length).toBe(4); }); test("Does not deduplicate if more than 300ms pass", function () { var shouldRegisterFromAvo = deduplicator.shouldRegisterEvent("Test", testObject, true); var now = new Date(); var dateNowSpy = jest .spyOn(Date, "now") .mockImplementation(function () { return now.setMilliseconds(now.getMilliseconds() + 301); }); var shouldRegisterManual = deduplicator.shouldRegisterEvent("Test", testObject, false); expect(shouldRegisterFromAvo).toBe(true); expect(shouldRegisterManual).toBe(true); dateNowSpy.mockRestore(); }); });