@samitouri / QOS-React-2 / commits / df937af91c

Shallow render components that define contextTypes

You now no longer have to pass an undocumented extra argument to the shallow renderer for rendering components with contextTypes to work. Fixes #3696

Scott Feeney committed Apr 21, 2015 at 16:17 UTC df937af91c3fe1f72edb175c1f69a69b5b02a145
2 files changed +25 -5
src/test/ReactTestUtils.js
+4
@@ -26,6 +26,7 @@ var ReactUpdates = require('ReactUpdates');
26 var SyntheticEvent = require('SyntheticEvent');
27
28 var assign = require('Object.assign');
29 +var emptyObject = require('emptyObject');
30 var findDOMNode = require('findDOMNode');
31
32 var topLevelTypes = EventConstants.topLevelTypes;
@@ -369,6 +370,9 @@ assign(
370 );
371
372 ReactShallowRenderer.prototype.render = function(element, context) {
373 + if (!context) {
374 + context = emptyObject;
375 + }
376 var transaction = ReactUpdates.ReactReconcileTransaction.getPooled();
377 this._render(element, transaction, context);
378 ReactUpdates.ReactReconcileTransaction.release(transaction);
src/test/__tests__/ReactTestUtils-test.js
+21 -5
@@ -46,7 +46,7 @@ describe('ReactTestUtils', function() {
46 });
47
48 var shallowRenderer = ReactTestUtils.createRenderer();
49 - shallowRenderer.render(<SomeComponent />, {});
49 + shallowRenderer.render(<SomeComponent />);
50
51 var result = shallowRenderer.getRenderOutput();
52
@@ -68,7 +68,7 @@ describe('ReactTestUtils', function() {
68 });
69
70 var shallowRenderer = ReactTestUtils.createRenderer();
71 - shallowRenderer.render(<SomeComponent />, {});
71 + shallowRenderer.render(<SomeComponent />);
72 shallowRenderer.unmount();
73
74 expect(componentWillUnmount).toBeCalled();
@@ -82,7 +82,7 @@ describe('ReactTestUtils', function() {
82 });
83
84 var shallowRenderer = ReactTestUtils.createRenderer();
85 - shallowRenderer.render(<SomeComponent />, {});
85 + shallowRenderer.render(<SomeComponent />);
86
87 var result = shallowRenderer.getRenderOutput();
88
@@ -123,7 +123,7 @@ describe('ReactTestUtils', function() {
123 });
124
125 var shallowRenderer = ReactTestUtils.createRenderer();
126 - shallowRenderer.render(<SomeComponent />, {});
126 + shallowRenderer.render(<SomeComponent />);
127 var result = shallowRenderer.getRenderOutput();
128 expect(result.type).toBe('div');
129 expect(result.props.children).toEqual([
@@ -131,7 +131,7 @@ describe('ReactTestUtils', function() {
131 <span className="child2" />
132 ]);
133
134 - shallowRenderer.render(<SomeComponent aNew="prop" />, {});
134 + shallowRenderer.render(<SomeComponent aNew="prop" />);
135 var updatedResult = shallowRenderer.getRenderOutput();
136 expect(updatedResult.type).toBe('a');
137
@@ -143,6 +143,22 @@ describe('ReactTestUtils', function() {
143 expect(updatedResultCausedByClick.props.className).toBe('was-clicked');
144 });
145
146 + it('can shallowly render components with contextTypes', function() {
147 + var SimpleComponent = React.createClass({
148 + contextTypes: {
149 + name: React.PropTypes.string,
150 + },
151 + render: function() {
152 + return <div />;
153 + },
154 + });
155 +
156 + var shallowRenderer = ReactTestUtils.createRenderer();
157 + shallowRenderer.render(<SimpleComponent />);
158 + var result = shallowRenderer.getRenderOutput();
159 + expect(result).toEqual(<div />);
160 + });
161 +
162 it('Test scryRenderedDOMComponentsWithClass with TextComponent', function() {
163 var renderedComponent = ReactTestUtils.renderIntoDocument(<div>Hello <span>Jim</span></div>);
164 var scryResults = ReactTestUtils.scryRenderedDOMComponentsWithClass(