@aller/blink
Version:
A library for tracking user behaviour.
170 lines • 7.02 kB
JavaScript
"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