@aller/blink
Version:
A library for tracking user behaviour.
147 lines (131 loc) • 3.61 kB
text/typescript
import createBlink from '../main';
import { VERSION } from '../config/config';
import jest from 'jest-mock';
describe('Send all intregration test', () => {
it('should send all ad, activeTime, impression and video events', () => {
const mockSend = jest.fn();
const mockSendDirect = jest.fn();
const blink = createBlink({
send: mockSend,
sendDirect: mockSendDirect,
});
// First send of a pageLoad event, to set the general state
blink.pageInit({
url: 'http://some.site',
pageView: 'the-pageview-id',
referrer: 'www.sol.no',
site: 'www.kk.no',
});
blink.click({ url: 'https://www.dagbladet.no/a/2313' });
blink.adScreenEnter({ id: 'top-banner', time: new Date(1) });
blink.pageActivityStart({
url: 'https://www.dagbladet.no/a/2313',
pageScrollOffsetY: 840,
time: new Date(2),
});
blink.playerShown({
playerId: '111',
muted: true,
position: 0,
reason: 'viewable',
time: new Date(2),
volume: 30,
});
blink.videoPlay({
videoId: 'video-123',
playerId: '111',
muted: true,
position: 0,
reason: 'autostart',
time: new Date(4),
volume: 30,
});
blink.playerHidden({
playerId: '111',
muted: true,
position: 20,
reason: 'tabclose',
time: new Date(5),
volume: 30,
});
// Trigger the sending
blink.sendAllEvents(new Date(5));
// We check the last thing sent, that should contain all events
const lastCall =
mockSendDirect.mock.calls[mockSendDirect.mock.calls.length - 1][0];
expect(lastCall.length).toBe(3);
expect(lastCall.filter((ev: any) => ev.id === 'top-banner')[0]).toEqual({
id: 'top-banner',
adId: 'top-banner',
pageView: 'the-pageview-id',
site: 'www.kk.no',
type: 'ads',
version: VERSION,
dfp: {
adUnitPath: 'N/A',
advertiserId: 0,
campaignId: 0,
creativeId: 0,
inscreen: 0,
lineItemId: 0,
name: 'N/A',
size: [0],
loaded: 0,
rendered: 0,
sourceAgnosticCreativeId: 0,
sourceAgnosticLineItemId: 0,
bidder: null,
prebidWinningBid: '',
},
inscreenTime: 4,
inscreenTime0: 0,
referrer: 'www.sol.no',
scroll: {
offsetHeight: 0,
offsetTop: 0,
pos: {
adLoad: 0,
inscreenDFP: 0,
slotOnload: 0,
slotRenderEnded: 0,
},
},
});
expect(
lastCall.filter((ev: any) => ev.id === 'dagbladet.no/2313')[0],
).toEqual({
activeTime: 3,
id: 'dagbladet.no/2313',
type: 'activeTime',
pageView: 'the-pageview-id',
referrer: 'www.sol.no',
site: 'www.kk.no',
version: VERSION,
article: {
harvesterId: 'dagbladet.no/2313',
url: 'https://www.dagbladet.no/a/2313',
},
pageScrollMaxOffsetY: 840,
pageScrollLatestOffsetY: 840,
});
expect(lastCall.filter((ev: any) => ev.id === 'video-123')[0]).toEqual({
id: 'video-123',
videoId: 'video-123',
type: 'videoWatch',
activeTime: 1,
pageView: 'the-pageview-id',
referrer: 'www.sol.no',
site: 'www.kk.no',
version: VERSION,
videoPlayMuted: true,
videoPlayPosition: 0,
videoPlayReason: 'autostart',
videoPlayVolume: 30,
videoStopMuted: true,
videoStopPosition: 20,
videoStopReason: 'tabclose',
videoStopVolume: 30,
videoSticky: false,
});
});
});