@samitouri / QOS-React / commits / 6d747a7426

[Fiber] Fix tests for Fiber in ReactElement-test (#8150)

* Test Fiber internals differently in ReactElement Instead of being able to access the owner's instance via getPublicInstance(), we use the Fiber's stateNode. (Fiber does not have methods, it's just a structure!) * Fix isCompositeComponentWithType for fiber In ReactTestUtils.isCompositeComponentWithType, we provide a way to walk through Fiber's internals in place of using _currentElement.type. We keep support for non-fiber though. * Test fiber reconciler consistently Use typeof instance.tag to test if we're using the fiber reconciler * Remove unnecessary comment

Robin Ricard committed Oct 30, 2016 at 01:42 UTC 6d747a742647f6e22790919647af36829e1f06a4
2 files changed +8 -4
src/isomorphic/classic/element/__tests__/ReactElement-test.js
+5 -1
@@ -266,7 +266,11 @@ describe('ReactElement', () => {
266 React.createElement(Wrapper)
267 );
268
269 - expect(element._owner.getPublicInstance()).toBe(instance);
269 + if (typeof element._owner.tag === 'number') { // Fiber reconciler
270 + expect(element._owner.stateNode).toBe(instance);
271 + } else { // Stack reconciler
272 + expect(element._owner.getPublicInstance()).toBe(instance);
273 + }
274 });
275
276 it('merges an additional argument onto the children prop', () => {
src/test/ReactTestUtils.js
+3 -3
@@ -157,9 +157,9 @@ var ReactTestUtils = {
157 return false;
158 }
159 var internalInstance = ReactInstanceMap.get(inst);
160 - var constructor = internalInstance
161 - ._currentElement
162 - .type;
160 + var constructor = typeof internalInstance.tag === 'number' ?
161 + internalInstance.type : // Fiber reconciler
162 + internalInstance._currentElement.type; // Stack reconciler
163
164 return (constructor === type);
165 },