UNPKG

@aller/blink

Version:

A library for tracking user behaviour.

333 lines 12.1 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var main_1 = __importDefault(require("../main")); var config_1 = require("../config/config"); var get_mock_utils_1 = __importDefault(require("../mock/get-mock-utils")); var jest_mock_1 = __importDefault(require("jest-mock")); describe('Box intregration test', function () { it('should not send if only screen enter event', function () { var mockSend = jest_mock_1.default.fn(); var blink = main_1.default({ send: mockSend, sendDirect: mockSend, persistState: function () { return null; }, utils: get_mock_utils_1.default, }); // First send of a pageInit event, to set the general state blink.pageInit({ url: 'http://some.site', pageView: 'the-pageview-id', previousPageView: 'prev-pageview-uuid', referrer: 'www.sol.no', userId: 'xavier_no', site: 'www.some.site', }); expect(mockSend.mock.calls.length).toBe(0); blink.boxScreenEnter({ id: 'old-car-box', height: 250, width: 480, time: new Date(3), title: '- Old cars is the new thing!', }); // We don't want anything to be sent at this point expect(mockSend.mock.calls.length).toBe(0); }); it('should send an event if first getting enter and then exit event', function () { var mockSend = jest_mock_1.default.fn(); var blink = main_1.default({ send: mockSend, sendDirect: mockSend, persistState: function () { return null; }, utils: get_mock_utils_1.default, }); // First send of a pageInit event, to set the general state blink.pageInit({ url: 'http://some.site', pageView: 'box-pageview-id', previousPageView: 'prev-pageview-uuid', referrer: 'www.sol.no', userId: 'xavier_no', site: 'www.kk.no', }); expect(mockSend.mock.calls.length).toBe(0); blink.boxScreenEnter({ id: 'some-box-id', title: 'Another day', height: 250, width: 480, time: new Date(1000), }); // We don't want anything to be sent at this point expect(mockSend.mock.calls.length).toBe(0); blink.boxScreenExit({ id: 'some-box-id', time: new Date(5000) }); expect(mockSend.mock.calls.length).toBe(1); expect(mockSend.mock.calls[0][0]).toEqual([ { id: 'some-box-id', boxId: 'some-box-id', type: 'box', inscreenTime: 4000, pageView: 'box-pageview-id', referrer: 'www.sol.no', userId: 'xavier_no', version: config_1.VERSION, site: 'www.kk.no', title: 'Another day', height: 250, width: 480, }, ]); }); it('should not crash if first getting exit event before enter event', function () { var mockSend = jest_mock_1.default.fn(); var blink = main_1.default({ send: mockSend, sendDirect: mockSend, persistState: function () { return null; }, utils: get_mock_utils_1.default, }); // First send of a pageInit event, to set the general state blink.pageInit({ url: 'http://some.site', pageView: 'box-pageview-id', previousPageView: 'prev-pageview-uuid', referrer: 'www.sol.no', userId: 'xavier_no', site: 'www.kk.no', }); blink.boxScreenExit({ id: 'awesome-box-id', time: new Date(0) }); // We don't want anything to be sent at this point expect(mockSend.mock.calls.length).toBe(1); expect(mockSend.mock.calls[0][0]).toEqual([ { id: 'awesome-box-id', boxId: 'awesome-box-id', type: 'box', height: 0, title: undefined, width: 0, inscreenTime: 0, pageView: 'box-pageview-id', referrer: 'www.sol.no', userId: 'xavier_no', version: config_1.VERSION, site: 'www.kk.no', }, ]); }); it('should not count inscreen time when page is hidden', function () { var mockSend = jest_mock_1.default.fn(); var blink = main_1.default({ send: mockSend, sendDirect: mockSend, persistState: function () { return null; }, utils: get_mock_utils_1.default, }); // First send of a pageInit event, to set the general state blink.pageInit({ url: 'http://some.site', pageView: 'box-pageview-id', previousPageView: 'prev-pageview-uuid', referrer: 'www.sol.no', userId: 'xavier_no', site: 'www.kk.no', }); blink.boxScreenEnter({ id: 'awesome-box-id', title: 'Hello', time: new Date(1), }); // We don't want anything to be sent at this point expect(mockSend.mock.calls.length).toBe(0); blink.screenHide(new Date(3)); blink.screenShow(new Date(8)); blink.boxScreenExit({ id: 'awesome-box-id', time: new Date(10) }); expect(mockSend.mock.calls[0][0]).toEqual([ { id: 'awesome-box-id', boxId: 'awesome-box-id', type: 'box', height: 0, title: 'Hello', width: 0, inscreenTime: 4, pageView: 'box-pageview-id', referrer: 'www.sol.no', userId: 'xavier_no', version: config_1.VERSION, site: 'www.kk.no', }, ]); }); it('should stop counting active time 10 seconds after last pulse', function () { var mockSend = jest_mock_1.default.fn(); var blink = main_1.default({ send: mockSend, sendDirect: mockSend, persistState: function () { return null; }, utils: get_mock_utils_1.default, }); // First send of a pageInit event, to set the general state blink.pageInit({ url: 'http://some.site', pageView: 'box-pageview-id', previousPageView: 'prev-pageview-uuid', referrer: 'www.sol.no', userId: 'xavier_no', site: 'www.some.site', }); // First, an exit event, to throw things off blink.boxScreenExit({ id: 'awesome-box-id', time: new Date(150) }); expect(mockSend.mock.calls.length).toBe(1); // Then, an enter event blink.boxScreenEnter({ id: 'awesome-box-id', title: 'Another day', height: 250, width: 480, time: new Date(1000), }); // Check that the box shows correct inscreen time expect(blink.getBox({ id: 'awesome-box-id', time: new Date(3500) })).toEqual({ inscreenTime: 2500, height: 250, id: 'awesome-box-id', title: 'Another day', width: 480, }); }); it('should stop counting active time 10 seconds after last pulse', function () { var mockSend = jest_mock_1.default.fn(); var blink = main_1.default({ send: mockSend, sendDirect: mockSend, persistState: function () { return null; }, utils: get_mock_utils_1.default, }); // First send of a pageInit event, to set the general state blink.pageInit({ url: 'http://some.site', pageView: 'box-pageview-id', previousPageView: 'prev-pageview-uuid', referrer: 'www.sol.no', userId: 'xavier_no', site: 'www.some.site', }); // First, an exit event, to throw things off blink.boxScreenExit({ id: 'awesome-box-id', time: new Date(150) }); expect(mockSend.mock.calls.length).toBe(1); // Then, an enter event blink.boxScreenEnter({ id: 'awesome-box-id', title: 'Another day', height: 250, width: 480, time: new Date(1000), }); // Check that the box shows correct inscreen time expect(blink.getBox({ id: 'awesome-box-id', time: new Date(3500) })).toEqual({ inscreenTime: 2500, height: 250, id: 'awesome-box-id', title: 'Another day', width: 480, }); }); it('should send two separate events for two separate pages', function () { var PAGES; (function (PAGES) { PAGES["FIRST"] = "FIRST_PAGE"; PAGES["SECOND"] = "SECOND_PAGE"; })(PAGES || (PAGES = {})); var mockSend = jest_mock_1.default.fn(); var blink = main_1.default({ send: mockSend, sendDirect: mockSend, persistState: function () { return null; }, utils: get_mock_utils_1.default, }); // FIRST PAGE INIT blink.pageInit({ url: 'http://some.site', pageView: PAGES.FIRST + "-pageview", pageId: PAGES.FIRST, referrer: 'www.sol.no', userId: 'xavier_no', site: 'www.kk.no', }); // SECOND PAGE INIT blink.pageInit({ url: 'http://other.site', pageView: PAGES.SECOND + "-pageview", pageId: PAGES.SECOND, referrer: 'www.sol.no', userId: 'xavier_no', site: 'www.kk.no', }); // FIRST PAGE BOX INSCREEN blink.boxScreenEnter({ id: 'box-1', pageId: PAGES.FIRST, time: new Date(500), }); // FIRST PAGE BOX INSCREEN blink.boxScreenEnter({ id: 'box-2', pageId: PAGES.SECOND, time: new Date(900), }); // We don't want anything to be sent at this point expect(mockSend.mock.calls.length).toBe(0); // FIRST PAGE BOX EXIT blink.boxScreenExit({ id: 'box-1', pageId: PAGES.FIRST, time: new Date(6000), }); expect(mockSend.mock.calls.length).toBe(1); // SECOND PAGE BOX EXIT blink.boxScreenExit({ id: 'box-2', pageId: PAGES.SECOND, time: new Date(10000), }); expect(mockSend.mock.calls.length).toBe(2); // Check first event var firstEvent = mockSend.mock.calls[0][0][0]; expect(firstEvent).toEqual({ userId: 'xavier_no', boxId: 'box-1', id: 'box-1', height: 0, inscreenTime: 5500, pageView: 'FIRST_PAGE-pageview', referrer: 'www.sol.no', site: 'www.kk.no', type: 'box', title: undefined, version: config_1.VERSION, width: 0, }); // Check second event var secondEvent = mockSend.mock.calls[1][0][0]; expect(secondEvent).toEqual({ userId: 'xavier_no', boxId: 'box-2', id: 'box-2', height: 0, inscreenTime: 9100, pageView: 'SECOND_PAGE-pageview', referrer: 'www.sol.no', site: 'www.kk.no', title: undefined, type: 'box', version: config_1.VERSION, width: 0, }); }); }); //# sourceMappingURL=box.test.js.map