@aller/blink
Version:
A library for tracking user behaviour.
100 lines (95 loc) • 2.76 kB
text/typescript
import prepareActiveTimeEvent from '../prepare-active-time-event';
import { VERSION } from '../../config/config';
import { BlinkEvent } from '../../types';
import { Page } from '../../selectors/get-page-state';
describe('prepareActiveTimeEvent', () => {
it('should format properly based on page state', () => {
const id = 'dagbladet.no/123';
const page: Page = {
id: 'default',
state: {
general: {
pageView: 'some-pageview-uuid',
site: 'www.dagbladet.no',
referrer: 'www.dinside.no',
pageScrollMaxOffsetY: 500,
pageScrollLatestOffsetY: 240,
},
activeTime: {
'dagbladet.no/123': {
id: 'dagbladet.no/123',
url: 'https://www.dagbladet.no/a/123',
activity: [
{
type: 'start',
time: new Date(6),
},
{ type: 'stop', time: new Date(10) },
],
},
},
screen: {
events: [],
},
},
};
const expected: BlinkEvent = {
type: 'activeTime',
pageView: 'some-pageview-uuid',
site: 'www.dagbladet.no',
referrer: 'www.dinside.no',
version: VERSION,
id: 'dagbladet.no/123',
article: {
url: 'https://www.dagbladet.no/a/123',
harvesterId: 'dagbladet.no/123',
},
activeTime: 4,
pageScrollLatestOffsetY: 240,
pageScrollMaxOffsetY: 500,
};
expect(prepareActiveTimeEvent({ id, page })).toEqual(expected);
});
it('should work even though it has no previous article preview', () => {
const id = 'dagbladet.no/123';
const page: Page = {
id: 'default-page',
state: {
general: {
pageView: 'some-pageview-uuid',
site: 'www.dagbladet.no',
referrer: 'www.dinside.no',
},
activeTime: {
'dagbladet.no/123': {
id: 'dagbladet.no/123',
url: 'https://www.dagbladet.no/a/123',
activity: [
{ type: 'start', time: new Date(6) },
{ type: 'stop', time: new Date(10) },
],
},
},
screen: {
events: [],
},
},
};
const expected: BlinkEvent = {
type: 'activeTime',
pageView: 'some-pageview-uuid',
site: 'www.dagbladet.no',
referrer: 'www.dinside.no',
version: VERSION,
id: 'dagbladet.no/123',
article: {
url: 'https://www.dagbladet.no/a/123',
harvesterId: 'dagbladet.no/123',
},
activeTime: 4,
pageScrollMaxOffsetY: 0,
pageScrollLatestOffsetY: 0,
};
expect(prepareActiveTimeEvent({ id, page })).toEqual(expected);
});
});