UNPKG

@defra-fish/gafl-webapp-service

Version:

The websales frontend for the GAFL service

75 lines (64 loc) 2.65 kB
import { ANALYTICS } from '../../constants.js' import { CacheError } from '../../session-cache/cache-manager.js' import { trackAnalyticsAccepted, pageOmitted } from '../analytics-handler.js' jest.mock('../../constants', () => ({ ANALYTICS: { selected: 'chosen-one', acceptTracking: 'you-may-watch-me', seenMessage: 'seen-it', pageSkipped: 'ignored-page' } })) describe('trackAnalyticsAccepted', () => { beforeEach(() => { jest.clearAllMocks() }) it.each` desc | analytics | page | trackingResult ${'of accept tracking as true, page should not be skipped then return trackAnalyticsAccepted as true'} | ${{ [ANALYTICS.acceptTracking]: true }} | ${false} | ${true} ${'of accept tracking as true, page should be skipped then return trackAnalyticsAccepted as false'} | ${{ [ANALYTICS.acceptTracking]: true, [ANALYTICS.pageAnalyticsOmitted]: true }} | ${true} | ${false} ${'but accept tracking is false so return trackAnalyticsAccepted as false'} | ${{ [ANALYTICS.acceptTracking]: false }} | ${false} | ${false} `('when analytics has a value $desc', async ({ analytics, page, trackingResult }) => { const result = await trackAnalyticsAccepted(generateRequestMock(analytics), page) expect(result).toBe(trackingResult) }) it('empty session cache returns false', async () => { const result = await trackAnalyticsAccepted( generateRequestMock(() => { throw new CacheError() }) ) expect(result).toEqual(false) }) }) describe('pageOmitted', () => { beforeEach(() => { jest.clearAllMocks() }) it.each([ [true, true], [false, false] ])('when analytics omitPageFromAnalytics property is %s, pageAnalyticsOmitted returns %s', async (skipPage, expected) => { const analytics = { [ANALYTICS.omitPageFromAnalytics]: skipPage } const result = await pageOmitted(generateRequestMock(analytics)) expect(result).toBe(expected) }) it('empty session cache returns false', async () => { const result = await pageOmitted( generateRequestMock(() => { throw new CacheError() }) ) expect(result).toEqual(false) }) }) const generateRequestMock = (analytics, getId = () => {}) => ({ cache: jest.fn(() => ({ getId: jest.fn(getId), helpers: { analytics: { get: jest.fn(() => analytics) } } })) })