141 lines
4.4 KiB
JavaScript
141 lines
4.4 KiB
JavaScript
/**
|
|
* @jest-environment jsdom
|
|
*/
|
|
|
|
import { onRenderBody } from '../gatsby-ssr'
|
|
|
|
describe('gatsby-plugin-matomo', () => {
|
|
describe('gatsby-ssr', () => {
|
|
describe('onRenderBody', () => {
|
|
describe('in non-production env', () => {
|
|
it('does not set tracking script', () => {
|
|
const setHeadComponents = jest.fn()
|
|
onRenderBody({ setHeadComponents })
|
|
expect(setHeadComponents).not.toHaveBeenCalled()
|
|
})
|
|
})
|
|
|
|
describe('in production env', () => {
|
|
let env
|
|
|
|
beforeAll(() => {
|
|
env = process.env.NODE_ENV
|
|
process.env.NODE_ENV = 'production'
|
|
})
|
|
|
|
afterAll(() => {
|
|
process.env.NODE_ENV = env
|
|
})
|
|
|
|
const setup = (options) => {
|
|
const setHeadComponents = jest.fn()
|
|
const setPostBodyComponents = jest.fn()
|
|
|
|
options = Object.assign(
|
|
{
|
|
siteId: 'TEST_SITE_ID',
|
|
matomoUrl: 'TEST_MATOMO_URL',
|
|
siteUrl: 'TEST_SITE_URL'
|
|
},
|
|
options
|
|
)
|
|
|
|
onRenderBody({ setHeadComponents, setPostBodyComponents }, options)
|
|
|
|
return {
|
|
setHeadComponents,
|
|
setPostBodyComponents
|
|
}
|
|
}
|
|
|
|
it('sets tracking script', () => {
|
|
const { setHeadComponents, setPostBodyComponents } = setup()
|
|
|
|
expect(setHeadComponents).toHaveBeenCalledTimes(1)
|
|
expect(setPostBodyComponents).toHaveBeenCalledTimes(1)
|
|
})
|
|
|
|
it('sets siteId', () => {
|
|
const { setPostBodyComponents } = setup()
|
|
const result = JSON.stringify(setPostBodyComponents.mock.calls[0][0])
|
|
expect(result).toMatch(/TEST_SITE_ID/)
|
|
})
|
|
|
|
it('sets matomoUrl', () => {
|
|
const { setPostBodyComponents } = setup()
|
|
const result = JSON.stringify(setPostBodyComponents.mock.calls[0][0])
|
|
expect(result).toMatch(/TEST_MATOMO_URL/)
|
|
})
|
|
|
|
it('sets siteUrl', () => {
|
|
const { setPostBodyComponents } = setup()
|
|
const result = JSON.stringify(setPostBodyComponents.mock.calls[0][0])
|
|
expect(result).toMatch(/TEST_SITE_URL/)
|
|
})
|
|
|
|
it('sets requireConsent', () => {
|
|
const { setPostBodyComponents } = setup({
|
|
requireConsent: true
|
|
})
|
|
const result = JSON.stringify(setPostBodyComponents.mock.calls[0][0])
|
|
expect(result).toMatch(/requireConsent/)
|
|
})
|
|
|
|
it('sets requireCookieConsent', () => {
|
|
const { setPostBodyComponents } = setup({
|
|
requireCookieConsent: true
|
|
})
|
|
const result = JSON.stringify(setPostBodyComponents.mock.calls[0][0])
|
|
expect(result).toMatch(/requireCookieConsent/)
|
|
})
|
|
|
|
it('sets disableCookies', () => {
|
|
const { setPostBodyComponents } = setup({
|
|
disableCookies: true
|
|
})
|
|
const result = JSON.stringify(setPostBodyComponents.mock.calls[0][0])
|
|
expect(result).toMatch(/disableCookies/)
|
|
})
|
|
|
|
it('sets enableJSErrorTracking', () => {
|
|
const { setPostBodyComponents } = setup({
|
|
enableJSErrorTracking: true
|
|
})
|
|
const result = JSON.stringify(setPostBodyComponents.mock.calls[0][0])
|
|
expect(result).toMatch(/enableJSErrorTracking/)
|
|
})
|
|
|
|
it('sets localScript', () => {
|
|
const { setPostBodyComponents } = setup({
|
|
localScript: 'TEST_LOCAL_SCRIPT'
|
|
})
|
|
const result = JSON.stringify(setPostBodyComponents.mock.calls[0][0])
|
|
expect(result).toMatch(/TEST_LOCAL_SCRIPT/)
|
|
})
|
|
|
|
it('sets respectDnt to false', () => {
|
|
const { setPostBodyComponents } = setup({
|
|
respectDnt: false
|
|
})
|
|
const result = JSON.stringify(setPostBodyComponents.mock.calls[0][0])
|
|
expect(result).not.toMatch(/navigator.doNotTrack/)
|
|
})
|
|
|
|
it('sets additionalTrackers', () => {
|
|
const { setPostBodyComponents } = setup({
|
|
additionalTrackers: [
|
|
{
|
|
siteId: 'TEST_ADDITIONAL_SITE_ID',
|
|
trackerUrl: 'TEST_ADDITIONAL_TRACKER_URL'
|
|
}
|
|
]
|
|
})
|
|
const result = JSON.stringify(setPostBodyComponents.mock.calls[0][0])
|
|
expect(result).toMatch(/TEST_ADDITIONAL_SITE_ID/)
|
|
expect(result).toMatch(/TEST_ADDITIONAL_TRACKER_URL/)
|
|
})
|
|
})
|
|
})
|
|
})
|
|
})
|