/
gatsby-ssr.js
78 lines (66 loc) · 1.89 KB
/
gatsby-ssr.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import React from "react"
const { onRenderBody } = require(`../gatsby-ssr`)
it(`does not crash when no pluginConfig is provided`, () => {
const mocks = {
setHeadComponents: () => null,
setPostBodyComponents: () => null,
}
const pluginOptions = {
trackingIds: [`GA_TRACKING_ID`],
}
onRenderBody(mocks, pluginOptions)
})
const DO_NOT_TRACK_STRING = `!(navigator.doNotTrack == "1" || window.doNotTrack == "1")`
it(`adds a preconnect link for Google Analytics`, () => {
const mocks = {
setHeadComponents: jest.fn(),
setPostBodyComponents: jest.fn(),
}
const pluginOptions = {
trackingIds: [`GA_TRACKING_ID`],
pluginConfig: {},
}
onRenderBody(mocks, pluginOptions)
const [link] = mocks.setHeadComponents.mock.calls[0][0]
expect(link).toEqual(
<link
rel="preconnect dns-prefetch"
key="preconnect-google-analytics"
href="https://www.google-analytics.com"
/>
)
})
describe(`respectDNT`, () => {
it(`defaults respectDNT option to false`, () => {
const mocks = {
setHeadComponents: jest.fn(),
setPostBodyComponents: jest.fn(),
}
const pluginOptions = {
trackingIds: [`GA_TRACKING_ID`],
pluginConfig: {},
}
onRenderBody(mocks, pluginOptions)
const [, config] = mocks.setPostBodyComponents.mock.calls[0][0]
expect(config.props.dangerouslySetInnerHTML.__html).not.toContain(
DO_NOT_TRACK_STRING
)
})
it(`listens to respectDNT option`, () => {
const mocks = {
setHeadComponents: jest.fn(),
setPostBodyComponents: jest.fn(),
}
const pluginOptions = {
trackingIds: [`GA_TRACKING_ID`],
pluginConfig: {
respectDNT: true,
},
}
onRenderBody(mocks, pluginOptions)
const [, config] = mocks.setPostBodyComponents.mock.calls[0][0]
expect(config.props.dangerouslySetInnerHTML.__html).toContain(
DO_NOT_TRACK_STRING
)
})
})