@aller/blink
Version:
A library for tracking user behaviour.
333 lines • 12.1 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 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