Files
notifications-admin/tests/javascripts/consent.test.js
Tom Byers 9a0d522964 Add JS tests for analytics & cookies JS
Includes:
- tests for the analytics interface ported from
  GOVUK Frontend Toolkit
- tests for the cookie banner that appears on all
  pages except the cookies page
- tests for the cookies page JS
- tests for the hasConsentFor function
- adding a deleteCookie helper to remove
  cookies during tests
- polyfill for insertAdjacentText

The last one is because JSDOM doesn't support
insertAdjacentText but our target browsers
do. This polyfill also includes one for
insertAdjacentHTML.
2020-01-20 10:03:36 +00:00

56 lines
1.1 KiB
JavaScript

const helpers = require('./support/helpers');
beforeAll(() => {
require('../../app/assets/javascripts/govuk/cookie-functions.js');
require('../../app/assets/javascripts/consent.js');
});
afterAll(() => {
require('./support/teardown.js');
});
describe("Cookie consent", () => {
describe("hasConsentFor", () => {
afterEach(() => {
// remove cookie set by tests
helpers.deleteCookie('cookies_policy');
});
test("If there is no consent cookie, return false", () => {
expect(window.GOVUK.hasConsentFor('analytics')).toBe(false);
});
describe("If a consent cookie is set", () => {
test("If the category is not saved in the cookie, return false", () => {
window.GOVUK.setConsentCookie({ 'usage': true });
expect(window.GOVUK.hasConsentFor('analytics')).toBe(false);
});
test("If the category is saved in the cookie, return its value", () => {
window.GOVUK.setConsentCookie({ 'analytics': true });
expect(window.GOVUK.hasConsentFor('analytics')).toBe(true);
});
});
});
});