UNPKG

@aller/blink

Version:

A library for tracking user behaviour.

170 lines 7.02 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 get_mock_utils_1 = __importDefault(require("../mock/get-mock-utils")); var jest_mock_1 = __importDefault(require("jest-mock")); var PAGES; (function (PAGES) { PAGES["FIRST"] = "FIRST_PAGE"; PAGES["SECOND"] = "SECOND_PAGE"; })(PAGES || (PAGES = {})); describe('Ad impression 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 // Here we can attach the previous pageView, to track the chain of events blink.pageInit({ url: 'http://some.site', pageView: 'the-pageview-id', referrer: 'www.sol.no', userId: 'xavier_no', site: 'www.kk.no', }); blink.adScreenEnter({ id: 'ad-topbanner', time: new Date(3) }); // 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 pageLoad event, to set the general state blink.pageInit({ url: 'http://some.site', pageView: 'ad-pageview-id', referrer: 'www.sol.no', userId: 'xavier_no', site: 'www.kk.no', }); expect(mockSend.mock.calls.length).toBe(0); blink.adScreenEnter({ id: 'ad-banner-top', time: new Date(1000) }); // We don't want anything to be sent at this point expect(mockSend.mock.calls.length).toBe(0); blink.adScreenExit({ id: 'ad-banner-top', time: new Date(5000) }); expect(mockSend.mock.calls.length).toBe(1); var sentImpEvent = mockSend.mock.calls[0][0][0]; expect(sentImpEvent.userId).toBe('xavier_no'); expect(sentImpEvent.referrer).toBe('www.sol.no'); expect(sentImpEvent.pageView).toBe('ad-pageview-id'); expect(sentImpEvent.scroll.scrollHeight).toBe(2500); expect(sentImpEvent.inscreenTime).toBe(4000); expect(sentImpEvent.inscreenTime0).toBe(0); }); it('should send correct time for event with page hidden inbetween', 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 pageLoad event, to set the general state blink.pageInit({ url: 'http://some.site', pageView: 'ad-pageview-id', referrer: 'www.sol.no', userId: 'xavier_no', site: 'www.kk.no', }); expect(mockSend.mock.calls.length).toBe(0); blink.adScreenEnter({ id: 'ad-banner-top', time: new Date(1000) }); // We don't want anything to be sent at this point expect(mockSend.mock.calls.length).toBe(0); // Hide the page blink.screenHide(new Date(2000)); // Show the page again blink.screenShow(new Date(3500)); blink.adScreenExit({ id: 'ad-banner-top', time: new Date(5000) }); expect(mockSend.mock.calls.length).toBe(1); var sentImpEvent = mockSend.mock.calls[0][0][0]; expect(sentImpEvent.userId).toBe('xavier_no'); expect(sentImpEvent.referrer).toBe('www.sol.no'); expect(sentImpEvent.pageView).toBe('ad-pageview-id'); expect(sentImpEvent.scroll.scrollHeight).toBe(2500); expect(sentImpEvent.inscreenTime).toBe(2500); expect(sentImpEvent.inscreenTime0).toBe(0); }); it('should send two separate events for two separate pages', 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 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 AD ENTER blink.adScreenEnter({ id: 'ad-banner-top', pageId: PAGES.FIRST, time: new Date(1000), }); // SECOND PAGE AD ENTER blink.adScreenEnter({ id: 'ad-banner-top', pageId: PAGES.SECOND, time: new Date(1500), }); // We don't want anything to be sent at this point expect(mockSend.mock.calls.length).toBe(0); // FIRST PAGE AD EXIT blink.adScreenExit({ id: 'ad-banner-top', pageId: PAGES.FIRST, time: new Date(5000), }); expect(mockSend.mock.calls.length).toBe(1); // SECOND PAGE AD EXIT blink.adScreenExit({ id: 'ad-banner-top', pageId: PAGES.SECOND, time: new Date(7000), }); expect(mockSend.mock.calls.length).toBe(2); // Check first event var firstEvent = mockSend.mock.calls[0][0][0]; expect(firstEvent.userId).toBe('xavier_no'); expect(firstEvent.referrer).toBe('www.sol.no'); expect(firstEvent.pageView).toBe('FIRST_PAGE-pageview'); expect(firstEvent.inscreenTime).toBe(4000); expect(firstEvent.inscreenTime0).toBe(0); // Check first event var secondEvent = mockSend.mock.calls[1][0][0]; expect(secondEvent.userId).toBe('xavier_no'); expect(secondEvent.referrer).toBe('www.sol.no'); expect(secondEvent.pageView).toBe('SECOND_PAGE-pageview'); expect(secondEvent.inscreenTime).toBe(5500); expect(secondEvent.inscreenTime0).toBe(0); }); }); //# sourceMappingURL=ad-impression.test.js.map