From 4aa9cfb6ba33efb7bb823721df948f78444df673 Mon Sep 17 00:00:00 2001 From: Ben Alpert Date: Sun, 13 Nov 2016 14:16:38 -0800 Subject: [PATCH] Change warnings to use expectDev --- src/addons/__tests__/ReactFragment-test.js | 16 +- .../__tests__/ReactCSSTransitionGroup-test.js | 6 +- .../__tests__/ReactTransitionGroup-test.js | 8 +- .../__tests__/ReactContextValidator-test.js | 22 +-- .../classic/class/__tests__/ReactBind-test.js | 6 +- .../class/__tests__/ReactBindOptout-test.js | 4 +- .../class/__tests__/ReactClass-test.js | 38 ++-- .../class/__tests__/ReactClassMixin-test.js | 16 +- .../element/__tests__/ReactElement-test.js | 36 ++-- .../__tests__/ReactElementClone-test.js | 14 +- .../__tests__/ReactElementValidator-test.js | 86 ++++----- .../types/__tests__/ReactPropTypes-test.js | 18 +- .../element/__tests__/ReactJSXElement-test.js | 10 +- .../ReactJSXElementValidator-test.js | 54 +++--- .../dom/__tests__/ReactDOMProduction-test.js | 4 +- .../__tests__/CSSPropertyOperations-test.js | 26 +-- .../ReactBrowserEventEmitter-test.js | 2 +- .../__tests__/ReactDOMComponent-test.js | 166 +++++++++--------- .../__tests__/ReactDOMInvalidARIAHook-test.js | 14 +- .../__tests__/SyntheticEvent-test.js | 28 +-- .../wrappers/__tests__/ReactDOMInput-test.js | 88 +++++----- .../wrappers/__tests__/ReactDOMOption-test.js | 6 +- .../wrappers/__tests__/ReactDOMSelect-test.js | 8 +- .../__tests__/ReactDOMTextarea-test.js | 20 +-- .../stack/client/__tests__/ReactDOM-test.js | 2 +- .../stack/client/__tests__/ReactMount-test.js | 24 +-- .../__tests__/ReactMountDestruction-test.js | 8 +- .../__tests__/ReactServerRendering-test.js | 14 +- .../shared/__tests__/ReactDebugTool-test.js | 6 +- .../shared/__tests__/ReactPerf-test.js | 14 +- .../__tests__/ReactComponentTreeHook-test.js | 4 +- .../__tests__/ReactComponent-test.js | 2 +- .../__tests__/ReactComponentLifeCycle-test.js | 16 +- .../__tests__/ReactCompositeComponent-test.js | 46 ++--- .../__tests__/ReactMockedComponent-test.js | 2 +- .../__tests__/ReactMultiChild-test.js | 6 +- .../__tests__/ReactMultiChildText-test.js | 6 +- .../__tests__/ReactStatelessComponent-test.js | 24 +-- .../reconciler/__tests__/ReactUpdates-test.js | 1 + .../__tests__/ReactTestRenderer-test.js | 4 +- .../__tests__/traverseAllChildren-test.js | 16 +- src/test/__tests__/ReactTestUtils-test.js | 4 +- 42 files changed, 448 insertions(+), 447 deletions(-) diff --git a/src/addons/__tests__/ReactFragment-test.js b/src/addons/__tests__/ReactFragment-test.js index 0f278686a3..4788c06e2f 100644 --- a/src/addons/__tests__/ReactFragment-test.js +++ b/src/addons/__tests__/ReactFragment-test.js @@ -75,8 +75,8 @@ describe('ReactFragment', () => { ReactFragment.create({1: , 2: }); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'Child objects should have non-numeric keys so ordering is preserved.' ); }); @@ -84,8 +84,8 @@ describe('ReactFragment', () => { it('should warn if passing null to createFragment', () => { spyOn(console, 'error'); ReactFragment.create(null); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'React.addons.createFragment only accepts a single object.' ); }); @@ -93,8 +93,8 @@ describe('ReactFragment', () => { it('should warn if passing an array to createFragment', () => { spyOn(console, 'error'); ReactFragment.create([]); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'React.addons.createFragment only accepts a single object.' ); }); @@ -102,8 +102,8 @@ describe('ReactFragment', () => { it('should warn if passing a ReactElement to createFragment', () => { spyOn(console, 'error'); ReactFragment.create(
); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'React.addons.createFragment does not accept a ReactElement without a ' + 'wrapper object.' ); diff --git a/src/addons/transitions/__tests__/ReactCSSTransitionGroup-test.js b/src/addons/transitions/__tests__/ReactCSSTransitionGroup-test.js index 492b41e2e7..a3ce179fab 100644 --- a/src/addons/transitions/__tests__/ReactCSSTransitionGroup-test.js +++ b/src/addons/transitions/__tests__/ReactCSSTransitionGroup-test.js @@ -45,7 +45,7 @@ describe('ReactCSSTransitionGroup', () => { ); // Warning about the missing transitionLeaveTimeout prop - expect(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.count()).toBe(1); }); it('should not warn if timeouts is zero', () => { @@ -61,7 +61,7 @@ describe('ReactCSSTransitionGroup', () => { container ); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('should clean-up silently after the timeout elapses', () => { @@ -103,7 +103,7 @@ describe('ReactCSSTransitionGroup', () => { } // No warnings - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); // The leaving child has been removed expect(ReactDOM.findDOMNode(a).childNodes.length).toBe(1); diff --git a/src/addons/transitions/__tests__/ReactTransitionGroup-test.js b/src/addons/transitions/__tests__/ReactTransitionGroup-test.js index 0729be98f4..12555a98fd 100644 --- a/src/addons/transitions/__tests__/ReactTransitionGroup-test.js +++ b/src/addons/transitions/__tests__/ReactTransitionGroup-test.js @@ -21,7 +21,7 @@ describe('ReactTransitionGroup', () => { var container; function normalizeCodeLocInfo(str) { - return str.replace(/\(at .+?:\d+\)/g, '(at **)'); + return str && str.replace(/\(at .+?:\d+\)/g, '(at **)'); } beforeEach(() => { @@ -308,14 +308,14 @@ describe('ReactTransitionGroup', () => { ReactDOM.render(, container); - expect(console.error.calls.count()).toBe(2); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(2); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: flattenChildren(...): ' + 'Encountered two children with the same key, `1`. ' + 'Child keys must be unique; when two children share a key, ' + 'only the first child will be used.' ); - expect(normalizeCodeLocInfo(console.error.calls.argsFor(1)[0])).toBe( + expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(1)[0])).toBe( 'Warning: flattenChildren(...): ' + 'Encountered two children with the same key, `1`. ' + 'Child keys must be unique; when two children share a key, ' + diff --git a/src/isomorphic/classic/__tests__/ReactContextValidator-test.js b/src/isomorphic/classic/__tests__/ReactContextValidator-test.js index c0ba47b624..6e237e6537 100644 --- a/src/isomorphic/classic/__tests__/ReactContextValidator-test.js +++ b/src/isomorphic/classic/__tests__/ReactContextValidator-test.js @@ -23,7 +23,7 @@ var ReactTestUtils; describe('ReactContextValidator', () => { function normalizeCodeLocInfo(str) { - return str.replace(/\(at .+?:\d+\)/g, '(at **)'); + return str && str.replace(/\(at .+?:\d+\)/g, '(at **)'); } beforeEach(() => { @@ -146,8 +146,8 @@ describe('ReactContextValidator', () => { ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(1); - expect(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe( 'Warning: Failed context type: ' + 'The context `foo` is marked as required in `Component`, but its value ' + 'is `undefined`.\n' + @@ -175,7 +175,7 @@ describe('ReactContextValidator', () => { ); // Previous call should not error - expect(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.count()).toBe(1); var ComponentInFooNumberContext = React.createClass({ childContextTypes: { @@ -195,8 +195,8 @@ describe('ReactContextValidator', () => { ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(2); - expect(normalizeCodeLocInfo(console.error.calls.argsFor(1)[0])).toBe( + expectDev(console.error.calls.count()).toBe(2); + expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(1)[0])).toBe( 'Warning: Failed context type: ' + 'Invalid context `foo` of type `number` supplied ' + 'to `Component`, expected `string`.\n' + @@ -224,8 +224,8 @@ describe('ReactContextValidator', () => { }); ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(1); - expect(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe( 'Warning: Failed childContext type: ' + 'The child context `foo` is marked as required in `Component`, but its ' + 'value is `undefined`.\n' + @@ -234,8 +234,8 @@ describe('ReactContextValidator', () => { ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(2); - expect(normalizeCodeLocInfo(console.error.calls.argsFor(1)[0])).toBe( + expectDev(console.error.calls.count()).toBe(2); + expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(1)[0])).toBe( 'Warning: Failed childContext type: ' + 'Invalid child context `foo` of type `number` ' + 'supplied to `Component`, expected `string`.\n' + @@ -251,7 +251,7 @@ describe('ReactContextValidator', () => { ); // Previous calls should not log errors - expect(console.error.calls.count()).toBe(2); + expectDev(console.error.calls.count()).toBe(2); }); }); diff --git a/src/isomorphic/classic/class/__tests__/ReactBind-test.js b/src/isomorphic/classic/class/__tests__/ReactBind-test.js index 5d33f8ed15..4056a39ae4 100644 --- a/src/isomorphic/classic/class/__tests__/ReactBind-test.js +++ b/src/isomorphic/classic/class/__tests__/ReactBind-test.js @@ -123,8 +123,8 @@ describe('autobinding', () => { ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call. See TestBindComponent' @@ -151,7 +151,7 @@ describe('autobinding', () => { ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); }); diff --git a/src/isomorphic/classic/class/__tests__/ReactBindOptout-test.js b/src/isomorphic/classic/class/__tests__/ReactBindOptout-test.js index bfaa8f8e0f..72852f08a3 100644 --- a/src/isomorphic/classic/class/__tests__/ReactBindOptout-test.js +++ b/src/isomorphic/classic/class/__tests__/ReactBindOptout-test.js @@ -186,7 +186,7 @@ describe('autobind optout', () => { ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('does not warn if you pass an manually bound method to setState', () => { @@ -210,7 +210,7 @@ describe('autobind optout', () => { ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); }); diff --git a/src/isomorphic/classic/class/__tests__/ReactClass-test.js b/src/isomorphic/classic/class/__tests__/ReactClass-test.js index e56d3913ba..eabfd211ee 100644 --- a/src/isomorphic/classic/class/__tests__/ReactClass-test.js +++ b/src/isomorphic/classic/class/__tests__/ReactClass-test.js @@ -69,8 +69,8 @@ describe('ReactClass-spec', () => { return {this.props.prop}; }, }); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: Component: prop type `prop` is invalid; ' + 'it must be a function, usually from React.PropTypes.' ); @@ -87,8 +87,8 @@ describe('ReactClass-spec', () => { return {this.props.prop}; }, }); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: Component: context type `prop` is invalid; ' + 'it must be a function, usually from React.PropTypes.' ); @@ -105,8 +105,8 @@ describe('ReactClass-spec', () => { return {this.props.prop}; }, }); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: Component: child context type `prop` is invalid; ' + 'it must be a function, usually from React.PropTypes.' ); @@ -123,8 +123,8 @@ describe('ReactClass-spec', () => { return
; }, }); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: A component has a method called componentShouldUpdate(). Did you ' + 'mean shouldComponentUpdate()? The name is phrased as a question ' + 'because the function is expected to return a value.' @@ -139,8 +139,8 @@ describe('ReactClass-spec', () => { return
; }, }); - expect(console.error.calls.count()).toBe(2); - expect(console.error.calls.argsFor(1)[0]).toBe( + expectDev(console.error.calls.count()).toBe(2); + expectDev(console.error.calls.argsFor(1)[0]).toBe( 'Warning: NamedComponent has a method called componentShouldUpdate(). Did you ' + 'mean shouldComponentUpdate()? The name is phrased as a question ' + 'because the function is expected to return a value.' @@ -157,8 +157,8 @@ describe('ReactClass-spec', () => { return
; }, }); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: A component has a method called componentWillRecieveProps(). Did you ' + 'mean componentWillReceiveProps()?' ); @@ -206,20 +206,20 @@ describe('ReactClass-spec', () => { return
; }, }); - expect(console.error.calls.count()).toBe(4); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(4); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'createClass(...): `mixins` is now a static property and should ' + 'be defined inside "statics".' ); - expect(console.error.calls.argsFor(1)[0]).toBe( + expectDev(console.error.calls.argsFor(1)[0]).toBe( 'createClass(...): `propTypes` is now a static property and should ' + 'be defined inside "statics".' ); - expect(console.error.calls.argsFor(2)[0]).toBe( + expectDev(console.error.calls.argsFor(2)[0]).toBe( 'createClass(...): `contextTypes` is now a static property and ' + 'should be defined inside "statics".' ); - expect(console.error.calls.argsFor(3)[0]).toBe( + expectDev(console.error.calls.argsFor(3)[0]).toBe( 'createClass(...): `childContextTypes` is now a static property and ' + 'should be defined inside "statics".' ); @@ -343,8 +343,8 @@ describe('ReactClass-spec', () => { }); expect(() => Component()).toThrow(); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: Something is calling a React component directly. Use a ' + 'factory or JSX instead. See: https://fb.me/react-legacyfactory' ); diff --git a/src/isomorphic/classic/class/__tests__/ReactClassMixin-test.js b/src/isomorphic/classic/class/__tests__/ReactClassMixin-test.js index 7e80c37f23..df17f8c370 100644 --- a/src/isomorphic/classic/class/__tests__/ReactClassMixin-test.js +++ b/src/isomorphic/classic/class/__tests__/ReactClassMixin-test.js @@ -321,8 +321,8 @@ describe('ReactClass-mixin', () => { }, }); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: ReactClass: You\'re attempting to include a mixin that is ' + 'either null or not an object. Check the mixins included by the ' + 'component, as well as any mixins they include themselves. ' + @@ -341,8 +341,8 @@ describe('ReactClass-mixin', () => { }, }); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: ReactClass: You\'re attempting to include a mixin that is ' + 'either null or not an object. Check the mixins included by the ' + 'component, as well as any mixins they include themselves. ' + @@ -365,8 +365,8 @@ describe('ReactClass-mixin', () => { }, }); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: ReactClass: You\'re attempting to include a mixin that is ' + 'either null or not an object. Check the mixins included by the ' + 'component, as well as any mixins they include themselves. ' + @@ -389,8 +389,8 @@ describe('ReactClass-mixin', () => { }, }); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: ReactClass: You\'re attempting to include a mixin that is ' + 'either null or not an object. Check the mixins included by the ' + 'component, as well as any mixins they include themselves. ' + diff --git a/src/isomorphic/classic/element/__tests__/ReactElement-test.js b/src/isomorphic/classic/element/__tests__/ReactElement-test.js index 091e3e502d..80f09d69a6 100644 --- a/src/isomorphic/classic/element/__tests__/ReactElement-test.js +++ b/src/isomorphic/classic/element/__tests__/ReactElement-test.js @@ -76,10 +76,10 @@ describe('ReactElement', () => { ); }, }); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); ReactDOM.render(, container); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'Child: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + @@ -106,10 +106,10 @@ describe('ReactElement', () => { ); }, }); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); ReactDOM.render(, container); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'Child: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + @@ -120,10 +120,10 @@ describe('ReactElement', () => { it('should warn when `key` is being accessed on a host element', () => { spyOn(console, 'error'); var element =
; - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); void element.props.key; - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'div: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + @@ -148,10 +148,10 @@ describe('ReactElement', () => { ); }, }); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); ReactDOM.render(, container); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'Child: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + @@ -280,7 +280,7 @@ describe('ReactElement', () => { children: 'text', }, a); expect(element.props.children).toBe(a); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('does not override children if no rest args are provided', () => { @@ -289,7 +289,7 @@ describe('ReactElement', () => { children: 'text', }); expect(element.props.children).toBe('text'); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('overrides children if null is provided as an argument', () => { @@ -298,7 +298,7 @@ describe('ReactElement', () => { children: 'text', }, null); expect(element.props.children).toBe(null); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('merges rest arguments onto the children prop in an array', () => { @@ -308,7 +308,7 @@ describe('ReactElement', () => { var c = 3; var element = React.createFactory(ComponentClass)(null, a, b, c); expect(element.props.children).toEqual([1, 2, 3]); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); // NOTE: We're explicitly not using JSX here. This is intended to test @@ -332,7 +332,7 @@ describe('ReactElement', () => { var element = React.createElement(StaticMethodComponentClass); expect(element.type.someStaticMethod()).toBe('someReturnValue'); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); // NOTE: We're explicitly not using JSX here. This is intended to test @@ -477,7 +477,7 @@ describe('ReactElement', () => { }); var test = ReactTestUtils.renderIntoDocument(); expect(test.props.value).toBeNaN(); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); // NOTE: We're explicitly not using JSX here. This is intended to test diff --git a/src/isomorphic/classic/element/__tests__/ReactElementClone-test.js b/src/isomorphic/classic/element/__tests__/ReactElementClone-test.js index 50406d0345..49af3ea80e 100644 --- a/src/isomorphic/classic/element/__tests__/ReactElementClone-test.js +++ b/src/isomorphic/classic/element/__tests__/ReactElementClone-test.js @@ -250,8 +250,8 @@ describe('ReactElementClone', () => { React.cloneElement(
, null, [
,
]); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'Each child in an array or iterator should have a unique "key" prop.' ); }); @@ -261,7 +261,7 @@ describe('ReactElementClone', () => { React.cloneElement(
, null, [
,
]); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('does not warn when the element is directly in rest args', () => { @@ -269,7 +269,7 @@ describe('ReactElementClone', () => { React.cloneElement(
, null,
,
); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('does not warn when the array contains a non-element', () => { @@ -277,7 +277,7 @@ describe('ReactElementClone', () => { React.cloneElement(
, null, [{}, {}]); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('should check declared prop types after clone', () => { @@ -304,8 +304,8 @@ describe('ReactElementClone', () => { }, }); ReactTestUtils.renderIntoDocument(React.createElement(GrandParent)); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: Failed prop type: ' + 'Invalid prop `color` of type `number` supplied to `Component`, ' + 'expected `string`.\n' + diff --git a/src/isomorphic/classic/element/__tests__/ReactElementValidator-test.js b/src/isomorphic/classic/element/__tests__/ReactElementValidator-test.js index 5690e2125b..11dfb266b9 100644 --- a/src/isomorphic/classic/element/__tests__/ReactElementValidator-test.js +++ b/src/isomorphic/classic/element/__tests__/ReactElementValidator-test.js @@ -20,7 +20,7 @@ var ReactTestUtils; describe('ReactElementValidator', () => { function normalizeCodeLocInfo(str) { - return str.replace(/\(at .+?:\d+\)/g, '(at **)'); + return str && str.replace(/\(at .+?:\d+\)/g, '(at **)'); } var ComponentClass; @@ -44,8 +44,8 @@ describe('ReactElementValidator', () => { Component(null, [Component(), Component()]); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'Each child in an array or iterator should have a unique "key" prop.' ); }); @@ -74,8 +74,8 @@ describe('ReactElementValidator', () => { React.createElement(ComponentWrapper) ); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'Each child in an array or iterator should have a unique "key" prop. ' + 'Check the render method of `InnerClass`. ' + 'It was passed a child from ComponentWrapper. ' @@ -98,8 +98,8 @@ describe('ReactElementValidator', () => { ]; ReactTestUtils.renderIntoDocument({divs}); - expect(console.error.calls.count()).toBe(1); - expect(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe( 'Warning: Each child in an array or iterator should have a unique ' + '"key" prop. See https://fb.me/react-warning-keys for more information.\n' + ' in div (at **)' @@ -115,8 +115,8 @@ describe('ReactElementValidator', () => { ]; ReactTestUtils.renderIntoDocument(
{divs}
); - expect(console.error.calls.count()).toBe(1); - expect(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe( 'Warning: Each child in an array or iterator should have a unique ' + '"key" prop. Check the top-level render call using
. See ' + 'https://fb.me/react-warning-keys for more information.\n' + @@ -147,8 +147,8 @@ describe('ReactElementValidator', () => { ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(1); - expect(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe( 'Warning: Each child in an array or iterator should have a unique ' + '"key" prop. Check the render method of `Component`. See ' + 'https://fb.me/react-warning-keys for more information.\n' + @@ -180,7 +180,7 @@ describe('ReactElementValidator', () => { ); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('warns for keys for iterables of elements in rest args', () => { @@ -201,8 +201,8 @@ describe('ReactElementValidator', () => { Component(null, iterable); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'Each child in an array or iterator should have a unique "key" prop.' ); }); @@ -213,7 +213,7 @@ describe('ReactElementValidator', () => { Component(null, [Component({key: '#1'}), Component({key: '#2'})]); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('does not warns for iterable elements with keys', () => { @@ -237,7 +237,7 @@ describe('ReactElementValidator', () => { Component(null, iterable); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('does not warn when the element is directly in rest args', () => { @@ -246,7 +246,7 @@ describe('ReactElementValidator', () => { Component(null, Component(), Component()); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('does not warn when the array contains a non-element', () => { @@ -255,7 +255,7 @@ describe('ReactElementValidator', () => { Component(null, [{}, {}]); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); // TODO: These warnings currently come from the composite component, but @@ -280,7 +280,7 @@ describe('ReactElementValidator', () => { }, }); ReactTestUtils.renderIntoDocument(React.createElement(ParentComp)); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: Failed prop type: ' + 'Invalid prop `color` of type `number` supplied to `MyComp`, ' + 'expected `string`.\n' + @@ -295,29 +295,29 @@ describe('ReactElementValidator', () => { React.createElement(null); React.createElement(true); React.createElement(123); - expect(console.error.calls.count()).toBe(4); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(4); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: React.createElement: type should not be null, undefined, ' + 'boolean, or number. It should be a string (for DOM elements) or a ' + 'ReactClass (for composite components).' ); - expect(console.error.calls.argsFor(1)[0]).toBe( + expectDev(console.error.calls.argsFor(1)[0]).toBe( 'Warning: React.createElement: type should not be null, undefined, ' + 'boolean, or number. It should be a string (for DOM elements) or a ' + 'ReactClass (for composite components).' ); - expect(console.error.calls.argsFor(2)[0]).toBe( + expectDev(console.error.calls.argsFor(2)[0]).toBe( 'Warning: React.createElement: type should not be null, undefined, ' + 'boolean, or number. It should be a string (for DOM elements) or a ' + 'ReactClass (for composite components).' ); - expect(console.error.calls.argsFor(3)[0]).toBe( + expectDev(console.error.calls.argsFor(3)[0]).toBe( 'Warning: React.createElement: type should not be null, undefined, ' + 'boolean, or number. It should be a string (for DOM elements) or a ' + 'ReactClass (for composite components).' ); React.createElement('div'); - expect(console.error.calls.count()).toBe(4); + expectDev(console.error.calls.count()).toBe(4); }); it('includes the owner name when passing null, undefined, boolean, or number', () => { @@ -334,8 +334,8 @@ describe('ReactElementValidator', () => { 'or a class/function (for composite components) but got: null. Check ' + 'the render method of `ParentComp`.' ); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: React.createElement: type should not be null, undefined, ' + 'boolean, or number. It should be a string (for DOM elements) or a ' + 'ReactClass (for composite components). Check the render method of ' + @@ -358,8 +358,8 @@ describe('ReactElementValidator', () => { ReactTestUtils.renderIntoDocument(React.createElement(Component)); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: Failed prop type: The prop `prop` is marked as required in ' + '`Component`, but its value is `null`.\n' + ' in Component' @@ -383,8 +383,8 @@ describe('ReactElementValidator', () => { React.createElement(Component, {prop:null}) ); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: Failed prop type: The prop `prop` is marked as required in ' + '`Component`, but its value is `null`.\n' + ' in Component' @@ -410,15 +410,15 @@ describe('ReactElementValidator', () => { React.createElement(Component, {prop: 42}) ); - expect(console.error.calls.count()).toBe(2); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(2); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: Failed prop type: ' + 'The prop `prop` is marked as required in `Component`, but its value ' + 'is `undefined`.\n' + ' in Component' ); - expect(console.error.calls.argsFor(1)[0]).toBe( + expectDev(console.error.calls.argsFor(1)[0]).toBe( 'Warning: Failed prop type: ' + 'Invalid prop `prop` of type `number` supplied to ' + '`Component`, expected `string`.\n' + @@ -430,7 +430,7 @@ describe('ReactElementValidator', () => { ); // Should not error for strings - expect(console.error.calls.count()).toBe(2); + expectDev(console.error.calls.count()).toBe(2); }); it('should warn if a PropType creator is used as a PropType', () => { @@ -449,8 +449,8 @@ describe('ReactElementValidator', () => { React.createElement(Component, {myProp: {value: 'hi'}}) ); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: Component: type specification of prop `myProp` is invalid; ' + 'the type checker function must return `null` or an `Error` but ' + 'returned a function. You may have forgotten to pass an argument to ' + @@ -468,14 +468,14 @@ describe('ReactElementValidator', () => { }); var TestFactory = React.createFactory(TestComponent); expect(TestFactory.type).toBe(TestComponent); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: Factory.type is deprecated. Access the class directly before ' + 'passing it to createFactory.' ); // Warn once, not again expect(TestFactory.type).toBe(TestComponent); - expect(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.count()).toBe(1); }); it('does not warn when using DOM node as children', () => { @@ -492,7 +492,7 @@ describe('ReactElementValidator', () => { var node = document.createElement('div'); // This shouldn't cause a stack overflow or any other problems (#3883) ReactTestUtils.renderIntoDocument({node}); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('should not enumerate enumerable numbers (#4776)', () => { @@ -535,8 +535,8 @@ describe('ReactElementValidator', () => { spyOn(console, 'error'); var Foo = undefined; void {[
]}; - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: React.createElement: type should not be null, undefined, ' + 'boolean, or number. It should be a string (for DOM elements) or a ' + 'ReactClass (for composite components).' diff --git a/src/isomorphic/classic/types/__tests__/ReactPropTypes-test.js b/src/isomorphic/classic/types/__tests__/ReactPropTypes-test.js index fa51c97ccb..18a57c7be1 100644 --- a/src/isomorphic/classic/types/__tests__/ReactPropTypes-test.js +++ b/src/isomorphic/classic/types/__tests__/ReactPropTypes-test.js @@ -310,7 +310,7 @@ describe('ReactPropTypes', () => { var instance = } />; instance = ReactTestUtils.renderIntoDocument(instance); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('should warn when passing no label and isRequired is set', () => { @@ -319,7 +319,7 @@ describe('ReactPropTypes', () => { var instance = ; instance = ReactTestUtils.renderIntoDocument(instance); - expect(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.count()).toBe(1); }); it('should be implicitly optional and not warn without values', () => { @@ -454,7 +454,7 @@ describe('ReactPropTypes', () => { k4: null, k5: undefined, })); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('should not warn for iterables', () => { @@ -612,8 +612,8 @@ describe('ReactPropTypes', () => { PropTypes.oneOf('red', 'blue'); - expect(console.error).toHaveBeenCalled(); - expect(console.error.calls.argsFor(0)[0]) + expectDev(console.error).toHaveBeenCalled(); + expectDev(console.error.calls.argsFor(0)[0]) .toContain('Invalid argument supplied to oneOf, expected an instance of array.'); typeCheckPass(PropTypes.oneOf('red', 'blue'), 'red'); @@ -668,8 +668,8 @@ describe('ReactPropTypes', () => { PropTypes.oneOfType(PropTypes.string, PropTypes.number); - expect(console.error).toHaveBeenCalled(); - expect(console.error.calls.argsFor(0)[0]) + expectDev(console.error).toHaveBeenCalled(); + expectDev(console.error.calls.argsFor(0)[0]) .toContain('Invalid argument supplied to oneOfType, expected an instance of array.'); typeCheckPass(PropTypes.oneOf(PropTypes.string, PropTypes.number), []); @@ -893,7 +893,7 @@ describe('ReactPropTypes', () => { var instance = ; instance = ReactTestUtils.renderIntoDocument(instance); - expect(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.count()).toBe(1); expect( console.error.calls.argsFor(0)[0].replace(/\(at .+?:\d+\)/g, '(at **)') ).toBe( @@ -920,7 +920,7 @@ describe('ReactPropTypes', () => { var instance = ; instance = ReactTestUtils.renderIntoDocument(instance); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); } ); }); diff --git a/src/isomorphic/modern/element/__tests__/ReactJSXElement-test.js b/src/isomorphic/modern/element/__tests__/ReactJSXElement-test.js index 1a7be9d7b0..84970acf8c 100644 --- a/src/isomorphic/modern/element/__tests__/ReactJSXElement-test.js +++ b/src/isomorphic/modern/element/__tests__/ReactJSXElement-test.js @@ -100,21 +100,21 @@ describe('ReactJSXElement', () => { var a = 1; var element = {a}; expect(element.props.children).toBe(a); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('does not override children if no JSX children are provided', () => { spyOn(console, 'error'); var element = ; expect(element.props.children).toBe('text'); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('overrides children if null is provided as a JSX child', () => { spyOn(console, 'error'); var element = {null}; expect(element.props.children).toBe(null); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('overrides children if undefined is provided as an argument', () => { @@ -136,7 +136,7 @@ describe('ReactJSXElement', () => { var c = 3; var element = {a}{b}{c}; expect(element.props.children).toEqual([1, 2, 3]); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('allows static methods to be called using the type property', () => { @@ -153,7 +153,7 @@ describe('ReactJSXElement', () => { var element = ; expect(element.type.someStaticMethod()).toBe('someReturnValue'); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('identifies valid elements', () => { diff --git a/src/isomorphic/modern/element/__tests__/ReactJSXElementValidator-test.js b/src/isomorphic/modern/element/__tests__/ReactJSXElementValidator-test.js index 71fbed5bd3..47563ff67b 100644 --- a/src/isomorphic/modern/element/__tests__/ReactJSXElementValidator-test.js +++ b/src/isomorphic/modern/element/__tests__/ReactJSXElementValidator-test.js @@ -47,8 +47,8 @@ describe('ReactJSXElementValidator', () => { void {[, ]}; - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'Each child in an array or iterator should have a unique "key" prop.' ); }); @@ -74,8 +74,8 @@ describe('ReactJSXElementValidator', () => { ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'Each child in an array or iterator should have a unique "key" prop. ' + 'Check the render method of `InnerComponent`. ' + 'It was passed a child from ComponentWrapper. ' @@ -99,8 +99,8 @@ describe('ReactJSXElementValidator', () => { void {iterable}; - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'Each child in an array or iterator should have a unique "key" prop.' ); }); @@ -110,7 +110,7 @@ describe('ReactJSXElementValidator', () => { void {[, ]}; - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('does not warns for iterable elements with keys', () => { @@ -133,7 +133,7 @@ describe('ReactJSXElementValidator', () => { void {iterable}; - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('does not warn for numeric keys in entry iterable as a child', () => { @@ -154,7 +154,7 @@ describe('ReactJSXElementValidator', () => { void {iterable}; - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('does not warn when the element is directly as children', () => { @@ -162,7 +162,7 @@ describe('ReactJSXElementValidator', () => { void ; - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('does not warn when the child array contains non-elements', () => { @@ -170,7 +170,7 @@ describe('ReactJSXElementValidator', () => { void {[{}, {}]}; - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); // TODO: These warnings currently come from the composite component, but @@ -217,25 +217,25 @@ describe('ReactJSXElementValidator', () => { void ; void ; void ; - expect(console.error.calls.count()).toBe(4); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(4); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'type should not be null, undefined, boolean, or number. It should be ' + 'a string (for DOM elements) or a ReactClass (for composite components).' ); - expect(console.error.calls.argsFor(1)[0]).toContain( + expectDev(console.error.calls.argsFor(1)[0]).toContain( 'type should not be null, undefined, boolean, or number. It should be ' + 'a string (for DOM elements) or a ReactClass (for composite components).' ); - expect(console.error.calls.argsFor(2)[0]).toContain( + expectDev(console.error.calls.argsFor(2)[0]).toContain( 'type should not be null, undefined, boolean, or number. It should be ' + 'a string (for DOM elements) or a ReactClass (for composite components).' ); - expect(console.error.calls.argsFor(3)[0]).toContain( + expectDev(console.error.calls.argsFor(3)[0]).toContain( 'type should not be null, undefined, boolean, or number. It should be ' + 'a string (for DOM elements) or a ReactClass (for composite components).' ); void
; - expect(console.error.calls.count()).toBe(4); + expectDev(console.error.calls.count()).toBe(4); }); it('should check default prop values', () => { @@ -245,7 +245,7 @@ describe('ReactJSXElementValidator', () => { ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.count()).toBe(1); expect( console.error.calls.argsFor(0)[0].replace(/\(at .+?:\d+\)/g, '(at **)') ).toBe( @@ -260,7 +260,7 @@ describe('ReactJSXElementValidator', () => { ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.count()).toBe(1); expect( console.error.calls.argsFor(0)[0].replace(/\(at .+?:\d+\)/g, '(at **)') ).toBe( @@ -276,7 +276,7 @@ describe('ReactJSXElementValidator', () => { ReactTestUtils.renderIntoDocument(); ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(2); + expectDev(console.error.calls.count()).toBe(2); expect( console.error.calls.argsFor(0)[0].replace(/\(at .+?:\d+\)/g, '(at **)') ).toBe( @@ -298,7 +298,7 @@ describe('ReactJSXElementValidator', () => { ReactTestUtils.renderIntoDocument(); // Should not error for strings - expect(console.error.calls.count()).toBe(2); + expectDev(console.error.calls.count()).toBe(2); }); it('should warn on invalid prop types', () => { @@ -316,8 +316,8 @@ describe('ReactJSXElementValidator', () => { prop: null, }; ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'NullPropTypeComponent: prop type `prop` is invalid; it must be a ' + 'function, usually from React.PropTypes.' ); @@ -334,8 +334,8 @@ describe('ReactJSXElementValidator', () => { prop: null, }; ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'NullContextTypeComponent: context type `prop` is invalid; it must ' + 'be a function, usually from React.PropTypes.' ); @@ -352,8 +352,8 @@ describe('ReactJSXElementValidator', () => { prop: 'foo', }); ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'getDefaultProps is only used on classic React.createClass definitions.' + ' Use a static property named `defaultProps` instead.' ); diff --git a/src/renderers/dom/__tests__/ReactDOMProduction-test.js b/src/renderers/dom/__tests__/ReactDOMProduction-test.js index 2033abd1ad..4699975e36 100644 --- a/src/renderers/dom/__tests__/ReactDOMProduction-test.js +++ b/src/renderers/dom/__tests__/ReactDOMProduction-test.js @@ -36,7 +36,7 @@ describe('ReactDOMProduction', () => { spyOn(console, 'error'); warning(false, 'Do cows go moo?'); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('should use prod React', () => { @@ -45,7 +45,7 @@ describe('ReactDOMProduction', () => { // no key warning void
{[]}
; - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('should handle a simple flow', () => { diff --git a/src/renderers/dom/shared/__tests__/CSSPropertyOperations-test.js b/src/renderers/dom/shared/__tests__/CSSPropertyOperations-test.js index e0133bcbf7..4acf6b3363 100644 --- a/src/renderers/dom/shared/__tests__/CSSPropertyOperations-test.js +++ b/src/renderers/dom/shared/__tests__/CSSPropertyOperations-test.js @@ -119,8 +119,8 @@ describe('CSSPropertyOperations', () => { spyOn(console, 'error'); var root = document.createElement('div'); ReactDOM.render(, root); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toEqual( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toEqual( 'Warning: Unsupported style property background-color. Did you mean backgroundColor? ' + 'Check the render method of `Comp`.' ); @@ -144,12 +144,12 @@ describe('CSSPropertyOperations', () => { ReactDOM.render(, root); ReactDOM.render(, root); - expect(console.error.calls.count()).toBe(2); - expect(console.error.calls.argsFor(0)[0]).toEqual( + expectDev(console.error.calls.count()).toBe(2); + expectDev(console.error.calls.argsFor(0)[0]).toEqual( 'Warning: Unsupported style property -ms-transform. Did you mean msTransform? ' + 'Check the render method of `Comp`.' ); - expect(console.error.calls.argsFor(1)[0]).toEqual( + expectDev(console.error.calls.argsFor(1)[0]).toEqual( 'Warning: Unsupported style property -webkit-transform. Did you mean WebkitTransform? ' + 'Check the render method of `Comp`.' ); @@ -172,12 +172,12 @@ describe('CSSPropertyOperations', () => { var root = document.createElement('div'); ReactDOM.render(, root); // msTransform is correct already and shouldn't warn - expect(console.error.calls.count()).toBe(2); - expect(console.error.calls.argsFor(0)[0]).toEqual( + expectDev(console.error.calls.count()).toBe(2); + expectDev(console.error.calls.argsFor(0)[0]).toEqual( 'Warning: Unsupported vendor-prefixed style property oTransform. ' + 'Did you mean OTransform? Check the render method of `Comp`.' ); - expect(console.error.calls.argsFor(1)[0]).toEqual( + expectDev(console.error.calls.argsFor(1)[0]).toEqual( 'Warning: Unsupported vendor-prefixed style property webkitTransform. ' + 'Did you mean WebkitTransform? Check the render method of `Comp`.' ); @@ -200,12 +200,12 @@ describe('CSSPropertyOperations', () => { spyOn(console, 'error'); var root = document.createElement('div'); ReactDOM.render(, root); - expect(console.error.calls.count()).toBe(2); - expect(console.error.calls.argsFor(0)[0]).toEqual( + expectDev(console.error.calls.count()).toBe(2); + expectDev(console.error.calls.argsFor(0)[0]).toEqual( 'Warning: Style property values shouldn\'t contain a semicolon. ' + 'Check the render method of `Comp`. Try "backgroundColor: blue" instead.', ); - expect(console.error.calls.argsFor(1)[0]).toEqual( + expectDev(console.error.calls.argsFor(1)[0]).toEqual( 'Warning: Style property values shouldn\'t contain a semicolon. ' + 'Check the render method of `Comp`. Try "color: red" instead.', ); @@ -224,8 +224,8 @@ describe('CSSPropertyOperations', () => { var root = document.createElement('div'); ReactDOM.render(, root); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toEqual( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toEqual( 'Warning: `NaN` is an invalid value for the `fontSize` css style property. ' + 'Check the render method of `Comp`.' ); diff --git a/src/renderers/dom/shared/__tests__/ReactBrowserEventEmitter-test.js b/src/renderers/dom/shared/__tests__/ReactBrowserEventEmitter-test.js index d76d4868a3..e4171e3d97 100644 --- a/src/renderers/dom/shared/__tests__/ReactBrowserEventEmitter-test.js +++ b/src/renderers/dom/shared/__tests__/ReactBrowserEventEmitter-test.js @@ -269,7 +269,7 @@ describe('ReactBrowserEventEmitter', () => { expect(idCallOrder[0]).toBe(getInternal(CHILD)); expect(idCallOrder[1]).toBe(getInternal(PARENT)); expect(idCallOrder[2]).toBe(getInternal(GRANDPARENT)); - expect(console.error.calls.count()).toEqual(0); + expectDev(console.error.calls.count()).toEqual(0); }); /** diff --git a/src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js b/src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js index 00d0bd445d..657472cc17 100644 --- a/src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js +++ b/src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js @@ -20,7 +20,7 @@ describe('ReactDOMComponent', () => { var inputValueTracking; function normalizeCodeLocInfo(str) { - return str.replace(/\(at .+?:\d+\)/g, '(at **)'); + return str && str.replace(/\(at .+?:\d+\)/g, '(at **)'); } beforeEach(() => { @@ -128,8 +128,8 @@ describe('ReactDOMComponent', () => { var stub = ReactTestUtils.renderIntoDocument(); style.position = 'absolute'; stub.setState({style: style}); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toEqual( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toEqual( 'Warning: `div` was passed a style object that has previously been ' + 'mutated. Mutating `style` is deprecated. Consider cloning it ' + 'beforehand. Check the `render` of `App`. Previous style: ' + @@ -142,22 +142,22 @@ describe('ReactDOMComponent', () => { style.background = 'green'; stub.setState({style: {background: 'green'}}); // already warned once for the same component and owner - expect(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.count()).toBe(1); style = {background: 'red'}; var div = document.createElement('div'); ReactDOM.render(, div); style.background = 'blue'; ReactDOM.render(, div); - expect(console.error.calls.count()).toBe(2); + expectDev(console.error.calls.count()).toBe(2); }); it('should warn for unknown prop', () => { spyOn(console, 'error'); var container = document.createElement('div'); ReactDOM.render(
, container); - expect(console.error.calls.count(0)).toBe(1); - expect(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe( + expectDev(console.error.calls.count(0)).toBe(1); + expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe( 'Warning: Unknown prop `foo` on
tag. Remove this prop from the element. ' + 'For details, see https://fb.me/react-unknown-prop\n in div (at **)' ); @@ -167,8 +167,8 @@ describe('ReactDOMComponent', () => { spyOn(console, 'error'); var container = document.createElement('div'); ReactDOM.render(
, container); - expect(console.error.calls.count(0)).toBe(1); - expect(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe( + expectDev(console.error.calls.count(0)).toBe(1); + expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe( 'Warning: Unknown props `foo`, `baz` on
tag. Remove these props from the element. ' + 'For details, see https://fb.me/react-unknown-prop\n in div (at **)' ); @@ -178,8 +178,8 @@ describe('ReactDOMComponent', () => { spyOn(console, 'error'); var container = document.createElement('div'); ReactDOM.render(
{}} />, container); - expect(console.error.calls.count(0)).toBe(1); - expect(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe( + expectDev(console.error.calls.count(0)).toBe(1); + expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe( 'Warning: Unknown event handler property onDblClick. Did you mean `onDoubleClick`?\n in div (at **)' ); }); @@ -194,7 +194,7 @@ describe('ReactDOMComponent', () => { } ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('should warn nicely about NaN in style', () => { @@ -205,8 +205,8 @@ describe('ReactDOMComponent', () => { ReactDOM.render(, div); ReactDOM.render(, div); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toEqual( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toEqual( 'Warning: `NaN` is an invalid value for the `fontSize` css style property.', ); }); @@ -362,8 +362,8 @@ describe('ReactDOMComponent', () => { ); ReactDOM.render(element, container); } - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toEqual( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toEqual( 'Warning: Invalid attribute name: `blah" onclick="beevil" noise="hi`' ); }); @@ -382,8 +382,8 @@ describe('ReactDOMComponent', () => { ); ReactDOM.render(afterUpdate, container); } - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toEqual( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toEqual( 'Warning: Invalid attribute name: `blah" onclick="beevil" noise="hi`' ); }); @@ -769,8 +769,8 @@ describe('ReactDOMComponent', () => { errorEvent.initEvent('error', false, false); container.getElementsByTagName('source')[0].dispatchEvent(errorEvent); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'onError called' ); }); @@ -830,13 +830,13 @@ describe('ReactDOMComponent', () => { }); var node = document.createElement('div'); ReactDOM.render(, node); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'ShadyComponent is using shady DOM. Using shady DOM with React can ' + 'cause things to break subtly.' ); mountComponent({is: 'custom-shady-div2'}); - expect(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.count()).toBe(1); } finally { document.createElement = defaultCreateElement; @@ -858,14 +858,14 @@ describe('ReactDOMComponent', () => { }; mountComponent({is: 'custom-shady-div'}); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'A component is using shady DOM. Using shady DOM with React can ' + 'cause things to break subtly.' ); mountComponent({is: 'custom-shady-div2'}); - expect(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.count()).toBe(1); } finally { document.createElement = defaultCreateElement; @@ -901,8 +901,8 @@ describe('ReactDOMComponent', () => { spyOn(console, 'error'); mountComponent({innerHTML: 'Hi Jim!'}); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'Directly setting property `innerHTML` is not permitted. ' ); }); @@ -934,14 +934,14 @@ describe('ReactDOMComponent', () => { it('should warn about contentEditable and children', () => { spyOn(console, 'error'); mountComponent({contentEditable: true, children: ''}); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain('contentEditable'); + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain('contentEditable'); }); it('should respect suppressContentEditableWarning', () => { spyOn(console, 'error'); mountComponent({contentEditable: true, children: '', suppressContentEditableWarning: true}); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('should validate against invalid styles', () => { @@ -1106,8 +1106,8 @@ describe('ReactDOMComponent', () => {
, container ); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain('contentEditable'); + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain('contentEditable'); }); it('should validate against invalid styles', () => { @@ -1237,8 +1237,8 @@ describe('ReactDOMComponent', () => { spyOn(console, 'error'); ReactTestUtils.renderIntoDocument(
); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: This browser doesn\'t support the `onScroll` event' ); }); @@ -1246,7 +1246,7 @@ describe('ReactDOMComponent', () => { it('should not warn when server-side rendering `onScroll`', () => { spyOn(console, 'error'); ReactDOMServer.renderToString(
{}}/>); - expect(console.error).not.toHaveBeenCalled(); + expectDev(console.error).not.toHaveBeenCalled(); }); }); @@ -1283,8 +1283,8 @@ describe('ReactDOMComponent', () => { spyOn(console, 'error'); ReactTestUtils.renderIntoDocument(
); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: validateDOMNesting(...): cannot appear as a child of ' + '
. See div > tr.' ); @@ -1295,8 +1295,8 @@ describe('ReactDOMComponent', () => { var p = document.createElement('p'); ReactDOM.render(

, p); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: validateDOMNesting(...):

cannot appear as a descendant ' + 'of

. See p > ... > p.' ); @@ -1319,17 +1319,17 @@ describe('ReactDOMComponent', () => { ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(3); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(3); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: validateDOMNesting(...): cannot appear as a child of ' + '. See Foo > table > Row > tr. Add a to your code to ' + 'match the DOM tree generated by the browser.' ); - expect(console.error.calls.argsFor(1)[0]).toBe( + expectDev(console.error.calls.argsFor(1)[0]).toBe( 'Warning: validateDOMNesting(...): Text nodes cannot appear as a ' + 'child of . See Row > tr > #text.' ); - expect(console.error.calls.argsFor(2)[0]).toBe( + expectDev(console.error.calls.argsFor(2)[0]).toBe( 'Warning: validateDOMNesting(...): Whitespace text nodes cannot ' + 'appear as a child of
. Make sure you don\'t have any extra ' + 'whitespace between tags on each line of your source code. See Foo > ' + @@ -1365,8 +1365,8 @@ describe('ReactDOMComponent', () => { render: () => , }); ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'See Viz1 > table > FancyRow > Row > tr.' ); @@ -1377,26 +1377,26 @@ describe('ReactDOMComponent', () => { render: () => , }); ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(2); - expect(console.error.calls.argsFor(1)[0]).toContain( + expectDev(console.error.calls.count()).toBe(2); + expectDev(console.error.calls.argsFor(1)[0]).toContain( 'See Viz2 > FancyTable > Table > table > FancyRow > Row > tr.' ); ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(3); - expect(console.error.calls.argsFor(2)[0]).toContain( + expectDev(console.error.calls.count()).toBe(3); + expectDev(console.error.calls.argsFor(2)[0]).toContain( 'See FancyTable > Table > table > FancyRow > Row > tr.' ); ReactTestUtils.renderIntoDocument(
); - expect(console.error.calls.count()).toBe(4); - expect(console.error.calls.argsFor(3)[0]).toContain( + expectDev(console.error.calls.count()).toBe(4); + expectDev(console.error.calls.argsFor(3)[0]).toContain( 'See table > FancyRow > Row > tr.' ); ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(5); - expect(console.error.calls.argsFor(4)[0]).toContain( + expectDev(console.error.calls.count()).toBe(5); + expectDev(console.error.calls.argsFor(4)[0]).toContain( 'See FancyTable > Table > table > tr.' ); @@ -1407,8 +1407,8 @@ describe('ReactDOMComponent', () => { } ReactTestUtils.renderIntoDocument(

); - expect(console.error.calls.count()).toBe(6); - expect(console.error.calls.argsFor(5)[0]).toContain( + expectDev(console.error.calls.count()).toBe(6); + expectDev(console.error.calls.argsFor(5)[0]).toContain( 'See Link > a > ... > Link > a.' ); }); @@ -1416,59 +1416,59 @@ describe('ReactDOMComponent', () => { it('should warn about incorrect casing on properties (ssr)', () => { spyOn(console, 'error'); ReactDOMServer.renderToString(React.createElement('input', {type: 'text', tabindex: '1'})); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain('tabIndex'); + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain('tabIndex'); }); it('should warn about incorrect casing on event handlers (ssr)', () => { spyOn(console, 'error'); ReactDOMServer.renderToString(React.createElement('input', {type: 'text', onclick: '1'})); ReactDOMServer.renderToString(React.createElement('input', {type: 'text', onKeydown: '1'})); - expect(console.error.calls.count()).toBe(2); - expect(console.error.calls.argsFor(0)[0]).toContain('onClick'); - expect(console.error.calls.argsFor(1)[0]).toContain('onKeyDown'); + expectDev(console.error.calls.count()).toBe(2); + expectDev(console.error.calls.argsFor(0)[0]).toContain('onClick'); + expectDev(console.error.calls.argsFor(1)[0]).toContain('onKeyDown'); }); it('should warn about incorrect casing on properties', () => { spyOn(console, 'error'); ReactTestUtils.renderIntoDocument(React.createElement('input', {type: 'text', tabindex: '1'})); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain('tabIndex'); + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain('tabIndex'); }); it('should warn about incorrect casing on event handlers', () => { spyOn(console, 'error'); ReactTestUtils.renderIntoDocument(React.createElement('input', {type: 'text', onclick: '1'})); ReactTestUtils.renderIntoDocument(React.createElement('input', {type: 'text', onKeydown: '1'})); - expect(console.error.calls.count()).toBe(2); - expect(console.error.calls.argsFor(0)[0]).toContain('onClick'); - expect(console.error.calls.argsFor(1)[0]).toContain('onKeyDown'); + expectDev(console.error.calls.count()).toBe(2); + expectDev(console.error.calls.argsFor(0)[0]).toContain('onClick'); + expectDev(console.error.calls.argsFor(1)[0]).toContain('onKeyDown'); }); it('should warn about class', () => { spyOn(console, 'error'); ReactDOMServer.renderToString(React.createElement('div', {class: 'muffins'})); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain('className'); + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain('className'); }); it('should warn about props that are no longer supported', () => { spyOn(console, 'error'); ReactTestUtils.renderIntoDocument(
); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); ReactTestUtils.renderIntoDocument(
{}} />); - expect(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.count()).toBe(1); ReactTestUtils.renderIntoDocument(
{}} />); - expect(console.error.calls.count()).toBe(2); + expectDev(console.error.calls.count()).toBe(2); }); it('gives source code refs for unknown prop warning', () => { spyOn(console, 'error'); ReactDOMServer.renderToString(
); ReactDOMServer.renderToString(); - expect(console.error.calls.count()).toBe(2); + expectDev(console.error.calls.count()).toBe(2); expect( normalizeCodeLocInfo(console.error.calls.argsFor(0)[0]) ).toBe( @@ -1487,10 +1487,10 @@ describe('ReactDOMComponent', () => { var container = document.createElement('div'); ReactDOMServer.renderToString(
, container); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); ReactDOMServer.renderToString(
, container); - expect(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.count()).toBe(1); expect( normalizeCodeLocInfo(console.error.calls.argsFor(0)[0]) ).toBe( @@ -1512,13 +1512,13 @@ describe('ReactDOMComponent', () => {
); - expect(console.error.calls.count()).toBe(2); + expectDev(console.error.calls.count()).toBe(2); - expect(console.error.calls.argsFor(0)[0]).toContain('className'); + expectDev(console.error.calls.argsFor(0)[0]).toContain('className'); var matches = console.error.calls.argsFor(0)[0].match(/.*\(.*:(\d+)\).*/); var previousLine = matches[1]; - expect(console.error.calls.argsFor(1)[0]).toContain('onClick'); + expectDev(console.error.calls.argsFor(1)[0]).toContain('onClick'); matches = console.error.calls.argsFor(1)[0].match(/.*\(.*:(\d+)\).*/); var currentLine = matches[1]; @@ -1563,13 +1563,13 @@ describe('ReactDOMComponent', () => { ReactDOMServer.renderToString(, container); - expect(console.error.calls.count()).toBe(2); + expectDev(console.error.calls.count()).toBe(2); - expect(console.error.calls.argsFor(0)[0]).toContain('className'); + expectDev(console.error.calls.argsFor(0)[0]).toContain('className'); var matches = console.error.calls.argsFor(0)[0].match(/.*\(.*:(\d+)\).*/); var previousLine = matches[1]; - expect(console.error.calls.argsFor(1)[0]).toContain('onClick'); + expectDev(console.error.calls.argsFor(1)[0]).toContain('onClick'); matches = console.error.calls.argsFor(1)[0].match(/.*\(.*:(\d+)\).*/); var currentLine = matches[1]; @@ -1584,13 +1584,13 @@ describe('ReactDOMComponent', () => { ReactTestUtils.renderIntoDocument(React.createElement('label', {for: 'test'})); ReactTestUtils.renderIntoDocument(React.createElement('input', {type: 'text', autofocus: true})); - expect(console.error.calls.count()).toBe(2); + expectDev(console.error.calls.count()).toBe(2); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: Unknown DOM property for. Did you mean htmlFor?\n in label' ); - expect(console.error.calls.argsFor(1)[0]).toBe( + expectDev(console.error.calls.argsFor(1)[0]).toBe( 'Warning: Unknown DOM property autofocus. Did you mean autoFocus?\n in input' ); }); diff --git a/src/renderers/dom/shared/__tests__/ReactDOMInvalidARIAHook-test.js b/src/renderers/dom/shared/__tests__/ReactDOMInvalidARIAHook-test.js index 3be7d6127d..c095889230 100644 --- a/src/renderers/dom/shared/__tests__/ReactDOMInvalidARIAHook-test.js +++ b/src/renderers/dom/shared/__tests__/ReactDOMInvalidARIAHook-test.js @@ -30,13 +30,13 @@ describe('ReactDOMInvalidARIAHook', () => { it('should allow valid aria-* props', () => { spyOn(console, 'error'); mountComponent({'aria-label': 'Bumble bees'}); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('should warn for one invalid aria-* prop', () => { spyOn(console, 'error'); mountComponent({'aria-badprop': 'maybe'}); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'Warning: Invalid aria prop `aria-badprop` on
tag. ' + 'For details, see https://fb.me/invalid-aria-prop' ); @@ -49,8 +49,8 @@ describe('ReactDOMInvalidARIAHook', () => { 'aria-malprop': 'Turbulent seas', } ); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'Warning: Invalid aria props `aria-badprop`, `aria-malprop` on
' + 'tag. For details, see https://fb.me/invalid-aria-prop' ); @@ -59,8 +59,8 @@ describe('ReactDOMInvalidARIAHook', () => { spyOn(console, 'error'); // The valid attribute name is aria-haspopup. mountComponent({'aria-hasPopup': 'true'}); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'Warning: Unknown ARIA attribute aria-hasPopup. ' + 'Did you mean aria-haspopup?' ); diff --git a/src/renderers/dom/shared/syntheticEvents/__tests__/SyntheticEvent-test.js b/src/renderers/dom/shared/syntheticEvents/__tests__/SyntheticEvent-test.js index f54d45411e..b1ca2d61e1 100644 --- a/src/renderers/dom/shared/syntheticEvents/__tests__/SyntheticEvent-test.js +++ b/src/renderers/dom/shared/syntheticEvents/__tests__/SyntheticEvent-test.js @@ -87,9 +87,9 @@ describe('SyntheticEvent', () => { expect(syntheticEvent.nativeEvent).toBe(null); expect(syntheticEvent.target).toBe(null); // once for each property accessed - expect(console.error.calls.count()).toBe(3); + expectDev(console.error.calls.count()).toBe(3); // assert the first warning for accessing `type` - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: This synthetic event is reused for performance reasons. If ' + 'you\'re seeing this, you\'re accessing the property `type` on a ' + 'released/nullified synthetic event. This is set to null. If you must ' + @@ -104,8 +104,8 @@ describe('SyntheticEvent', () => { var syntheticEvent = createEvent({srcElement: target}); syntheticEvent.destructor(); expect(syntheticEvent.type = 'MouseEvent').toBe('MouseEvent'); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: This synthetic event is reused for performance reasons. If ' + 'you\'re seeing this, you\'re setting the property `type` on a ' + 'released/nullified synthetic event. This is effectively a no-op. If you must ' + @@ -119,8 +119,8 @@ describe('SyntheticEvent', () => { var syntheticEvent = createEvent({}); SyntheticEvent.release(syntheticEvent); syntheticEvent.preventDefault(); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: This synthetic event is reused for performance reasons. If ' + 'you\'re seeing this, you\'re accessing the method `preventDefault` on a ' + 'released/nullified synthetic event. This is a no-op function. If you must ' + @@ -134,8 +134,8 @@ describe('SyntheticEvent', () => { var syntheticEvent = createEvent({}); SyntheticEvent.release(syntheticEvent); syntheticEvent.stopPropagation(); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: This synthetic event is reused for performance reasons. If ' + 'you\'re seeing this, you\'re accessing the method `stopPropagation` on a ' + 'released/nullified synthetic event. This is a no-op function. If you must ' + @@ -156,13 +156,13 @@ describe('SyntheticEvent', () => { } var instance = ReactDOM.render(
, element); ReactTestUtils.Simulate.click(ReactDOM.findDOMNode(instance)); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); // access a property to cause the warning event.nativeEvent; // eslint-disable-line no-unused-expressions - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: This synthetic event is reused for performance reasons. If ' + 'you\'re seeing this, you\'re accessing the property `nativeEvent` on a ' + 'released/nullified synthetic event. This is set to null. If you must ' + @@ -178,15 +178,15 @@ describe('SyntheticEvent', () => { SyntheticEvent.release(syntheticEvent); expect(syntheticEvent.foo).toBe('bar'); if (typeof Proxy === 'function') { - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toBe( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toBe( 'Warning: This synthetic event is reused for performance reasons. If ' + 'you\'re seeing this, you\'re adding a new property in the synthetic ' + 'event object. The property is never released. ' + 'See https://fb.me/react-event-pooling for more information.' ); } else { - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); } }); }); diff --git a/src/renderers/dom/shared/wrappers/__tests__/ReactDOMInput-test.js b/src/renderers/dom/shared/wrappers/__tests__/ReactDOMInput-test.js index efc315b2f5..e17f8e1142 100644 --- a/src/renderers/dom/shared/wrappers/__tests__/ReactDOMInput-test.js +++ b/src/renderers/dom/shared/wrappers/__tests__/ReactDOMInput-test.js @@ -50,7 +50,7 @@ describe('ReactDOMInput', () => { document.body.appendChild(container); var node = ReactDOM.findDOMNode(stub); - expect(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.count()).toBe(1); // Simulate a native change event setUntrackedValue(node, 'giraffe'); @@ -593,12 +593,12 @@ describe('ReactDOMInput', () => { ReactTestUtils.renderIntoDocument( ); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); ReactTestUtils.renderIntoDocument( ); - expect(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.count()).toBe(1); }); @@ -617,12 +617,12 @@ describe('ReactDOMInput', () => { ReactTestUtils.renderIntoDocument( ); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); ReactTestUtils.renderIntoDocument( ); - expect(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.count()).toBe(1); }); it('should update defaultValue to empty string', () => { @@ -634,21 +634,21 @@ describe('ReactDOMInput', () => { it('should warn if value is null', () => { ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.argsFor(0)[0]).toContain( '`value` prop on `input` should not be null. ' + 'Consider using the empty string to clear the component or `undefined` ' + 'for uncontrolled components.' ); ReactTestUtils.renderIntoDocument(); - expect(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.count()).toBe(1); }); it('should warn if checked and defaultChecked props are specified', () => { ReactTestUtils.renderIntoDocument( ); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'A component contains an input of type radio with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + @@ -660,14 +660,14 @@ describe('ReactDOMInput', () => { ReactTestUtils.renderIntoDocument( ); - expect(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.count()).toBe(1); }); it('should warn if value and defaultValue props are specified', () => { ReactTestUtils.renderIntoDocument( ); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'A component contains an input of type text with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + @@ -679,7 +679,7 @@ describe('ReactDOMInput', () => { ReactTestUtils.renderIntoDocument( ); - expect(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.count()).toBe(1); }); it('should warn if controlled input switches to uncontrolled (value is undefined)', () => { @@ -687,8 +687,8 @@ describe('ReactDOMInput', () => { var container = document.createElement('div'); ReactDOM.render(stub, container); ReactDOM.render(, container); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'A component is changing a controlled input of type text to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + @@ -701,8 +701,8 @@ describe('ReactDOMInput', () => { var container = document.createElement('div'); ReactDOM.render(stub, container); ReactDOM.render(, container); - expect(console.error.calls.count()).toBeGreaterThan(0); - expect(console.error.calls.argsFor(1)[0]).toContain( + expectDev(console.error.calls.count()).toBeGreaterThan(0); + expectDev(console.error.calls.argsFor(1)[0]).toContain( 'A component is changing a controlled input of type text to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + @@ -715,8 +715,8 @@ describe('ReactDOMInput', () => { var container = document.createElement('div'); ReactDOM.render(stub, container); ReactDOM.render(, container); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'A component is changing a controlled input of type text to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + @@ -729,8 +729,8 @@ describe('ReactDOMInput', () => { var container = document.createElement('div'); ReactDOM.render(stub, container); ReactDOM.render(, container); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'A component is changing an uncontrolled input of type text to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + @@ -743,8 +743,8 @@ describe('ReactDOMInput', () => { var container = document.createElement('div'); ReactDOM.render(stub, container); ReactDOM.render(, container); - expect(console.error.calls.count()).toBeGreaterThan(0); - expect(console.error.calls.argsFor(1)[0]).toContain( + expectDev(console.error.calls.count()).toBeGreaterThan(0); + expectDev(console.error.calls.argsFor(1)[0]).toContain( 'A component is changing an uncontrolled input of type text to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + @@ -757,8 +757,8 @@ describe('ReactDOMInput', () => { var container = document.createElement('div'); ReactDOM.render(stub, container); ReactDOM.render(, container); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'A component is changing a controlled input of type checkbox to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + @@ -771,8 +771,8 @@ describe('ReactDOMInput', () => { var container = document.createElement('div'); ReactDOM.render(stub, container); ReactDOM.render(, container); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'A component is changing a controlled input of type checkbox to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + @@ -785,8 +785,8 @@ describe('ReactDOMInput', () => { var container = document.createElement('div'); ReactDOM.render(stub, container); ReactDOM.render(, container); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'A component is changing a controlled input of type checkbox to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + @@ -799,8 +799,8 @@ describe('ReactDOMInput', () => { var container = document.createElement('div'); ReactDOM.render(stub, container); ReactDOM.render(, container); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'A component is changing an uncontrolled input of type checkbox to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + @@ -813,8 +813,8 @@ describe('ReactDOMInput', () => { var container = document.createElement('div'); ReactDOM.render(stub, container); ReactDOM.render(, container); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'A component is changing an uncontrolled input of type checkbox to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + @@ -827,8 +827,8 @@ describe('ReactDOMInput', () => { var container = document.createElement('div'); ReactDOM.render(stub, container); ReactDOM.render(, container); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'A component is changing a controlled input of type radio to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + @@ -841,8 +841,8 @@ describe('ReactDOMInput', () => { var container = document.createElement('div'); ReactDOM.render(stub, container); ReactDOM.render(, container); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'A component is changing a controlled input of type radio to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + @@ -855,8 +855,8 @@ describe('ReactDOMInput', () => { var container = document.createElement('div'); ReactDOM.render(stub, container); ReactDOM.render(, container); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'A component is changing a controlled input of type radio to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + @@ -869,8 +869,8 @@ describe('ReactDOMInput', () => { var container = document.createElement('div'); ReactDOM.render(stub, container); ReactDOM.render(, container); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'A component is changing an uncontrolled input of type radio to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + @@ -883,8 +883,8 @@ describe('ReactDOMInput', () => { var container = document.createElement('div'); ReactDOM.render(stub, container); ReactDOM.render(, container); - expect(console.error.calls.count()).toBe(1); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.count()).toBe(1); + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'A component is changing an uncontrolled input of type radio to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + @@ -899,7 +899,7 @@ describe('ReactDOMInput', () => { ReactDOM.render(, container); ReactDOM.render( null} />, container); ReactDOM.render(, container); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('should not warn if radio value changes but never becomes uncontrolled', () => { @@ -913,14 +913,14 @@ describe('ReactDOMInput', () => { checked={false} onChange={() => null} />, container); - expect(console.error.calls.count()).toBe(0); + expectDev(console.error.calls.count()).toBe(0); }); it('should warn if radio checked false changes to become uncontrolled', () => { var container = document.createElement('div'); ReactDOM.render( null} />, container); ReactDOM.render(, container); - expect(console.error.calls.argsFor(0)[0]).toContain( + expectDev(console.error.calls.argsFor(0)[0]).toContain( 'A component is changing a controlled input of type radio to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + diff --git a/src/renderers/dom/shared/wrappers/__tests__/ReactDOMOption-test.js b/src/renderers/dom/shared/wrappers/__tests__/ReactDOMOption-test.js index 952217dfb8..881ff7d32b 100644 --- a/src/renderers/dom/shared/wrappers/__tests__/ReactDOMOption-test.js +++ b/src/renderers/dom/shared/wrappers/__tests__/ReactDOMOption-test.js @@ -39,8 +39,8 @@ describe('ReactDOMOption', () => { expect(node.innerHTML).toBe('1 2'); ReactTestUtils.renderIntoDocument(