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

ReactShallowRenderer.render returns the rendered output

Simone Vittori committed Nov 6, 2015 at 15:55 UTC c8b8c818b568aaa38af68523ad942050cde3262b
2 files changed +18 -25
src/test/ReactTestUtils.js
+10 -8
@@ -362,14 +362,6 @@ var ReactShallowRenderer = function() {
362 this._instance = null;
363 };
364
365 -ReactShallowRenderer.prototype.getRenderOutput = function() {
366 - return (
367 - (this._instance && this._instance._renderedComponent &&
368 - this._instance._renderedComponent._renderedOutput)
369 - || null
370 - );
371 -};
372 -
365 ReactShallowRenderer.prototype.getMountedInstance = function() {
366 return this._instance ? this._instance._instance : null;
367 };
@@ -435,6 +427,16 @@ ReactShallowRenderer.prototype.render = function(element, context) {
427 var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(true);
428 this._render(element, transaction, context);
429 ReactUpdates.ReactReconcileTransaction.release(transaction);
430 +
431 + return this.getRenderOutput();
432 +};
433 +
434 +ReactShallowRenderer.prototype.getRenderOutput = function() {
435 + return (
436 + (this._instance && this._instance._renderedComponent &&
437 + this._instance._renderedComponent._renderedOutput)
438 + || null
439 + );
440 };
441
442 ReactShallowRenderer.prototype.unmount = function() {
src/test/__tests__/ReactTestUtils-test.js
+8 -17
@@ -38,9 +38,7 @@ describe('ReactTestUtils', function() {
38 });
39
40 var shallowRenderer = ReactTestUtils.createRenderer();
41 - shallowRenderer.render(<SomeComponent />);
42 -
43 - var result = shallowRenderer.getRenderOutput();
41 + var result = shallowRenderer.render(<SomeComponent />);
42
43 expect(result.type).toBe('div');
44 expect(result.props.children).toEqual([
@@ -95,9 +93,7 @@ describe('ReactTestUtils', function() {
93 });
94
95 var shallowRenderer = ReactTestUtils.createRenderer();
98 - shallowRenderer.render(<SomeComponent />);
99 -
100 - var result = shallowRenderer.getRenderOutput();
96 + var result = shallowRenderer.render(<SomeComponent />);
97
98 expect(result).toBe(null);
99 });
@@ -148,16 +144,14 @@ describe('ReactTestUtils', function() {
144 });
145
146 var shallowRenderer = ReactTestUtils.createRenderer();
151 - shallowRenderer.render(<SomeComponent />);
152 - var result = shallowRenderer.getRenderOutput();
147 + var result = shallowRenderer.render(<SomeComponent />);
148 expect(result.type).toBe('div');
149 expect(result.props.children).toEqual([
150 <span className="child1" />,
151 <span className="child2" />,
152 ]);
153
159 - shallowRenderer.render(<SomeComponent aNew="prop" />);
160 - var updatedResult = shallowRenderer.getRenderOutput();
154 + var updatedResult = shallowRenderer.render(<SomeComponent aNew="prop" />);
155 expect(updatedResult.type).toBe('a');
156
157 var mockEvent = {};
@@ -194,8 +188,7 @@ describe('ReactTestUtils', function() {
188 });
189
190 var shallowRenderer = ReactTestUtils.createRenderer();
197 - shallowRenderer.render(<SimpleComponent />);
198 - var result = shallowRenderer.getRenderOutput();
191 + var result = shallowRenderer.render(<SimpleComponent />);
192 expect(result).toEqual(<div />);
193 });
194
@@ -210,10 +203,9 @@ describe('ReactTestUtils', function() {
203 });
204
205 var shallowRenderer = ReactTestUtils.createRenderer();
213 - shallowRenderer.render(<SimpleComponent />, {
206 + var result = shallowRenderer.render(<SimpleComponent />, {
207 name: 'foo',
208 });
216 - var result = shallowRenderer.getRenderOutput();
209 expect(result).toEqual(<div>foo</div>);
210 });
211
@@ -229,7 +221,6 @@ describe('ReactTestUtils', function() {
221 'NonExistentClass'
222 );
223 expect(scryResults.length).toBe(0);
232 -
224 });
225
226 it('can scryRenderedDOMComponentsWithClass with className contains \\n', function() {
@@ -445,8 +436,8 @@ describe('ReactTestUtils', function() {
436 });
437 var handler = jasmine.createSpy('spy');
438 var shallowRenderer = ReactTestUtils.createRenderer();
448 - shallowRenderer.render(<SomeComponent handleClick={handler} />);
449 - var result = shallowRenderer.getRenderOutput();
439 + var result = shallowRenderer.render(<SomeComponent handleClick={handler} />);
440 +
441 expect(() => ReactTestUtils.Simulate.click(result)).toThrow(
442 'TestUtils.Simulate expects a component instance and not a ReactElement.' +
443 'TestUtils.Simulate will not work if you are using shallow rendering.'