From 135499782ebfdf1c9dc257fcd2ffb880fa9fbf34 Mon Sep 17 00:00:00 2001 From: Scott Feeney Date: Wed, 22 Apr 2015 10:54:40 -0700 Subject: [PATCH] Merge pull request #3716 from graue/optional-shallow-render-context Shallow render components that define contextTypes --- src/test/ReactTestUtils.js | 4 ++++ src/test/__tests__/ReactTestUtils-test.js | 26 ++++++++++++++++++----- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/test/ReactTestUtils.js b/src/test/ReactTestUtils.js index 9784cb9034..121b434bac 100644 --- a/src/test/ReactTestUtils.js +++ b/src/test/ReactTestUtils.js @@ -26,6 +26,7 @@ var ReactUpdates = require('ReactUpdates'); var SyntheticEvent = require('SyntheticEvent'); var assign = require('Object.assign'); +var emptyObject = require('emptyObject'); var topLevelTypes = EventConstants.topLevelTypes; @@ -368,6 +369,9 @@ assign( ); ReactShallowRenderer.prototype.render = function(element, context) { + if (!context) { + context = emptyObject; + } var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(); this._render(element, transaction, context); ReactUpdates.ReactReconcileTransaction.release(transaction); diff --git a/src/test/__tests__/ReactTestUtils-test.js b/src/test/__tests__/ReactTestUtils-test.js index c3e365a413..953c925a39 100644 --- a/src/test/__tests__/ReactTestUtils-test.js +++ b/src/test/__tests__/ReactTestUtils-test.js @@ -46,7 +46,7 @@ describe('ReactTestUtils', function() { }); var shallowRenderer = ReactTestUtils.createRenderer(); - shallowRenderer.render(, {}); + shallowRenderer.render(); var result = shallowRenderer.getRenderOutput(); @@ -68,7 +68,7 @@ describe('ReactTestUtils', function() { }); var shallowRenderer = ReactTestUtils.createRenderer(); - shallowRenderer.render(, {}); + shallowRenderer.render(); shallowRenderer.unmount(); expect(componentWillUnmount).toBeCalled(); @@ -82,7 +82,7 @@ describe('ReactTestUtils', function() { }); var shallowRenderer = ReactTestUtils.createRenderer(); - shallowRenderer.render(, {}); + shallowRenderer.render(); var result = shallowRenderer.getRenderOutput(); @@ -123,7 +123,7 @@ describe('ReactTestUtils', function() { }); var shallowRenderer = ReactTestUtils.createRenderer(); - shallowRenderer.render(, {}); + shallowRenderer.render(); var result = shallowRenderer.getRenderOutput(); expect(result.type).toBe('div'); expect(result.props.children).toEqual([ @@ -131,7 +131,7 @@ describe('ReactTestUtils', function() { ]); - shallowRenderer.render(, {}); + shallowRenderer.render(); var updatedResult = shallowRenderer.getRenderOutput(); expect(updatedResult.type).toBe('a'); @@ -143,6 +143,22 @@ describe('ReactTestUtils', function() { expect(updatedResultCausedByClick.props.className).toBe('was-clicked'); }); + it('can shallowly render components with contextTypes', function() { + var SimpleComponent = React.createClass({ + contextTypes: { + name: React.PropTypes.string, + }, + render: function() { + return
; + }, + }); + + var shallowRenderer = ReactTestUtils.createRenderer(); + shallowRenderer.render(); + var result = shallowRenderer.getRenderOutput(); + expect(result).toEqual(
); + }); + it('Test scryRenderedDOMComponentsWithClass with TextComponent', function() { var renderedComponent = ReactTestUtils.renderIntoDocument(
Hello Jim
); var scryResults = ReactTestUtils.scryRenderedDOMComponentsWithClass(