UNPKG

office-ui-fabric-react

Version:

Reusable React components for building experiences for Office 365.

42 lines 1.74 kB
import { shallow } from 'enzyme'; /** * An extention of enzyme's shallow function which will fail to work * with decorated components and/or components using the styled() function. * This function allows you to pass a 'target' component (e.g. ComponentBase) * and keep running shallow on each child component till a match is found. * * @public */ export function shallowUntilTarget(componentInstance, TargetComponent, options) { if (options === void 0) { options = { maxTries: 10, shallowOptions: {} }; } var maxTries = options.maxTries, shallowOptions = options.shallowOptions; var root = shallow(componentInstance, shallowOptions); if (typeof root.type() === 'string' || root .type() .toString() .includes(TargetComponent)) { // Default shallow() // If type() is a string then it's a DOM Node. // If it were wrapped, it would be a React component. return root; } for (var tries = 1; tries <= maxTries; tries++) { // Check for target as a string to avoid conflicts // with decoratored components name if (root .type() .toString() .includes(TargetComponent)) { // Now that we found the target component, render it. return root.first().shallow(shallowOptions); } // Unwrap the next component in the hierarchy. root = root.first().shallow(shallowOptions); } throw new Error("Could not find " + TargetComponent + " in React instance: " + componentInstance + ";\n gave up after " + maxTries + " tries"); } //# sourceMappingURL=shallowUntilTarget.js.map