UNPKG

5.58 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
5var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports.default = createMount;
11
12var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
14var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
16var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
18var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
20var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
22var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
24var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
26var React = _interopRequireWildcard(require("react"));
27
28var ReactDOM = _interopRequireWildcard(require("react-dom"));
29
30var PropTypes = _interopRequireWildcard(require("prop-types"));
31
32var _enzyme = require("enzyme");
33
34function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
35
36function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
37
38/**
39 * Can't just mount <React.Fragment>{node}</React.Fragment>
40 * because that swallows wrapper.setProps
41 *
42 * why class component:
43 * https://github.com/airbnb/enzyme/issues/2043
44 */
45// eslint-disable-next-line react/prefer-stateless-function
46var Mode = /*#__PURE__*/function (_React$Component) {
47 (0, _inherits2.default)(Mode, _React$Component);
48
49 var _super = _createSuper(Mode);
50
51 function Mode() {
52 (0, _classCallCheck2.default)(this, Mode);
53 return _super.apply(this, arguments);
54 }
55
56 (0, _createClass2.default)(Mode, [{
57 key: "render",
58 value: function render() {
59 // Excess props will come from e.g. enzyme setProps
60 var _this$props = this.props,
61 __element = _this$props.__element,
62 __strict = _this$props.__strict,
63 other = (0, _objectWithoutProperties2.default)(_this$props, ["__element", "__strict"]);
64 var Component = __strict ? React.StrictMode : React.Fragment;
65 return /*#__PURE__*/React.createElement(Component, null, /*#__PURE__*/React.cloneElement(__element, other));
66 }
67 }]);
68 return Mode;
69}(React.Component);
70
71process.env.NODE_ENV !== "production" ? Mode.propTypes = {
72 /**
73 * this is essentially children. However we can't use children because then
74 * using `wrapper.setProps({ children })` would work differently if this component
75 * would be the root.
76 */
77 __element: PropTypes.element.isRequired,
78 __strict: PropTypes.bool.isRequired
79} : void 0;
80var warnedOnce = false; // Generate an enhanced mount function.
81
82function createMount() {
83 var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
84
85 if (!warnedOnce) {
86 warnedOnce = true;
87 console.warn(['Material-UI: the test utils are deprecated, they are no longer present in v5.', 'The helpers were designed to work with enzyme.', 'However, the tests of the core components were moved to react-testing-library.'].join('\n'));
88 }
89
90 var _options$mount = options.mount,
91 mount = _options$mount === void 0 ? _enzyme.mount : _options$mount,
92 globalStrict = options.strict,
93 globalEnzymeOptions = (0, _objectWithoutProperties2.default)(options, ["mount", "strict"]);
94 var attachTo = document.createElement('div');
95 attachTo.className = 'app';
96 attachTo.setAttribute('id', 'app');
97 document.body.insertBefore(attachTo, document.body.firstChild);
98
99 var mountWithContext = function mountWithContext(node) {
100 var localOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
101 var _localOptions$disable = localOptions.disableUnnmount,
102 disableUnnmount = _localOptions$disable === void 0 ? false : _localOptions$disable,
103 _localOptions$strict = localOptions.strict,
104 strict = _localOptions$strict === void 0 ? globalStrict : _localOptions$strict,
105 localEnzymeOptions = (0, _objectWithoutProperties2.default)(localOptions, ["disableUnnmount", "strict"]);
106
107 if (!disableUnnmount) {
108 ReactDOM.unmountComponentAtNode(attachTo);
109 } // some tests require that no other components are in the tree
110 // e.g. when doing .instance(), .state() etc.
111
112
113 return mount(strict == null ? node : /*#__PURE__*/React.createElement(Mode, {
114 __element: node,
115 __strict: Boolean(strict)
116 }), (0, _extends2.default)({
117 attachTo: attachTo
118 }, globalEnzymeOptions, localEnzymeOptions));
119 };
120
121 mountWithContext.attachTo = attachTo;
122
123 mountWithContext.cleanUp = function () {
124 ReactDOM.unmountComponentAtNode(attachTo);
125 attachTo.parentElement.removeChild(attachTo);
126 };
127
128 return mountWithContext;
129}
\No newline at end of file