UNPKG

@aller/blink

Version:

A library for tracking user behaviour.

153 lines (141 loc) 4.3 kB
import generalReducer from '../general'; import { PAGE_INIT, PAGE_LOAD, ARTICLE_ACTIVITY_START, PERFORMANCE, } from '../../actions'; import { VERSION } from '../../config/config'; describe('general reducer', () => { describe('PAGE_INIT', () => { it('should set general values', () => { const action = { type: PAGE_INIT, payload: { url: 'http://www.dagbladet.no/', pageType: 'fb instant article', pageView: 'some-pageview-uuid', previousPageView: 'prev-pageview-uuid', referrer: 'sol.no', abCookie: 34, commercialSegments: 'sport,soccer,gardening', site: 'test-site', }, }; expect(generalReducer({}, action)).toEqual({ pageType: 'fb instant article', pageView: 'some-pageview-uuid', previousPageView: 'prev-pageview-uuid', site: 'test-site', abCookie: 34, commercialSegments: 'sport,soccer,gardening', referrer: 'sol.no', url: 'http://www.dagbladet.no/', version: VERSION, }); }); it('should fallback to setting current pageView as previous', () => { const previousState = { pageView: 'first-pageview', previousPageView: undefined, }; const action = { type: PAGE_INIT, payload: { url: 'http://www.dagbladet.no/', pageType: '', pageView: 'second-pageview', referrer: 'sol.no', abCookie: 34, commercialSegments: 'sport,soccer,gardening', site: 'test-site', }, }; expect(generalReducer(previousState, action)).toEqual({ pageType: '', pageView: 'second-pageview', previousPageView: 'first-pageview', site: 'test-site', abCookie: 34, commercialSegments: 'sport,soccer,gardening', referrer: 'sol.no', url: 'http://www.dagbladet.no/', version: VERSION, }); }); }); describe('PAGE_LOAD', () => { it('should set plussData', () => { const action = { type: PAGE_LOAD, payload: { url: 'http://www.dagbladet.no/', plussData: { hasAccess: true, customerNumber: '443' }, }, }; expect(generalReducer({}, action)).toEqual({ plussData: { hasAccess: true, customerNumber: '443' }, }); }); }); describe('ARTICLE_ACTIVITY_START', () => { it('should set pageScrollMaxOffsetY and pageScrollLatestOffsetY to zero for no payload', () => { const action = { type: ARTICLE_ACTIVITY_START, payload: {}, }; expect(generalReducer({}, action)).toEqual({ pageScrollMaxOffsetY: 0, pageScrollLatestOffsetY: 0, }); }); it('should set pageScrollMaxOffsetY and pageScrollLatestOffsetY when empty', () => { const action = { type: ARTICLE_ACTIVITY_START, payload: { pageScrollOffsetY: 900, }, }; expect(generalReducer({}, action)).toEqual({ pageScrollMaxOffsetY: 900, pageScrollLatestOffsetY: 900, }); }); it('should set pageScrollMaxOffsetY and pageScrollLatestOffsetY in existing state, override max if larger', () => { const previousState = { pageView: 'pv', pageScrollMaxOffsetY: 300, pageScrollLatestOffsetY: 150, }; const action = { type: ARTICLE_ACTIVITY_START, payload: { pageScrollOffsetY: 301, }, }; expect(generalReducer(previousState, action)).toEqual({ pageView: 'pv', pageScrollMaxOffsetY: 301, pageScrollLatestOffsetY: 301, }); }); it('should set pageScrollMaxOffsetY and pageScrollLatestOffsetY in existing state, override max if larger', () => { const previousState = { pageView: 'pv', pageScrollMaxOffsetY: 500, pageScrollLatestOffsetY: 500, }; const action = { type: ARTICLE_ACTIVITY_START, payload: { pageScrollOffsetY: 499, }, }; expect(generalReducer(previousState, action)).toEqual({ pageView: 'pv', pageScrollMaxOffsetY: 500, pageScrollLatestOffsetY: 499, }); }); }); });