You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
3.0 KiB
74 lines
3.0 KiB
"use strict"; |
|
|
|
Object.defineProperty(exports, "__esModule", { |
|
value: true |
|
}); |
|
exports.TEXT_NODE = void 0; |
|
exports.checkContainerType = checkContainerType; |
|
exports.getDocument = getDocument; |
|
exports.getWindowFromNode = getWindowFromNode; |
|
exports.jestFakeTimersAreEnabled = jestFakeTimersAreEnabled; |
|
// Constant node.nodeType for text nodes, see: |
|
// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType#Node_type_constants |
|
const TEXT_NODE = 3; |
|
exports.TEXT_NODE = TEXT_NODE; |
|
|
|
function jestFakeTimersAreEnabled() { |
|
/* istanbul ignore else */ |
|
if (typeof jest !== 'undefined' && jest !== null) { |
|
return (// legacy timers |
|
setTimeout._isMockFunction === true || // modern timers |
|
Object.prototype.hasOwnProperty.call(setTimeout, 'clock') |
|
); |
|
} // istanbul ignore next |
|
|
|
|
|
return false; |
|
} |
|
|
|
function getDocument() { |
|
/* istanbul ignore if */ |
|
if (typeof window === 'undefined') { |
|
throw new Error('Could not find default container'); |
|
} |
|
|
|
return window.document; |
|
} |
|
|
|
function getWindowFromNode(node) { |
|
if (node.defaultView) { |
|
// node is document |
|
return node.defaultView; |
|
} else if (node.ownerDocument && node.ownerDocument.defaultView) { |
|
// node is a DOM node |
|
return node.ownerDocument.defaultView; |
|
} else if (node.window) { |
|
// node is window |
|
return node.window; |
|
} else if (node.ownerDocument && node.ownerDocument.defaultView === null) { |
|
throw new Error(`It looks like the window object is not available for the provided node.`); |
|
} else if (node.then instanceof Function) { |
|
throw new Error(`It looks like you passed a Promise object instead of a DOM node. Did you do something like \`fireEvent.click(screen.findBy...\` when you meant to use a \`getBy\` query \`fireEvent.click(screen.getBy...\`, or await the findBy query \`fireEvent.click(await screen.findBy...\`?`); |
|
} else if (Array.isArray(node)) { |
|
throw new Error(`It looks like you passed an Array instead of a DOM node. Did you do something like \`fireEvent.click(screen.getAllBy...\` when you meant to use a \`getBy\` query \`fireEvent.click(screen.getBy...\`?`); |
|
} else if (typeof node.debug === 'function' && typeof node.logTestingPlaygroundURL === 'function') { |
|
throw new Error(`It looks like you passed a \`screen\` object. Did you do something like \`fireEvent.click(screen, ...\` when you meant to use a query, e.g. \`fireEvent.click(screen.getBy..., \`?`); |
|
} else { |
|
// The user passed something unusual to a calling function |
|
throw new Error(`The given node is not an Element, the node type is: ${typeof node}.`); |
|
} |
|
} |
|
|
|
function checkContainerType(container) { |
|
if (!container || !(typeof container.querySelector === 'function') || !(typeof container.querySelectorAll === 'function')) { |
|
throw new TypeError(`Expected container to be an Element, a Document or a DocumentFragment but got ${getTypeName(container)}.`); |
|
} |
|
|
|
function getTypeName(object) { |
|
if (typeof object === 'object') { |
|
return object === null ? 'null' : object.constructor.name; |
|
} |
|
|
|
return typeof object; |
|
} |
|
} |