UNPKG

@aller/blink

Version:

A library for tracking user behaviour.

286 lines (263 loc) 7.8 kB
import createBlink from '../main'; import { VERSION } from '../config/config'; import jest from 'jest-mock'; describe('PageLoad intregration test', () => { it('should send a single pageLoad event', () => { const mockSend = jest.fn(); const blink = createBlink({ send: mockSend, sendDirect: mockSend, }); blink.pageInit({ url: 'https://www.dagbladet.no/a/2313', pageType: '', pageView: 'new-pageview', previousPageView: 'prev-pv', referrer: 'www.sol.no', abCookie: 102, commercialSegments: 'sport,soccer,gardening', site: 'www.kk.no', }); blink.pageLoad({ url: 'https://www.dagbladet.no/a/2313', plussData: { hasAccess: true, customerNumber: '442' }, clientHeight: 800, clientWidth: 600, scrollHeight: 1800, }); expect(mockSend.mock.calls[0][0]).toEqual([ { id: 'dagbladet.no/2313', type: 'pageLoad', abCookie: 102, commercialSegments: 'sport,soccer,gardening', article: { harvesterId: 'dagbladet.no/2313', url: 'https://www.dagbladet.no/a/2313', }, pageType: '', pageView: 'new-pageview', previousPageView: 'prev-pv', plussData: { hasAccess: true, customerNumber: '442', }, referrer: 'www.sol.no', site: 'www.kk.no', scroll: { scrollHeight: 1800, }, version: VERSION, clientWidth: 600, clientHeight: 800, }, ]); }); it('should update the pageview, and flush the store', () => { const mockSend = jest.fn(); const blink = createBlink({ send: mockSend, sendDirect: mockSend, }); blink.pageInit({ url: 'https://www.dagbladet.no/a/2313', pageView: 'first-pageview', referrer: 'www.sol.no', site: 'www.dagbladet.no', }); blink.pageLoad({ url: 'https://www.dagbladet.no/a/2313', clientHeight: 550, clientWidth: 240, scrollHeight: 9001, plussData: { hasAccess: true, customerNumber: '442' }, }); // Do lots of events related to ads, activeTime and impressions blink.adScreenEnter({ id: 'top-banner', time: new Date(1) }); blink.pageActivityStart({ url: 'https://www.dagbladet.no/a/2313', pageScrollOffsetY: 340, time: new Date(2), }); blink.articlePreviewScreenEnter({ url: 'https://www.dinside.no/motor/kul-bil/49234', time: new Date(3), title: 'Kul bil', }); // Register a _new_ pageInit, mid session blink.pageInit({ url: 'https://www.dagbladet.no/a/2313', pageView: 'second-pageview', site: 'www.dagbladet.no', }); blink.pageLoad({ url: 'https://www.dagbladet.no/a/2313', plussData: { hasAccess: false, customerNumber: '', }, clientHeight: 550, clientWidth: 240, scrollHeight: 9001, }); const prevSentEvents = mockSend.mock.calls.length; // Send all events blink.sendAllEvents(new Date(10)); // Check that nothing is actually sent expect(mockSend.mock.calls.length).toBe(prevSentEvents); }); it('should create a new pageView for each pageInit, and update previous pageview', () => { const mockSend = jest.fn(); const blink = createBlink({ send: mockSend, sendDirect: mockSend, }); blink.pageInit({ url: 'https://www.dagbladet.no/', referrer: 'www.sol.no', site: 'www.dagbladet.no', }); const frontPage1 = blink.getPage({ url: 'https://www.dagbladet.no/' }); expect(frontPage1.pageView.length).toBe(36); blink.pageInit({ url: 'https://www.dagbladet.no/a/2313', referrer: 'https://www.dagbladet.no/', site: 'www.dagbladet.no', }); const articlePage = blink.getPage({ url: 'https://www.dagbladet.no/a/2313', }); expect(articlePage.pageView.length).toBe(36); expect(articlePage.pageView).not.toEqual(frontPage1.pageView); expect(articlePage.previousPageView).toEqual(frontPage1.pageView); blink.pageInit({ url: 'https://www.dagbladet.no/', referrer: 'https://www.dagbladet.no/a/2313', site: 'www.dagbladet.no', }); const frontPage2 = blink.getPage({ url: 'https://www.dagbladet.no/' }); expect(frontPage2.pageView.length).toBe(36); expect(frontPage2.pageView).not.toEqual(articlePage.pageView); expect(frontPage2.pageView).not.toEqual(frontPage1.pageView); expect(frontPage2.previousPageView).toEqual(articlePage.pageView); }); it('should send a separate pageLoad events for two separate pages', () => { enum PAGES { FIRST = 'FIRST_PAGE', SECOND = 'SECOND_PAGE', } const mockSend = jest.fn(); const blink = createBlink({ send: mockSend, sendDirect: mockSend, }); // Init first page blink.pageInit({ pageId: PAGES.FIRST, url: 'https://www.dagbladet.no/a/2313', pageType: '', pageView: `${PAGES.FIRST}-pageview`, previousPageView: 'prev-pv', referrer: 'www.sol.no', abCookie: 1, commercialSegments: 'sport,soccer,gardening', site: 'www.kk.no', }); // Second page blink.pageInit({ pageId: PAGES.SECOND, url: 'https://www.kk.no/a/123', pageType: '', pageView: `${PAGES.SECOND}-pageview`, previousPageView: 'prev-pv', referrer: 'www.kk.no', abCookie: 2, commercialSegments: 'sport,soccer,gardening', site: 'www.kk.no', }); // Load first page blink.pageLoad({ pageId: PAGES.FIRST, url: 'https://www.dagbladet.no/a/2313', clientHeight: 550, clientWidth: 240, scrollHeight: 9001, plussData: { hasAccess: true, customerNumber: '442', }, }); // Load second page blink.pageLoad({ pageId: PAGES.SECOND, url: 'https://www.kk.no/a/123', clientHeight: 550, clientWidth: 240, scrollHeight: 9001, plussData: { hasAccess: false, customerNumber: '1234032042', }, }); expect(mockSend.mock.calls).toEqual([ [ [ { id: 'dagbladet.no/2313', type: 'pageLoad', abCookie: 1, commercialSegments: 'sport,soccer,gardening', article: { harvesterId: 'dagbladet.no/2313', url: 'https://www.dagbladet.no/a/2313', }, pageType: '', pageView: `${PAGES.FIRST}-pageview`, previousPageView: 'prev-pv', plussData: { hasAccess: true, customerNumber: '442', }, referrer: 'www.sol.no', site: 'www.kk.no', scroll: { scrollHeight: 9001, }, version: VERSION, clientWidth: 240, clientHeight: 550, }, ], ], [ [ { id: 'kk.no/123', type: 'pageLoad', abCookie: 2, commercialSegments: 'sport,soccer,gardening', article: { harvesterId: 'kk.no/123', url: 'https://www.kk.no/a/123', }, pageType: '', pageView: `${PAGES.SECOND}-pageview`, previousPageView: 'prev-pv', plussData: { hasAccess: false, customerNumber: '1234032042', }, referrer: 'www.kk.no', site: 'www.kk.no', scroll: { scrollHeight: 9001, }, version: VERSION, clientWidth: 240, clientHeight: 550, }, ], ], ]); }); });