Files
notifications-admin/tests/javascripts/analytics/init.test.js
Tom Byers 8a98c73b08 Make analytics send the same title for all pages
Sets it on the tracker which means this value gets
sent for each:
- pageview
- event

See: https://developers.google.com/analytics/devguides/collection/analyticsjs/pages

We can only test that this has been set on the
tracker, not how that effects what is sent to GA,
in the JS tests.

This change has been tested in-browser with the
Chrome Analytics Debugger. This revealed the
contents of what is in the beacon sent to GA and
allowed confirmation the title was being set
correctly.

See: https://chrome.google.com/webstore/detail/google-analytics-debugger/jnkmfdileelhofjcijamephohjechhna/related
2020-02-20 11:46:19 +00:00

124 lines
2.5 KiB
JavaScript

const helpers = require('../support/helpers');
beforeAll(() => {
// add the script GA looks for in the document
document.body.appendChild(document.createElement('script'));
require('../../../app/assets/javascripts/govuk/cookie-functions.js');
require('../../../app/assets/javascripts/analytics/analytics.js');
require('../../../app/assets/javascripts/analytics/init.js');
});
afterAll(() => {
require('../support/teardown.js');
});
describe("Analytics init", () => {
beforeAll(() => {
window.ga = jest.fn();
jest.spyOn(window.GOVUK.Analytics, 'load');
// pretend we're on the /privacy page
jest.spyOn(window, 'location', 'get').mockImplementation(() => {
return {
'pathname': '/privacy',
'search': ''
};
});
});
afterEach(() => {
window.GOVUK.Analytics.load.mockClear();
window.ga.mockClear();
});
test("After the init.js script has been loaded, Google Analytics will be disabled", () => {
expect(window['ga-disable-UA-75215134-1']).toBe(true);
});
describe("If initAnalytics has already been called", () => {
beforeAll(() => {
// Fake a tracker instance
window.GOVUK.analytics = {};
});
beforeEach(() => {
window.GOVUK.initAnalytics();
});
afterAll(() => {
delete window.GOVUK.analytics;
});
test("The Google Analytics libraries will not be loaded", () => {
expect(window.GOVUK.Analytics.load).not.toHaveBeenCalled();
});
});
describe("If initAnalytics has not been called", () => {
beforeEach(() => {
window.GOVUK.initAnalytics();
});
afterEach(() => {
// window.GOVUK.initAnalytics sets up a new window.GOVUK.analytics which needs clearing
delete window.GOVUK.analytics;
});
test("Google Analytics will not be disabled", () => {
expect(window['ga-disable-UA-75215134-1']).toBe(false);
});
test("The Google Analytics libraries will have been loaded", () => {
expect(window.GOVUK.Analytics.load).toHaveBeenCalled();
});
test("There will be an interface with the Google Analytics API", () => {
expect(window.GOVUK.analytics).toBeDefined();
});
test("A pageview will be registered", () => {
expect(window.ga.mock.calls.length).toEqual(6);
// The first 5 calls configure the analytics tracker. All subsequent calls send data
expect(window.ga.mock.calls[5]).toEqual(['send', 'pageview', '/privacy']);
});
});
});