mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-06 03:13:42 -05:00
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.
54 lines
1.5 KiB
JavaScript
54 lines
1.5 KiB
JavaScript
// Polyfills for any parts of the DOM API available in browsers but not JSDOM
|
|
|
|
// From: https://gist.github.com/eligrey/1276030
|
|
HTMLElement.prototype.insertAdjacentHTML = function(position, html) {
|
|
"use strict";
|
|
|
|
var
|
|
ref = this
|
|
, container = ref.ownerDocument.createElementNS("http://www.w3.org/1999/xhtml", "_")
|
|
, ref_parent = ref.parentNode
|
|
, node, first_child, next_sibling
|
|
;
|
|
|
|
container.innerHTML = html;
|
|
|
|
switch (position.toLowerCase()) {
|
|
case "beforebegin":
|
|
while ((node = container.firstChild)) {
|
|
ref_parent.insertBefore(node, ref);
|
|
}
|
|
break;
|
|
case "afterbegin":
|
|
first_child = ref.firstChild;
|
|
while ((node = container.lastChild)) {
|
|
first_child = ref.insertBefore(node, first_child);
|
|
}
|
|
break;
|
|
case "beforeend":
|
|
while ((node = container.firstChild)) {
|
|
ref.appendChild(node);
|
|
}
|
|
break;
|
|
case "afterend":
|
|
next_sibling = ref.nextSibling;
|
|
while ((node = container.lastChild)) {
|
|
next_sibling = ref_parent.insertBefore(node, next_sibling);
|
|
}
|
|
break;
|
|
}
|
|
|
|
};
|
|
|
|
// from: https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentText#Polyfill
|
|
if (!Element.prototype.insertAdjacentText) {
|
|
Element.prototype.insertAdjacentText = function(type, txt){
|
|
this.insertAdjacentHTML(
|
|
type,
|
|
(txt+'') // convert to string
|
|
.replace(/&/g, '&') // embed ampersand symbols
|
|
.replace(/</g, '<') // embed less-than symbols
|
|
)
|
|
}
|
|
}
|