1 | 'use strict';
|
2 |
|
3 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
4 |
|
5 | var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 | var _object = require('object.assign');
|
12 |
|
13 | var _object2 = _interopRequireDefault(_object);
|
14 |
|
15 | var _react = require('react');
|
16 |
|
17 | var _react2 = _interopRequireDefault(_react);
|
18 |
|
19 | var _reactDom = require('react-dom');
|
20 |
|
21 | var _reactDom2 = _interopRequireDefault(_reactDom);
|
22 |
|
23 | var _server = require('react-dom/server');
|
24 |
|
25 | var _server2 = _interopRequireDefault(_server);
|
26 |
|
27 | var _reactAddonsTestUtils = require('react-addons-test-utils');
|
28 |
|
29 | var _reactAddonsTestUtils2 = _interopRequireDefault(_reactAddonsTestUtils);
|
30 |
|
31 | var _object3 = require('object.values');
|
32 |
|
33 | var _object4 = _interopRequireDefault(_object3);
|
34 |
|
35 | var _reactIs = require('react-is');
|
36 |
|
37 | var _enzyme = require('enzyme');
|
38 |
|
39 | var _enzymeAdapterUtils = require('enzyme-adapter-utils');
|
40 |
|
41 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
42 |
|
43 | function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
|
44 |
|
45 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
46 |
|
47 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
48 |
|
49 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
50 |
|
51 | function typeToNodeType(type) {
|
52 | if (typeof type === 'function') {
|
53 | if (type.prototype && typeof type.prototype.render === 'function') {
|
54 | return 'class';
|
55 | }
|
56 | return 'function';
|
57 | }
|
58 | return 'host';
|
59 | }
|
60 |
|
61 | function instanceToTree(inst) {
|
62 | if (!inst || (typeof inst === 'undefined' ? 'undefined' : _typeof(inst)) !== 'object') {
|
63 | return inst;
|
64 | }
|
65 | var el = inst._currentElement;
|
66 | if (!el) {
|
67 | return null;
|
68 | }
|
69 | if ((typeof el === 'undefined' ? 'undefined' : _typeof(el)) !== 'object') {
|
70 | return el;
|
71 | }
|
72 | if (inst._tag) {
|
73 | if ((typeof el === 'undefined' ? 'undefined' : _typeof(el)) !== 'object') {
|
74 | return el;
|
75 | }
|
76 | var children = inst._renderedChildren || { '.0': el.props.children };
|
77 | return {
|
78 | nodeType: 'host',
|
79 | type: el.type,
|
80 | props: el.props,
|
81 | key: (0, _enzymeAdapterUtils.ensureKeyOrUndefined)(el.key),
|
82 | ref: el.ref,
|
83 | instance: _reactDom2['default'].findDOMNode(inst.getPublicInstance()) || null,
|
84 | rendered: (0, _object4['default'])(children).map(instanceToTree)
|
85 | };
|
86 | }
|
87 | if (inst._renderedComponent) {
|
88 | return {
|
89 | nodeType: typeToNodeType(el.type),
|
90 | type: el.type,
|
91 | props: el.props,
|
92 | key: (0, _enzymeAdapterUtils.ensureKeyOrUndefined)(el.key),
|
93 | ref: el.ref,
|
94 | instance: inst._instance || null,
|
95 | rendered: instanceToTree(inst._renderedComponent)
|
96 | };
|
97 | }
|
98 | throw new Error('Enzyme Internal Error: unknown instance encountered');
|
99 | }
|
100 |
|
101 | var ReactFourteenAdapter = function (_EnzymeAdapter) {
|
102 | _inherits(ReactFourteenAdapter, _EnzymeAdapter);
|
103 |
|
104 | function ReactFourteenAdapter() {
|
105 | _classCallCheck(this, ReactFourteenAdapter);
|
106 |
|
107 | var _this = _possibleConstructorReturn(this, (ReactFourteenAdapter.__proto__ || Object.getPrototypeOf(ReactFourteenAdapter)).call(this));
|
108 |
|
109 | var lifecycles = _this.options.lifecycles;
|
110 |
|
111 | _this.options = (0, _object2['default'])({}, _this.options, {
|
112 | supportPrevContextArgumentOfComponentDidUpdate: true,
|
113 | lifecycles: (0, _object2['default'])({}, lifecycles, {
|
114 | componentDidUpdate: {
|
115 | prevContext: true
|
116 | }
|
117 | })
|
118 | });
|
119 | return _this;
|
120 | }
|
121 |
|
122 | _createClass(ReactFourteenAdapter, [{
|
123 | key: 'createMountRenderer',
|
124 | value: function () {
|
125 | function createMountRenderer(options) {
|
126 | (0, _enzymeAdapterUtils.assertDomAvailable)('mount');
|
127 | var domNode = options.attachTo || global.document.createElement('div');
|
128 | var instance = null;
|
129 | var adapter = this;
|
130 | return {
|
131 | render: function () {
|
132 | function render(el, context, callback) {
|
133 | if (instance === null) {
|
134 | var type = el.type,
|
135 | props = el.props,
|
136 | ref = el.ref;
|
137 |
|
138 | var wrapperProps = (0, _object2['default'])({
|
139 | Component: type,
|
140 | props: props,
|
141 | context: context
|
142 | }, ref && { ref: ref });
|
143 | var ReactWrapperComponent = (0, _enzymeAdapterUtils.createMountWrapper)(el, (0, _object2['default'])({}, options, { adapter: adapter }));
|
144 | var wrappedEl = _react2['default'].createElement(ReactWrapperComponent, wrapperProps);
|
145 | instance = _reactDom2['default'].render(wrappedEl, domNode);
|
146 | if (typeof callback === 'function') {
|
147 | callback();
|
148 | }
|
149 | } else {
|
150 | instance.setChildProps(el.props, context, callback);
|
151 | }
|
152 | }
|
153 |
|
154 | return render;
|
155 | }(),
|
156 | unmount: function () {
|
157 | function unmount() {
|
158 | _reactDom2['default'].unmountComponentAtNode(domNode);
|
159 | instance = null;
|
160 | }
|
161 |
|
162 | return unmount;
|
163 | }(),
|
164 | getNode: function () {
|
165 | function getNode() {
|
166 | return instance ? instanceToTree(instance._reactInternalInstance).rendered : null;
|
167 | }
|
168 |
|
169 | return getNode;
|
170 | }(),
|
171 | simulateEvent: function () {
|
172 | function simulateEvent(node, event, mock) {
|
173 | var mappedEvent = (0, _enzymeAdapterUtils.mapNativeEventNames)(event);
|
174 | var eventFn = _reactAddonsTestUtils2['default'].Simulate[mappedEvent];
|
175 | if (!eventFn) {
|
176 | throw new TypeError('ReactWrapper::simulate() event \'' + String(event) + '\' does not exist');
|
177 | }
|
178 |
|
179 | eventFn(_reactDom2['default'].findDOMNode(node.instance), mock);
|
180 | }
|
181 |
|
182 | return simulateEvent;
|
183 | }(),
|
184 | batchedUpdates: function () {
|
185 | function batchedUpdates(fn) {
|
186 | return _reactDom2['default'].unstable_batchedUpdates(fn);
|
187 | }
|
188 |
|
189 | return batchedUpdates;
|
190 | }()
|
191 | };
|
192 | }
|
193 |
|
194 | return createMountRenderer;
|
195 | }()
|
196 | }, {
|
197 | key: 'createShallowRenderer',
|
198 | value: function () {
|
199 | function createShallowRenderer() /* options */{
|
200 | var renderer = _reactAddonsTestUtils2['default'].createRenderer();
|
201 | var isDOM = false;
|
202 | var cachedNode = null;
|
203 | return {
|
204 | render: function () {
|
205 | function render(el, context) {
|
206 | cachedNode = el;
|
207 |
|
208 | if (typeof el.type === 'string') {
|
209 | isDOM = true;
|
210 | } else {
|
211 | isDOM = false;
|
212 | return (0, _enzymeAdapterUtils.withSetStateAllowed)(function () {
|
213 | return renderer.render(el, context);
|
214 | });
|
215 | }
|
216 | }
|
217 |
|
218 | return render;
|
219 | }(),
|
220 | unmount: function () {
|
221 | function unmount() {
|
222 | renderer.unmount();
|
223 | }
|
224 |
|
225 | return unmount;
|
226 | }(),
|
227 | getNode: function () {
|
228 | function getNode() {
|
229 | if (isDOM) {
|
230 | return (0, _enzymeAdapterUtils.elementToTree)(cachedNode);
|
231 | }
|
232 | var output = renderer.getRenderOutput();
|
233 | return {
|
234 | nodeType: typeToNodeType(cachedNode.type),
|
235 | type: cachedNode.type,
|
236 | props: cachedNode.props,
|
237 | key: (0, _enzymeAdapterUtils.ensureKeyOrUndefined)(cachedNode.key),
|
238 | ref: cachedNode.ref,
|
239 | instance: renderer._instance._instance,
|
240 | rendered: (0, _enzymeAdapterUtils.elementToTree)(output)
|
241 | };
|
242 | }
|
243 |
|
244 | return getNode;
|
245 | }(),
|
246 | simulateEvent: function () {
|
247 | function simulateEvent(node, event) {
|
248 | for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
249 | args[_key - 2] = arguments[_key];
|
250 | }
|
251 |
|
252 | var handler = node.props[(0, _enzymeAdapterUtils.propFromEvent)(event)];
|
253 | if (handler) {
|
254 | (0, _enzymeAdapterUtils.withSetStateAllowed)(function () {
|
255 |
|
256 |
|
257 | _reactDom2['default'].unstable_batchedUpdates(function () {
|
258 | handler.apply(undefined, _toConsumableArray(args));
|
259 | });
|
260 | });
|
261 | }
|
262 | }
|
263 |
|
264 | return simulateEvent;
|
265 | }(),
|
266 | batchedUpdates: function () {
|
267 | function batchedUpdates(fn) {
|
268 | return (0, _enzymeAdapterUtils.withSetStateAllowed)(function () {
|
269 | return _reactDom2['default'].unstable_batchedUpdates(fn);
|
270 | });
|
271 | }
|
272 |
|
273 | return batchedUpdates;
|
274 | }()
|
275 | };
|
276 | }
|
277 |
|
278 | return createShallowRenderer;
|
279 | }()
|
280 | }, {
|
281 | key: 'createStringRenderer',
|
282 | value: function () {
|
283 | function createStringRenderer(options) {
|
284 | return {
|
285 | render: function () {
|
286 | function render(el, context) {
|
287 | if (options.context && (el.type.contextTypes || options.childContextTypes)) {
|
288 | var childContextTypes = (0, _object2['default'])({}, el.type.contextTypes || {}, options.childContextTypes);
|
289 | var ContextWrapper = (0, _enzymeAdapterUtils.createRenderWrapper)(el, context, childContextTypes);
|
290 | return _server2['default'].renderToStaticMarkup(_react2['default'].createElement(ContextWrapper));
|
291 | }
|
292 | return _server2['default'].renderToStaticMarkup(el);
|
293 | }
|
294 |
|
295 | return render;
|
296 | }()
|
297 | };
|
298 | }
|
299 |
|
300 | return createStringRenderer;
|
301 | }()
|
302 |
|
303 |
|
304 |
|
305 |
|
306 |
|
307 | }, {
|
308 | key: 'createRenderer',
|
309 | value: function () {
|
310 | function createRenderer(options) {
|
311 | switch (options.mode) {
|
312 | case _enzyme.EnzymeAdapter.MODES.MOUNT:
|
313 | return this.createMountRenderer(options);
|
314 | case _enzyme.EnzymeAdapter.MODES.SHALLOW:
|
315 | return this.createShallowRenderer(options);
|
316 | case _enzyme.EnzymeAdapter.MODES.STRING:
|
317 | return this.createStringRenderer(options);
|
318 | default:
|
319 | throw new Error('Enzyme Internal Error: Unrecognized mode: ' + String(options.mode));
|
320 | }
|
321 | }
|
322 |
|
323 | return createRenderer;
|
324 | }()
|
325 |
|
326 |
|
327 |
|
328 |
|
329 |
|
330 |
|
331 | }, {
|
332 | key: 'nodeToElement',
|
333 | value: function () {
|
334 | function nodeToElement(node) {
|
335 | if (!node || (typeof node === 'undefined' ? 'undefined' : _typeof(node)) !== 'object') return null;
|
336 | return _react2['default'].createElement(node.type, (0, _enzymeAdapterUtils.propsWithKeysAndRef)(node));
|
337 | }
|
338 |
|
339 | return nodeToElement;
|
340 | }()
|
341 | }, {
|
342 | key: 'elementToNode',
|
343 | value: function () {
|
344 | function elementToNode(element) {
|
345 | return (0, _enzymeAdapterUtils.elementToTree)(element);
|
346 | }
|
347 |
|
348 | return elementToNode;
|
349 | }()
|
350 | }, {
|
351 | key: 'nodeToHostNode',
|
352 | value: function () {
|
353 | function nodeToHostNode(node) {
|
354 | return _reactDom2['default'].findDOMNode(node.instance);
|
355 | }
|
356 |
|
357 | return nodeToHostNode;
|
358 | }()
|
359 | }, {
|
360 | key: 'displayNameOfNode',
|
361 | value: function () {
|
362 | function displayNameOfNode(node) {
|
363 | return (0, _enzymeAdapterUtils.displayNameOfNode)(node);
|
364 | }
|
365 |
|
366 | return displayNameOfNode;
|
367 | }()
|
368 | }, {
|
369 | key: 'isValidElement',
|
370 | value: function () {
|
371 | function isValidElement(element) {
|
372 | return (0, _reactIs.isElement)(element);
|
373 | }
|
374 |
|
375 | return isValidElement;
|
376 | }()
|
377 | }, {
|
378 | key: 'isValidElementType',
|
379 | value: function () {
|
380 | function isValidElementType(object) {
|
381 | return (0, _reactIs.isValidElementType)(object);
|
382 | }
|
383 |
|
384 | return isValidElementType;
|
385 | }()
|
386 | }, {
|
387 | key: 'createElement',
|
388 | value: function () {
|
389 | function createElement() {
|
390 | return _react2['default'].createElement.apply(_react2['default'], arguments);
|
391 | }
|
392 |
|
393 | return createElement;
|
394 | }()
|
395 | }]);
|
396 |
|
397 | return ReactFourteenAdapter;
|
398 | }(_enzyme.EnzymeAdapter);
|
399 |
|
400 | module.exports = ReactFourteenAdapter; |
\ | No newline at end of file |