diff --git a/src/addons/ReactFragment.js b/src/addons/ReactFragment.js index d674137fd4..a9fb1d156c 100644 --- a/src/addons/ReactFragment.js +++ b/src/addons/ReactFragment.js @@ -96,14 +96,22 @@ var ReactFragment = { // of its properties. create: function(object) { if (__DEV__) { - if (typeof object !== 'object' || !object) { + if (typeof object !== 'object' || !object || Array.isArray(object)) { warning( false, - 'React.addons.createFragment only accepts a single object. Not %s', + 'React.addons.createFragment only accepts a single object.', object ); return object; } + if (ReactElement.isValidElement(object)) { + warning( + false, + 'React.addons.createFragment does not accept a ReactElement ' + + 'without a wrapper object.' + ); + return object; + } if (canWarnForReactFragment) { var proxy = {}; Object.defineProperty(proxy, fragmentKey, { diff --git a/src/addons/__tests__/ReactFragment-test.js b/src/addons/__tests__/ReactFragment-test.js index ebd918b3af..6570b43347 100644 --- a/src/addons/__tests__/ReactFragment-test.js +++ b/src/addons/__tests__/ReactFragment-test.js @@ -73,12 +73,31 @@ describe('ReactFragment', function() { ); }); - it('should warn if accessing any property on a fragment', function() { + it('should warn if passing null to createFragment', function() { spyOn(console, 'warn'); ReactFragment.create(null); expect(console.warn.calls.length).toBe(1); expect(console.warn.calls[0].args[0]).toContain( - 'React.addons.createFragment only accepts a single object. Not null' + 'React.addons.createFragment only accepts a single object.' + ); + }); + + it('should warn if passing an array to createFragment', function() { + spyOn(console, 'warn'); + ReactFragment.create([]); + expect(console.warn.calls.length).toBe(1); + expect(console.warn.calls[0].args[0]).toContain( + 'React.addons.createFragment only accepts a single object.' + ); + }); + + it('should warn if passing a ReactElement to createFragment', function() { + spyOn(console, 'warn'); + ReactFragment.create(
); + expect(console.warn.calls.length).toBe(1); + expect(console.warn.calls[0].args[0]).toContain( + 'React.addons.createFragment does not accept a ReactElement without a ' + + 'wrapper object.' ); });