@aller/blink
Version:
A library for tracking user behaviour.
153 lines (141 loc) • 4.3 kB
text/typescript
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,
});
});
});
});