Change warnings to use expectDev
Ben Alpert committed
Nov 13, 2016 at 14:16 UTC
4aa9cfb6ba33efb7bb823721df948f78444df673
42 files changed
+448
-447
src/addons/__tests__/ReactFragment-test.js
+8
-8
@@ -75,8 +75,8 @@ describe('ReactFragment', () => {
75
76
ReactFragment.create({1: <span />, 2: <span />});
77
78
- expect(console.error.calls.count()).toBe(1);
79
- expect(console.error.calls.argsFor(0)[0]).toContain(
78
+ expectDev(console.error.calls.count()).toBe(1);
79
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
80
'Child objects should have non-numeric keys so ordering is preserved.'
81
);
82
});
@@ -84,8 +84,8 @@ describe('ReactFragment', () => {
84
it('should warn if passing null to createFragment', () => {
85
spyOn(console, 'error');
86
ReactFragment.create(null);
87
- expect(console.error.calls.count()).toBe(1);
88
- expect(console.error.calls.argsFor(0)[0]).toContain(
87
+ expectDev(console.error.calls.count()).toBe(1);
88
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
89
'React.addons.createFragment only accepts a single object.'
90
);
91
});
@@ -93,8 +93,8 @@ describe('ReactFragment', () => {
93
it('should warn if passing an array to createFragment', () => {
94
spyOn(console, 'error');
95
ReactFragment.create([]);
96
- expect(console.error.calls.count()).toBe(1);
97
- expect(console.error.calls.argsFor(0)[0]).toContain(
96
+ expectDev(console.error.calls.count()).toBe(1);
97
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
98
'React.addons.createFragment only accepts a single object.'
99
);
100
});
@@ -102,8 +102,8 @@ describe('ReactFragment', () => {
102
it('should warn if passing a ReactElement to createFragment', () => {
103
spyOn(console, 'error');
104
ReactFragment.create(<div />);
105
- expect(console.error.calls.count()).toBe(1);
106
- expect(console.error.calls.argsFor(0)[0]).toContain(
105
+ expectDev(console.error.calls.count()).toBe(1);
106
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
107
'React.addons.createFragment does not accept a ReactElement without a ' +
108
'wrapper object.'
109
);
src/addons/transitions/__tests__/ReactCSSTransitionGroup-test.js
+3
-3
@@ -45,7 +45,7 @@ describe('ReactCSSTransitionGroup', () => {
45
);
46
47
// Warning about the missing transitionLeaveTimeout prop
48
- expect(console.error.calls.count()).toBe(1);
48
+ expectDev(console.error.calls.count()).toBe(1);
49
});
50
51
it('should not warn if timeouts is zero', () => {
@@ -61,7 +61,7 @@ describe('ReactCSSTransitionGroup', () => {
61
container
62
);
63
64
- expect(console.error.calls.count()).toBe(0);
64
+ expectDev(console.error.calls.count()).toBe(0);
65
});
66
67
it('should clean-up silently after the timeout elapses', () => {
@@ -103,7 +103,7 @@ describe('ReactCSSTransitionGroup', () => {
103
}
104
105
// No warnings
106
- expect(console.error.calls.count()).toBe(0);
106
+ expectDev(console.error.calls.count()).toBe(0);
107
108
// The leaving child has been removed
109
expect(ReactDOM.findDOMNode(a).childNodes.length).toBe(1);
src/addons/transitions/__tests__/ReactTransitionGroup-test.js
+4
-4
@@ -21,7 +21,7 @@ describe('ReactTransitionGroup', () => {
21
var container;
22
23
function normalizeCodeLocInfo(str) {
24
- return str.replace(/\(at .+?:\d+\)/g, '(at **)');
24
+ return str && str.replace(/\(at .+?:\d+\)/g, '(at **)');
25
}
26
27
beforeEach(() => {
@@ -308,14 +308,14 @@ describe('ReactTransitionGroup', () => {
308
309
ReactDOM.render(<Component />, container);
310
311
- expect(console.error.calls.count()).toBe(2);
312
- expect(console.error.calls.argsFor(0)[0]).toBe(
311
+ expectDev(console.error.calls.count()).toBe(2);
312
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
313
'Warning: flattenChildren(...): ' +
314
'Encountered two children with the same key, `1`. ' +
315
'Child keys must be unique; when two children share a key, ' +
316
'only the first child will be used.'
317
);
318
- expect(normalizeCodeLocInfo(console.error.calls.argsFor(1)[0])).toBe(
318
+ expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(1)[0])).toBe(
319
'Warning: flattenChildren(...): ' +
320
'Encountered two children with the same key, `1`. ' +
321
'Child keys must be unique; when two children share a key, ' +
src/isomorphic/classic/__tests__/ReactContextValidator-test.js
+11
-11
@@ -23,7 +23,7 @@ var ReactTestUtils;
23
24
describe('ReactContextValidator', () => {
25
function normalizeCodeLocInfo(str) {
26
- return str.replace(/\(at .+?:\d+\)/g, '(at **)');
26
+ return str && str.replace(/\(at .+?:\d+\)/g, '(at **)');
27
}
28
29
beforeEach(() => {
@@ -146,8 +146,8 @@ describe('ReactContextValidator', () => {
146
147
ReactTestUtils.renderIntoDocument(<Component />);
148
149
- expect(console.error.calls.count()).toBe(1);
150
- expect(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
149
+ expectDev(console.error.calls.count()).toBe(1);
150
+ expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
151
'Warning: Failed context type: ' +
152
'The context `foo` is marked as required in `Component`, but its value ' +
153
'is `undefined`.\n' +
@@ -175,7 +175,7 @@ describe('ReactContextValidator', () => {
175
);
176
177
// Previous call should not error
178
- expect(console.error.calls.count()).toBe(1);
178
+ expectDev(console.error.calls.count()).toBe(1);
179
180
var ComponentInFooNumberContext = React.createClass({
181
childContextTypes: {
@@ -195,8 +195,8 @@ describe('ReactContextValidator', () => {
195
196
ReactTestUtils.renderIntoDocument(<ComponentInFooNumberContext fooValue={123} />);
197
198
- expect(console.error.calls.count()).toBe(2);
199
- expect(normalizeCodeLocInfo(console.error.calls.argsFor(1)[0])).toBe(
198
+ expectDev(console.error.calls.count()).toBe(2);
199
+ expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(1)[0])).toBe(
200
'Warning: Failed context type: ' +
201
'Invalid context `foo` of type `number` supplied ' +
202
'to `Component`, expected `string`.\n' +
@@ -224,8 +224,8 @@ describe('ReactContextValidator', () => {
224
});
225
226
ReactTestUtils.renderIntoDocument(<Component testContext={{bar: 123}} />);
227
- expect(console.error.calls.count()).toBe(1);
228
- expect(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
227
+ expectDev(console.error.calls.count()).toBe(1);
228
+ expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
229
'Warning: Failed childContext type: ' +
230
'The child context `foo` is marked as required in `Component`, but its ' +
231
'value is `undefined`.\n' +
@@ -234,8 +234,8 @@ describe('ReactContextValidator', () => {
234
235
ReactTestUtils.renderIntoDocument(<Component testContext={{foo: 123}} />);
236
237
- expect(console.error.calls.count()).toBe(2);
238
- expect(normalizeCodeLocInfo(console.error.calls.argsFor(1)[0])).toBe(
237
+ expectDev(console.error.calls.count()).toBe(2);
238
+ expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(1)[0])).toBe(
239
'Warning: Failed childContext type: ' +
240
'Invalid child context `foo` of type `number` ' +
241
'supplied to `Component`, expected `string`.\n' +
@@ -251,7 +251,7 @@ describe('ReactContextValidator', () => {
251
);
252
253
// Previous calls should not log errors
254
- expect(console.error.calls.count()).toBe(2);
254
+ expectDev(console.error.calls.count()).toBe(2);
255
});
256
257
});
src/isomorphic/classic/class/__tests__/ReactBind-test.js
+3
-3
@@ -123,8 +123,8 @@ describe('autobinding', () => {
123
124
ReactTestUtils.renderIntoDocument(<TestBindComponent />);
125
126
- expect(console.error.calls.count()).toBe(1);
127
- expect(console.error.calls.argsFor(0)[0]).toBe(
126
+ expectDev(console.error.calls.count()).toBe(1);
127
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
128
'Warning: bind(): You are binding a component method to the component. ' +
129
'React does this for you automatically in a high-performance ' +
130
'way, so you can safely remove this call. See TestBindComponent'
@@ -151,7 +151,7 @@ describe('autobinding', () => {
151
152
ReactTestUtils.renderIntoDocument(<TestBindComponent />);
153
154
- expect(console.error.calls.count()).toBe(0);
154
+ expectDev(console.error.calls.count()).toBe(0);
155
});
156
157
});
src/isomorphic/classic/class/__tests__/ReactBindOptout-test.js
+2
-2
@@ -186,7 +186,7 @@ describe('autobind optout', () => {
186
187
ReactTestUtils.renderIntoDocument(<TestBindComponent />);
188
189
- expect(console.error.calls.count()).toBe(0);
189
+ expectDev(console.error.calls.count()).toBe(0);
190
});
191
192
it('does not warn if you pass an manually bound method to setState', () => {
@@ -210,7 +210,7 @@ describe('autobind optout', () => {
210
211
ReactTestUtils.renderIntoDocument(<TestBindComponent />);
212
213
- expect(console.error.calls.count()).toBe(0);
213
+ expectDev(console.error.calls.count()).toBe(0);
214
});
215
216
});
src/isomorphic/classic/class/__tests__/ReactClass-test.js
+19
-19
@@ -69,8 +69,8 @@ describe('ReactClass-spec', () => {
69
return <span>{this.props.prop}</span>;
70
},
71
});
72
- expect(console.error.calls.count()).toBe(1);
73
- expect(console.error.calls.argsFor(0)[0]).toBe(
72
+ expectDev(console.error.calls.count()).toBe(1);
73
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
74
'Warning: Component: prop type `prop` is invalid; ' +
75
'it must be a function, usually from React.PropTypes.'
76
);
@@ -87,8 +87,8 @@ describe('ReactClass-spec', () => {
87
return <span>{this.props.prop}</span>;
88
},
89
});
90
- expect(console.error.calls.count()).toBe(1);
91
- expect(console.error.calls.argsFor(0)[0]).toBe(
90
+ expectDev(console.error.calls.count()).toBe(1);
91
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
92
'Warning: Component: context type `prop` is invalid; ' +
93
'it must be a function, usually from React.PropTypes.'
94
);
@@ -105,8 +105,8 @@ describe('ReactClass-spec', () => {
105
return <span>{this.props.prop}</span>;
106
},
107
});
108
- expect(console.error.calls.count()).toBe(1);
109
- expect(console.error.calls.argsFor(0)[0]).toBe(
108
+ expectDev(console.error.calls.count()).toBe(1);
109
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
110
'Warning: Component: child context type `prop` is invalid; ' +
111
'it must be a function, usually from React.PropTypes.'
112
);
@@ -123,8 +123,8 @@ describe('ReactClass-spec', () => {
123
return <div />;
124
},
125
});
126
- expect(console.error.calls.count()).toBe(1);
127
- expect(console.error.calls.argsFor(0)[0]).toBe(
126
+ expectDev(console.error.calls.count()).toBe(1);
127
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
128
'Warning: A component has a method called componentShouldUpdate(). Did you ' +
129
'mean shouldComponentUpdate()? The name is phrased as a question ' +
130
'because the function is expected to return a value.'
@@ -139,8 +139,8 @@ describe('ReactClass-spec', () => {
139
return <div />;
140
},
141
});
142
- expect(console.error.calls.count()).toBe(2);
143
- expect(console.error.calls.argsFor(1)[0]).toBe(
142
+ expectDev(console.error.calls.count()).toBe(2);
143
+ expectDev(console.error.calls.argsFor(1)[0]).toBe(
144
'Warning: NamedComponent has a method called componentShouldUpdate(). Did you ' +
145
'mean shouldComponentUpdate()? The name is phrased as a question ' +
146
'because the function is expected to return a value.'
@@ -157,8 +157,8 @@ describe('ReactClass-spec', () => {
157
return <div />;
158
},
159
});
160
- expect(console.error.calls.count()).toBe(1);
161
- expect(console.error.calls.argsFor(0)[0]).toBe(
160
+ expectDev(console.error.calls.count()).toBe(1);
161
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
162
'Warning: A component has a method called componentWillRecieveProps(). Did you ' +
163
'mean componentWillReceiveProps()?'
164
);
@@ -206,20 +206,20 @@ describe('ReactClass-spec', () => {
206
return <div />;
207
},
208
});
209
- expect(console.error.calls.count()).toBe(4);
210
- expect(console.error.calls.argsFor(0)[0]).toBe(
209
+ expectDev(console.error.calls.count()).toBe(4);
210
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
211
'createClass(...): `mixins` is now a static property and should ' +
212
'be defined inside "statics".'
213
);
214
- expect(console.error.calls.argsFor(1)[0]).toBe(
214
+ expectDev(console.error.calls.argsFor(1)[0]).toBe(
215
'createClass(...): `propTypes` is now a static property and should ' +
216
'be defined inside "statics".'
217
);
218
- expect(console.error.calls.argsFor(2)[0]).toBe(
218
+ expectDev(console.error.calls.argsFor(2)[0]).toBe(
219
'createClass(...): `contextTypes` is now a static property and ' +
220
'should be defined inside "statics".'
221
);
222
- expect(console.error.calls.argsFor(3)[0]).toBe(
222
+ expectDev(console.error.calls.argsFor(3)[0]).toBe(
223
'createClass(...): `childContextTypes` is now a static property and ' +
224
'should be defined inside "statics".'
225
);
@@ -343,8 +343,8 @@ describe('ReactClass-spec', () => {
343
});
344
345
expect(() => Component()).toThrow();
346
- expect(console.error.calls.count()).toBe(1);
347
- expect(console.error.calls.argsFor(0)[0]).toBe(
346
+ expectDev(console.error.calls.count()).toBe(1);
347
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
348
'Warning: Something is calling a React component directly. Use a ' +
349
'factory or JSX instead. See: https://fb.me/react-legacyfactory'
350
);
src/isomorphic/classic/class/__tests__/ReactClassMixin-test.js
+8
-8
@@ -321,8 +321,8 @@ describe('ReactClass-mixin', () => {
321
},
322
});
323
324
- expect(console.error.calls.count()).toBe(1);
325
- expect(console.error.calls.argsFor(0)[0]).toBe(
324
+ expectDev(console.error.calls.count()).toBe(1);
325
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
326
'Warning: ReactClass: You\'re attempting to include a mixin that is ' +
327
'either null or not an object. Check the mixins included by the ' +
328
'component, as well as any mixins they include themselves. ' +
@@ -341,8 +341,8 @@ describe('ReactClass-mixin', () => {
341
},
342
});
343
344
- expect(console.error.calls.count()).toBe(1);
345
- expect(console.error.calls.argsFor(0)[0]).toBe(
344
+ expectDev(console.error.calls.count()).toBe(1);
345
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
346
'Warning: ReactClass: You\'re attempting to include a mixin that is ' +
347
'either null or not an object. Check the mixins included by the ' +
348
'component, as well as any mixins they include themselves. ' +
@@ -365,8 +365,8 @@ describe('ReactClass-mixin', () => {
365
},
366
});
367
368
- expect(console.error.calls.count()).toBe(1);
369
- expect(console.error.calls.argsFor(0)[0]).toBe(
368
+ expectDev(console.error.calls.count()).toBe(1);
369
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
370
'Warning: ReactClass: You\'re attempting to include a mixin that is ' +
371
'either null or not an object. Check the mixins included by the ' +
372
'component, as well as any mixins they include themselves. ' +
@@ -389,8 +389,8 @@ describe('ReactClass-mixin', () => {
389
},
390
});
391
392
- expect(console.error.calls.count()).toBe(1);
393
- expect(console.error.calls.argsFor(0)[0]).toBe(
392
+ expectDev(console.error.calls.count()).toBe(1);
393
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
394
'Warning: ReactClass: You\'re attempting to include a mixin that is ' +
395
'either null or not an object. Check the mixins included by the ' +
396
'component, as well as any mixins they include themselves. ' +
src/isomorphic/classic/element/__tests__/ReactElement-test.js
+18
-18
@@ -76,10 +76,10 @@ describe('ReactElement', () => {
76
);
77
},
78
});
79
- expect(console.error.calls.count()).toBe(0);
79
+ expectDev(console.error.calls.count()).toBe(0);
80
ReactDOM.render(<Parent />, container);
81
- expect(console.error.calls.count()).toBe(1);
82
- expect(console.error.calls.argsFor(0)[0]).toContain(
81
+ expectDev(console.error.calls.count()).toBe(1);
82
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
83
'Child: `key` is not a prop. Trying to access it will result ' +
84
'in `undefined` being returned. If you need to access the same ' +
85
'value within the child component, you should pass it as a different ' +
@@ -106,10 +106,10 @@ describe('ReactElement', () => {
106
);
107
},
108
});
109
- expect(console.error.calls.count()).toBe(0);
109
+ expectDev(console.error.calls.count()).toBe(0);
110
ReactDOM.render(<Parent />, container);
111
- expect(console.error.calls.count()).toBe(1);
112
- expect(console.error.calls.argsFor(0)[0]).toContain(
111
+ expectDev(console.error.calls.count()).toBe(1);
112
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
113
'Child: `key` is not a prop. Trying to access it will result ' +
114
'in `undefined` being returned. If you need to access the same ' +
115
'value within the child component, you should pass it as a different ' +
@@ -120,10 +120,10 @@ describe('ReactElement', () => {
120
it('should warn when `key` is being accessed on a host element', () => {
121
spyOn(console, 'error');
122
var element = <div key="3" />;
123
- expect(console.error.calls.count()).toBe(0);
123
+ expectDev(console.error.calls.count()).toBe(0);
124
void element.props.key;
125
- expect(console.error.calls.count()).toBe(1);
126
- expect(console.error.calls.argsFor(0)[0]).toContain(
125
+ expectDev(console.error.calls.count()).toBe(1);
126
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
127
'div: `key` is not a prop. Trying to access it will result ' +
128
'in `undefined` being returned. If you need to access the same ' +
129
'value within the child component, you should pass it as a different ' +
@@ -148,10 +148,10 @@ describe('ReactElement', () => {
148
);
149
},
150
});
151
- expect(console.error.calls.count()).toBe(0);
151
+ expectDev(console.error.calls.count()).toBe(0);
152
ReactDOM.render(<Parent />, container);
153
- expect(console.error.calls.count()).toBe(1);
154
- expect(console.error.calls.argsFor(0)[0]).toContain(
153
+ expectDev(console.error.calls.count()).toBe(1);
154
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
155
'Child: `ref` is not a prop. Trying to access it will result ' +
156
'in `undefined` being returned. If you need to access the same ' +
157
'value within the child component, you should pass it as a different ' +
@@ -280,7 +280,7 @@ describe('ReactElement', () => {
280
children: 'text',
281
}, a);
282
expect(element.props.children).toBe(a);
283
- expect(console.error.calls.count()).toBe(0);
283
+ expectDev(console.error.calls.count()).toBe(0);
284
});
285
286
it('does not override children if no rest args are provided', () => {
@@ -289,7 +289,7 @@ describe('ReactElement', () => {
289
children: 'text',
290
});
291
expect(element.props.children).toBe('text');
292
- expect(console.error.calls.count()).toBe(0);
292
+ expectDev(console.error.calls.count()).toBe(0);
293
});
294
295
it('overrides children if null is provided as an argument', () => {
@@ -298,7 +298,7 @@ describe('ReactElement', () => {
298
children: 'text',
299
}, null);
300
expect(element.props.children).toBe(null);
301
- expect(console.error.calls.count()).toBe(0);
301
+ expectDev(console.error.calls.count()).toBe(0);
302
});
303
304
it('merges rest arguments onto the children prop in an array', () => {
@@ -308,7 +308,7 @@ describe('ReactElement', () => {
308
var c = 3;
309
var element = React.createFactory(ComponentClass)(null, a, b, c);
310
expect(element.props.children).toEqual([1, 2, 3]);
311
- expect(console.error.calls.count()).toBe(0);
311
+ expectDev(console.error.calls.count()).toBe(0);
312
});
313
314
// NOTE: We're explicitly not using JSX here. This is intended to test
@@ -332,7 +332,7 @@ describe('ReactElement', () => {
332
333
var element = React.createElement(StaticMethodComponentClass);
334
expect(element.type.someStaticMethod()).toBe('someReturnValue');
335
- expect(console.error.calls.count()).toBe(0);
335
+ expectDev(console.error.calls.count()).toBe(0);
336
});
337
338
// NOTE: We're explicitly not using JSX here. This is intended to test
@@ -477,7 +477,7 @@ describe('ReactElement', () => {
477
});
478
var test = ReactTestUtils.renderIntoDocument(<Test value={+undefined} />);
479
expect(test.props.value).toBeNaN();
480
- expect(console.error.calls.count()).toBe(0);
480
+ expectDev(console.error.calls.count()).toBe(0);
481
});
482
483
// NOTE: We're explicitly not using JSX here. This is intended to test
src/isomorphic/classic/element/__tests__/ReactElementClone-test.js
+7
-7
@@ -250,8 +250,8 @@ describe('ReactElementClone', () => {
250
251
React.cloneElement(<div />, null, [<div />, <div />]);
252
253
- expect(console.error.calls.count()).toBe(1);
254
- expect(console.error.calls.argsFor(0)[0]).toContain(
253
+ expectDev(console.error.calls.count()).toBe(1);
254
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
255
'Each child in an array or iterator should have a unique "key" prop.'
256
);
257
});
@@ -261,7 +261,7 @@ describe('ReactElementClone', () => {
261
262
React.cloneElement(<div />, null, [<div key="#1" />, <div key="#2" />]);
263
264
- expect(console.error.calls.count()).toBe(0);
264
+ expectDev(console.error.calls.count()).toBe(0);
265
});
266
267
it('does not warn when the element is directly in rest args', () => {
@@ -269,7 +269,7 @@ describe('ReactElementClone', () => {
269
270
React.cloneElement(<div />, null, <div />, <div />);
271
272
- expect(console.error.calls.count()).toBe(0);
272
+ expectDev(console.error.calls.count()).toBe(0);
273
});
274
275
it('does not warn when the array contains a non-element', () => {
@@ -277,7 +277,7 @@ describe('ReactElementClone', () => {
277
278
React.cloneElement(<div />, null, [{}, {}]);
279
280
- expect(console.error.calls.count()).toBe(0);
280
+ expectDev(console.error.calls.count()).toBe(0);
281
});
282
283
it('should check declared prop types after clone', () => {
@@ -304,8 +304,8 @@ describe('ReactElementClone', () => {
304
},
305
});
306
ReactTestUtils.renderIntoDocument(React.createElement(GrandParent));
307
- expect(console.error.calls.count()).toBe(1);
308
- expect(console.error.calls.argsFor(0)[0]).toBe(
307
+ expectDev(console.error.calls.count()).toBe(1);
308
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
309
'Warning: Failed prop type: ' +
310
'Invalid prop `color` of type `number` supplied to `Component`, ' +
311
'expected `string`.\n' +
src/isomorphic/classic/element/__tests__/ReactElementValidator-test.js
+43
-43
@@ -20,7 +20,7 @@ var ReactTestUtils;
20
21
describe('ReactElementValidator', () => {
22
function normalizeCodeLocInfo(str) {
23
- return str.replace(/\(at .+?:\d+\)/g, '(at **)');
23
+ return str && str.replace(/\(at .+?:\d+\)/g, '(at **)');
24
}
25
26
var ComponentClass;
@@ -44,8 +44,8 @@ describe('ReactElementValidator', () => {
44
45
Component(null, [Component(), Component()]);
46
47
- expect(console.error.calls.count()).toBe(1);
48
- expect(console.error.calls.argsFor(0)[0]).toContain(
47
+ expectDev(console.error.calls.count()).toBe(1);
48
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
49
'Each child in an array or iterator should have a unique "key" prop.'
50
);
51
});
@@ -74,8 +74,8 @@ describe('ReactElementValidator', () => {
74
React.createElement(ComponentWrapper)
75
);
76
77
- expect(console.error.calls.count()).toBe(1);
78
- expect(console.error.calls.argsFor(0)[0]).toContain(
77
+ expectDev(console.error.calls.count()).toBe(1);
78
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
79
'Each child in an array or iterator should have a unique "key" prop. ' +
80
'Check the render method of `InnerClass`. ' +
81
'It was passed a child from ComponentWrapper. '
@@ -98,8 +98,8 @@ describe('ReactElementValidator', () => {
98
];
99
ReactTestUtils.renderIntoDocument(<Anonymous>{divs}</Anonymous>);
100
101
- expect(console.error.calls.count()).toBe(1);
102
- expect(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
101
+ expectDev(console.error.calls.count()).toBe(1);
102
+ expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
103
'Warning: Each child in an array or iterator should have a unique ' +
104
'"key" prop. See https://fb.me/react-warning-keys for more information.\n' +
105
' in div (at **)'
@@ -115,8 +115,8 @@ describe('ReactElementValidator', () => {
115
];
116
ReactTestUtils.renderIntoDocument(<div>{divs}</div>);
117
118
- expect(console.error.calls.count()).toBe(1);
119
- expect(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
118
+ expectDev(console.error.calls.count()).toBe(1);
119
+ expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
120
'Warning: Each child in an array or iterator should have a unique ' +
121
'"key" prop. Check the top-level render call using <div>. See ' +
122
'https://fb.me/react-warning-keys for more information.\n' +
@@ -147,8 +147,8 @@ describe('ReactElementValidator', () => {
147
148
ReactTestUtils.renderIntoDocument(<GrandParent />);
149
150
- expect(console.error.calls.count()).toBe(1);
151
- expect(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
150
+ expectDev(console.error.calls.count()).toBe(1);
151
+ expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
152
'Warning: Each child in an array or iterator should have a unique ' +
153
'"key" prop. Check the render method of `Component`. See ' +
154
'https://fb.me/react-warning-keys for more information.\n' +
@@ -180,7 +180,7 @@ describe('ReactElementValidator', () => {
180
</Wrapper>
181
);
182
183
- expect(console.error.calls.count()).toBe(0);
183
+ expectDev(console.error.calls.count()).toBe(0);
184
});
185
186
it('warns for keys for iterables of elements in rest args', () => {
@@ -201,8 +201,8 @@ describe('ReactElementValidator', () => {
201
202
Component(null, iterable);
203
204
- expect(console.error.calls.count()).toBe(1);
205
- expect(console.error.calls.argsFor(0)[0]).toContain(
204
+ expectDev(console.error.calls.count()).toBe(1);
205
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
206
'Each child in an array or iterator should have a unique "key" prop.'
207
);
208
});
@@ -213,7 +213,7 @@ describe('ReactElementValidator', () => {
213
214
Component(null, [Component({key: '#1'}), Component({key: '#2'})]);
215
216
- expect(console.error.calls.count()).toBe(0);
216
+ expectDev(console.error.calls.count()).toBe(0);
217
});
218
219
it('does not warns for iterable elements with keys', () => {
@@ -237,7 +237,7 @@ describe('ReactElementValidator', () => {
237
238
Component(null, iterable);
239
240
- expect(console.error.calls.count()).toBe(0);
240
+ expectDev(console.error.calls.count()).toBe(0);
241
});
242
243
it('does not warn when the element is directly in rest args', () => {
@@ -246,7 +246,7 @@ describe('ReactElementValidator', () => {
246
247
Component(null, Component(), Component());
248
249
- expect(console.error.calls.count()).toBe(0);
249
+ expectDev(console.error.calls.count()).toBe(0);
250
});
251
252
it('does not warn when the array contains a non-element', () => {
@@ -255,7 +255,7 @@ describe('ReactElementValidator', () => {
255
256
Component(null, [{}, {}]);
257
258
- expect(console.error.calls.count()).toBe(0);
258
+ expectDev(console.error.calls.count()).toBe(0);
259
});
260
261
// TODO: These warnings currently come from the composite component, but
@@ -280,7 +280,7 @@ describe('ReactElementValidator', () => {
280
},
281
});
282
ReactTestUtils.renderIntoDocument(React.createElement(ParentComp));
283
- expect(console.error.calls.argsFor(0)[0]).toBe(
283
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
284
'Warning: Failed prop type: ' +
285
'Invalid prop `color` of type `number` supplied to `MyComp`, ' +
286
'expected `string`.\n' +
@@ -295,29 +295,29 @@ describe('ReactElementValidator', () => {
295
React.createElement(null);
296
React.createElement(true);
297
React.createElement(123);
298
- expect(console.error.calls.count()).toBe(4);
299
- expect(console.error.calls.argsFor(0)[0]).toBe(
298
+ expectDev(console.error.calls.count()).toBe(4);
299
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
300
'Warning: React.createElement: type should not be null, undefined, ' +
301
'boolean, or number. It should be a string (for DOM elements) or a ' +
302
'ReactClass (for composite components).'
303
);
304
- expect(console.error.calls.argsFor(1)[0]).toBe(
304
+ expectDev(console.error.calls.argsFor(1)[0]).toBe(
305
'Warning: React.createElement: type should not be null, undefined, ' +
306
'boolean, or number. It should be a string (for DOM elements) or a ' +
307
'ReactClass (for composite components).'
308
);
309
- expect(console.error.calls.argsFor(2)[0]).toBe(
309
+ expectDev(console.error.calls.argsFor(2)[0]).toBe(
310
'Warning: React.createElement: type should not be null, undefined, ' +
311
'boolean, or number. It should be a string (for DOM elements) or a ' +
312
'ReactClass (for composite components).'
313
);
314
- expect(console.error.calls.argsFor(3)[0]).toBe(
314
+ expectDev(console.error.calls.argsFor(3)[0]).toBe(
315
'Warning: React.createElement: type should not be null, undefined, ' +
316
'boolean, or number. It should be a string (for DOM elements) or a ' +
317
'ReactClass (for composite components).'
318
);
319
React.createElement('div');
320
- expect(console.error.calls.count()).toBe(4);
320
+ expectDev(console.error.calls.count()).toBe(4);
321
});
322
323
it('includes the owner name when passing null, undefined, boolean, or number', () => {
@@ -334,8 +334,8 @@ describe('ReactElementValidator', () => {
334
'or a class/function (for composite components) but got: null. Check ' +
335
'the render method of `ParentComp`.'
336
);
337
- expect(console.error.calls.count()).toBe(1);
338
- expect(console.error.calls.argsFor(0)[0]).toBe(
337
+ expectDev(console.error.calls.count()).toBe(1);
338
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
339
'Warning: React.createElement: type should not be null, undefined, ' +
340
'boolean, or number. It should be a string (for DOM elements) or a ' +
341
'ReactClass (for composite components). Check the render method of ' +
@@ -358,8 +358,8 @@ describe('ReactElementValidator', () => {
358
359
ReactTestUtils.renderIntoDocument(React.createElement(Component));
360
361
- expect(console.error.calls.count()).toBe(1);
362
- expect(console.error.calls.argsFor(0)[0]).toBe(
361
+ expectDev(console.error.calls.count()).toBe(1);
362
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
363
'Warning: Failed prop type: The prop `prop` is marked as required in ' +
364
'`Component`, but its value is `null`.\n' +
365
' in Component'
@@ -383,8 +383,8 @@ describe('ReactElementValidator', () => {
383
React.createElement(Component, {prop:null})
384
);
385
386
- expect(console.error.calls.count()).toBe(1);
387
- expect(console.error.calls.argsFor(0)[0]).toBe(
386
+ expectDev(console.error.calls.count()).toBe(1);
387
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
388
'Warning: Failed prop type: The prop `prop` is marked as required in ' +
389
'`Component`, but its value is `null`.\n' +
390
' in Component'
@@ -410,15 +410,15 @@ describe('ReactElementValidator', () => {
410
React.createElement(Component, {prop: 42})
411
);
412
413
- expect(console.error.calls.count()).toBe(2);
414
- expect(console.error.calls.argsFor(0)[0]).toBe(
413
+ expectDev(console.error.calls.count()).toBe(2);
414
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
415
'Warning: Failed prop type: ' +
416
'The prop `prop` is marked as required in `Component`, but its value ' +
417
'is `undefined`.\n' +
418
' in Component'
419
);
420
421
- expect(console.error.calls.argsFor(1)[0]).toBe(
421
+ expectDev(console.error.calls.argsFor(1)[0]).toBe(
422
'Warning: Failed prop type: ' +
423
'Invalid prop `prop` of type `number` supplied to ' +
424
'`Component`, expected `string`.\n' +
@@ -430,7 +430,7 @@ describe('ReactElementValidator', () => {
430
);
431
432
// Should not error for strings
433
- expect(console.error.calls.count()).toBe(2);
433
+ expectDev(console.error.calls.count()).toBe(2);
434
});
435
436
it('should warn if a PropType creator is used as a PropType', () => {
@@ -449,8 +449,8 @@ describe('ReactElementValidator', () => {
449
React.createElement(Component, {myProp: {value: 'hi'}})
450
);
451
452
- expect(console.error.calls.count()).toBe(1);
453
- expect(console.error.calls.argsFor(0)[0]).toBe(
452
+ expectDev(console.error.calls.count()).toBe(1);
453
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
454
'Warning: Component: type specification of prop `myProp` is invalid; ' +
455
'the type checker function must return `null` or an `Error` but ' +
456
'returned a function. You may have forgotten to pass an argument to ' +
@@ -468,14 +468,14 @@ describe('ReactElementValidator', () => {
468
});
469
var TestFactory = React.createFactory(TestComponent);
470
expect(TestFactory.type).toBe(TestComponent);
471
- expect(console.error.calls.count()).toBe(1);
472
- expect(console.error.calls.argsFor(0)[0]).toBe(
471
+ expectDev(console.error.calls.count()).toBe(1);
472
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
473
'Warning: Factory.type is deprecated. Access the class directly before ' +
474
'passing it to createFactory.'
475
);
476
// Warn once, not again
477
expect(TestFactory.type).toBe(TestComponent);
478
- expect(console.error.calls.count()).toBe(1);
478
+ expectDev(console.error.calls.count()).toBe(1);
479
});
480
481
it('does not warn when using DOM node as children', () => {
@@ -492,7 +492,7 @@ describe('ReactElementValidator', () => {
492
var node = document.createElement('div');
493
// This shouldn't cause a stack overflow or any other problems (#3883)
494
ReactTestUtils.renderIntoDocument(<DOMContainer>{node}</DOMContainer>);
495
- expect(console.error.calls.count()).toBe(0);
495
+ expectDev(console.error.calls.count()).toBe(0);
496
});
497
498
it('should not enumerate enumerable numbers (#4776)', () => {
@@ -535,8 +535,8 @@ describe('ReactElementValidator', () => {
535
spyOn(console, 'error');
536
var Foo = undefined;
537
void <Foo>{[<div />]}</Foo>;
538
- expect(console.error.calls.count()).toBe(1);
539
- expect(console.error.calls.argsFor(0)[0]).toBe(
538
+ expectDev(console.error.calls.count()).toBe(1);
539
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
540
'Warning: React.createElement: type should not be null, undefined, ' +
541
'boolean, or number. It should be a string (for DOM elements) or a ' +
542
'ReactClass (for composite components).'
src/isomorphic/classic/types/__tests__/ReactPropTypes-test.js
+9
-9
@@ -310,7 +310,7 @@ describe('ReactPropTypes', () => {
310
var instance = <Component label={<div />} />;
311
instance = ReactTestUtils.renderIntoDocument(instance);
312
313
- expect(console.error.calls.count()).toBe(0);
313
+ expectDev(console.error.calls.count()).toBe(0);
314
});
315
316
it('should warn when passing no label and isRequired is set', () => {
@@ -319,7 +319,7 @@ describe('ReactPropTypes', () => {
319
var instance = <Component />;
320
instance = ReactTestUtils.renderIntoDocument(instance);
321
322
- expect(console.error.calls.count()).toBe(1);
322
+ expectDev(console.error.calls.count()).toBe(1);
323
});
324
325
it('should be implicitly optional and not warn without values', () => {
@@ -454,7 +454,7 @@ describe('ReactPropTypes', () => {
454
k4: null,
455
k5: undefined,
456
}));
457
- expect(console.error.calls.count()).toBe(0);
457
+ expectDev(console.error.calls.count()).toBe(0);
458
});
459
460
it('should not warn for iterables', () => {
@@ -612,8 +612,8 @@ describe('ReactPropTypes', () => {
612
613
PropTypes.oneOf('red', 'blue');
614
615
- expect(console.error).toHaveBeenCalled();
616
- expect(console.error.calls.argsFor(0)[0])
615
+ expectDev(console.error).toHaveBeenCalled();
616
+ expectDev(console.error.calls.argsFor(0)[0])
617
.toContain('Invalid argument supplied to oneOf, expected an instance of array.');
618
619
typeCheckPass(PropTypes.oneOf('red', 'blue'), 'red');
@@ -668,8 +668,8 @@ describe('ReactPropTypes', () => {
668
669
PropTypes.oneOfType(PropTypes.string, PropTypes.number);
670
671
- expect(console.error).toHaveBeenCalled();
672
- expect(console.error.calls.argsFor(0)[0])
671
+ expectDev(console.error).toHaveBeenCalled();
672
+ expectDev(console.error.calls.argsFor(0)[0])
673
.toContain('Invalid argument supplied to oneOfType, expected an instance of array.');
674
675
typeCheckPass(PropTypes.oneOf(PropTypes.string, PropTypes.number), []);
@@ -893,7 +893,7 @@ describe('ReactPropTypes', () => {
893
894
var instance = <Component num={6} />;
895
instance = ReactTestUtils.renderIntoDocument(instance);
896
- expect(console.error.calls.count()).toBe(1);
896
+ expectDev(console.error.calls.count()).toBe(1);
897
expect(
898
console.error.calls.argsFor(0)[0].replace(/\(at .+?:\d+\)/g, '(at **)')
899
).toBe(
@@ -920,7 +920,7 @@ describe('ReactPropTypes', () => {
920
921
var instance = <Component num={5} />;
922
instance = ReactTestUtils.renderIntoDocument(instance);
923
- expect(console.error.calls.count()).toBe(0);
923
+ expectDev(console.error.calls.count()).toBe(0);
924
}
925
);
926
});
src/isomorphic/modern/element/__tests__/ReactJSXElement-test.js
+5
-5
@@ -100,21 +100,21 @@ describe('ReactJSXElement', () => {
100
var a = 1;
101
var element = <Component children="text">{a}</Component>;
102
expect(element.props.children).toBe(a);
103
- expect(console.error.calls.count()).toBe(0);
103
+ expectDev(console.error.calls.count()).toBe(0);
104
});
105
106
it('does not override children if no JSX children are provided', () => {
107
spyOn(console, 'error');
108
var element = <Component children="text" />;
109
expect(element.props.children).toBe('text');
110
- expect(console.error.calls.count()).toBe(0);
110
+ expectDev(console.error.calls.count()).toBe(0);
111
});
112
113
it('overrides children if null is provided as a JSX child', () => {
114
spyOn(console, 'error');
115
var element = <Component children="text">{null}</Component>;
116
expect(element.props.children).toBe(null);
117
- expect(console.error.calls.count()).toBe(0);
117
+ expectDev(console.error.calls.count()).toBe(0);
118
});
119
120
it('overrides children if undefined is provided as an argument', () => {
@@ -136,7 +136,7 @@ describe('ReactJSXElement', () => {
136
var c = 3;
137
var element = <Component>{a}{b}{c}</Component>;
138
expect(element.props.children).toEqual([1, 2, 3]);
139
- expect(console.error.calls.count()).toBe(0);
139
+ expectDev(console.error.calls.count()).toBe(0);
140
});
141
142
it('allows static methods to be called using the type property', () => {
@@ -153,7 +153,7 @@ describe('ReactJSXElement', () => {
153
154
var element = <StaticMethodComponent />;
155
expect(element.type.someStaticMethod()).toBe('someReturnValue');
156
- expect(console.error.calls.count()).toBe(0);
156
+ expectDev(console.error.calls.count()).toBe(0);
157
});
158
159
it('identifies valid elements', () => {
src/isomorphic/modern/element/__tests__/ReactJSXElementValidator-test.js
+27
-27
@@ -47,8 +47,8 @@ describe('ReactJSXElementValidator', () => {
47
48
void <Component>{[<Component />, <Component />]}</Component>;
49
50
- expect(console.error.calls.count()).toBe(1);
51
- expect(console.error.calls.argsFor(0)[0]).toContain(
50
+ expectDev(console.error.calls.count()).toBe(1);
51
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
52
'Each child in an array or iterator should have a unique "key" prop.'
53
);
54
});
@@ -74,8 +74,8 @@ describe('ReactJSXElementValidator', () => {
74
75
ReactTestUtils.renderIntoDocument(<ComponentWrapper />);
76
77
- expect(console.error.calls.count()).toBe(1);
78
- expect(console.error.calls.argsFor(0)[0]).toContain(
77
+ expectDev(console.error.calls.count()).toBe(1);
78
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
79
'Each child in an array or iterator should have a unique "key" prop. ' +
80
'Check the render method of `InnerComponent`. ' +
81
'It was passed a child from ComponentWrapper. '
@@ -99,8 +99,8 @@ describe('ReactJSXElementValidator', () => {
99
100
void <Component>{iterable}</Component>;
101
102
- expect(console.error.calls.count()).toBe(1);
103
- expect(console.error.calls.argsFor(0)[0]).toContain(
102
+ expectDev(console.error.calls.count()).toBe(1);
103
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
104
'Each child in an array or iterator should have a unique "key" prop.'
105
);
106
});
@@ -110,7 +110,7 @@ describe('ReactJSXElementValidator', () => {
110
111
void <Component>{[<Component key="#1" />, <Component key="#2" />]}</Component>;
112
113
- expect(console.error.calls.count()).toBe(0);
113
+ expectDev(console.error.calls.count()).toBe(0);
114
});
115
116
it('does not warns for iterable elements with keys', () => {
@@ -133,7 +133,7 @@ describe('ReactJSXElementValidator', () => {
133
134
void <Component>{iterable}</Component>;
135
136
- expect(console.error.calls.count()).toBe(0);
136
+ expectDev(console.error.calls.count()).toBe(0);
137
});
138
139
it('does not warn for numeric keys in entry iterable as a child', () => {
@@ -154,7 +154,7 @@ describe('ReactJSXElementValidator', () => {
154
155
void <Component>{iterable}</Component>;
156
157
- expect(console.error.calls.count()).toBe(0);
157
+ expectDev(console.error.calls.count()).toBe(0);
158
});
159
160
it('does not warn when the element is directly as children', () => {
@@ -162,7 +162,7 @@ describe('ReactJSXElementValidator', () => {
162
163
void <Component><Component /><Component /></Component>;
164
165
- expect(console.error.calls.count()).toBe(0);
165
+ expectDev(console.error.calls.count()).toBe(0);
166
});
167
168
it('does not warn when the child array contains non-elements', () => {
@@ -170,7 +170,7 @@ describe('ReactJSXElementValidator', () => {
170
171
void <Component>{[{}, {}]}</Component>;
172
173
- expect(console.error.calls.count()).toBe(0);
173
+ expectDev(console.error.calls.count()).toBe(0);
174
});
175
176
// TODO: These warnings currently come from the composite component, but
@@ -217,25 +217,25 @@ describe('ReactJSXElementValidator', () => {
217
void <Null />;
218
void <True />;
219
void <Num />;
220
- expect(console.error.calls.count()).toBe(4);
221
- expect(console.error.calls.argsFor(0)[0]).toContain(
220
+ expectDev(console.error.calls.count()).toBe(4);
221
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
222
'type should not be null, undefined, boolean, or number. It should be ' +
223
'a string (for DOM elements) or a ReactClass (for composite components).'
224
);
225
- expect(console.error.calls.argsFor(1)[0]).toContain(
225
+ expectDev(console.error.calls.argsFor(1)[0]).toContain(
226
'type should not be null, undefined, boolean, or number. It should be ' +
227
'a string (for DOM elements) or a ReactClass (for composite components).'
228
);
229
- expect(console.error.calls.argsFor(2)[0]).toContain(
229
+ expectDev(console.error.calls.argsFor(2)[0]).toContain(
230
'type should not be null, undefined, boolean, or number. It should be ' +
231
'a string (for DOM elements) or a ReactClass (for composite components).'
232
);
233
- expect(console.error.calls.argsFor(3)[0]).toContain(
233
+ expectDev(console.error.calls.argsFor(3)[0]).toContain(
234
'type should not be null, undefined, boolean, or number. It should be ' +
235
'a string (for DOM elements) or a ReactClass (for composite components).'
236
);
237
void <Div />;
238
- expect(console.error.calls.count()).toBe(4);
238
+ expectDev(console.error.calls.count()).toBe(4);
239
});
240
241
it('should check default prop values', () => {
@@ -245,7 +245,7 @@ describe('ReactJSXElementValidator', () => {
245
246
ReactTestUtils.renderIntoDocument(<RequiredPropComponent />);
247
248
- expect(console.error.calls.count()).toBe(1);
248
+ expectDev(console.error.calls.count()).toBe(1);
249
expect(
250
console.error.calls.argsFor(0)[0].replace(/\(at .+?:\d+\)/g, '(at **)')
251
).toBe(
@@ -260,7 +260,7 @@ describe('ReactJSXElementValidator', () => {
260
261
ReactTestUtils.renderIntoDocument(<RequiredPropComponent prop={null} />);
262
263
- expect(console.error.calls.count()).toBe(1);
263
+ expectDev(console.error.calls.count()).toBe(1);
264
expect(
265
console.error.calls.argsFor(0)[0].replace(/\(at .+?:\d+\)/g, '(at **)')
266
).toBe(
@@ -276,7 +276,7 @@ describe('ReactJSXElementValidator', () => {
276
ReactTestUtils.renderIntoDocument(<RequiredPropComponent />);
277
ReactTestUtils.renderIntoDocument(<RequiredPropComponent prop={42} />);
278
279
- expect(console.error.calls.count()).toBe(2);
279
+ expectDev(console.error.calls.count()).toBe(2);
280
expect(
281
console.error.calls.argsFor(0)[0].replace(/\(at .+?:\d+\)/g, '(at **)')
282
).toBe(
@@ -298,7 +298,7 @@ describe('ReactJSXElementValidator', () => {
298
ReactTestUtils.renderIntoDocument(<RequiredPropComponent prop="string" />);
299
300
// Should not error for strings
301
- expect(console.error.calls.count()).toBe(2);
301
+ expectDev(console.error.calls.count()).toBe(2);
302
});
303
304
it('should warn on invalid prop types', () => {
@@ -316,8 +316,8 @@ describe('ReactJSXElementValidator', () => {
316
prop: null,
317
};
318
ReactTestUtils.renderIntoDocument(<NullPropTypeComponent />);
319
- expect(console.error.calls.count()).toBe(1);
320
- expect(console.error.calls.argsFor(0)[0]).toContain(
319
+ expectDev(console.error.calls.count()).toBe(1);
320
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
321
'NullPropTypeComponent: prop type `prop` is invalid; it must be a ' +
322
'function, usually from React.PropTypes.'
323
);
@@ -334,8 +334,8 @@ describe('ReactJSXElementValidator', () => {
334
prop: null,
335
};
336
ReactTestUtils.renderIntoDocument(<NullContextTypeComponent />);
337
- expect(console.error.calls.count()).toBe(1);
338
- expect(console.error.calls.argsFor(0)[0]).toContain(
337
+ expectDev(console.error.calls.count()).toBe(1);
338
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
339
'NullContextTypeComponent: context type `prop` is invalid; it must ' +
340
'be a function, usually from React.PropTypes.'
341
);
@@ -352,8 +352,8 @@ describe('ReactJSXElementValidator', () => {
352
prop: 'foo',
353
});
354
ReactTestUtils.renderIntoDocument(<GetDefaultPropsComponent />);
355
- expect(console.error.calls.count()).toBe(1);
356
- expect(console.error.calls.argsFor(0)[0]).toContain(
355
+ expectDev(console.error.calls.count()).toBe(1);
356
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
357
'getDefaultProps is only used on classic React.createClass definitions.' +
358
' Use a static property named `defaultProps` instead.'
359
);
src/renderers/dom/__tests__/ReactDOMProduction-test.js
+2
-2
@@ -36,7 +36,7 @@ describe('ReactDOMProduction', () => {
36
37
spyOn(console, 'error');
38
warning(false, 'Do cows go moo?');
39
- expect(console.error.calls.count()).toBe(0);
39
+ expectDev(console.error.calls.count()).toBe(0);
40
});
41
42
it('should use prod React', () => {
@@ -45,7 +45,7 @@ describe('ReactDOMProduction', () => {
45
// no key warning
46
void <div>{[<span />]}</div>;
47
48
- expect(console.error.calls.count()).toBe(0);
48
+ expectDev(console.error.calls.count()).toBe(0);
49
});
50
51
it('should handle a simple flow', () => {
src/renderers/dom/shared/__tests__/CSSPropertyOperations-test.js
+13
-13
@@ -119,8 +119,8 @@ describe('CSSPropertyOperations', () => {
119
spyOn(console, 'error');
120
var root = document.createElement('div');
121
ReactDOM.render(<Comp />, root);
122
- expect(console.error.calls.count()).toBe(1);
123
- expect(console.error.calls.argsFor(0)[0]).toEqual(
122
+ expectDev(console.error.calls.count()).toBe(1);
123
+ expectDev(console.error.calls.argsFor(0)[0]).toEqual(
124
'Warning: Unsupported style property background-color. Did you mean backgroundColor? ' +
125
'Check the render method of `Comp`.'
126
);
@@ -144,12 +144,12 @@ describe('CSSPropertyOperations', () => {
144
ReactDOM.render(<Comp />, root);
145
ReactDOM.render(<Comp style={styles} />, root);
146
147
- expect(console.error.calls.count()).toBe(2);
148
- expect(console.error.calls.argsFor(0)[0]).toEqual(
147
+ expectDev(console.error.calls.count()).toBe(2);
148
+ expectDev(console.error.calls.argsFor(0)[0]).toEqual(
149
'Warning: Unsupported style property -ms-transform. Did you mean msTransform? ' +
150
'Check the render method of `Comp`.'
151
);
152
- expect(console.error.calls.argsFor(1)[0]).toEqual(
152
+ expectDev(console.error.calls.argsFor(1)[0]).toEqual(
153
'Warning: Unsupported style property -webkit-transform. Did you mean WebkitTransform? ' +
154
'Check the render method of `Comp`.'
155
);
@@ -172,12 +172,12 @@ describe('CSSPropertyOperations', () => {
172
var root = document.createElement('div');
173
ReactDOM.render(<Comp />, root);
174
// msTransform is correct already and shouldn't warn
175
- expect(console.error.calls.count()).toBe(2);
176
- expect(console.error.calls.argsFor(0)[0]).toEqual(
175
+ expectDev(console.error.calls.count()).toBe(2);
176
+ expectDev(console.error.calls.argsFor(0)[0]).toEqual(
177
'Warning: Unsupported vendor-prefixed style property oTransform. ' +
178
'Did you mean OTransform? Check the render method of `Comp`.'
179
);
180
- expect(console.error.calls.argsFor(1)[0]).toEqual(
180
+ expectDev(console.error.calls.argsFor(1)[0]).toEqual(
181
'Warning: Unsupported vendor-prefixed style property webkitTransform. ' +
182
'Did you mean WebkitTransform? Check the render method of `Comp`.'
183
);
@@ -200,12 +200,12 @@ describe('CSSPropertyOperations', () => {
200
spyOn(console, 'error');
201
var root = document.createElement('div');
202
ReactDOM.render(<Comp />, root);
203
- expect(console.error.calls.count()).toBe(2);
204
- expect(console.error.calls.argsFor(0)[0]).toEqual(
203
+ expectDev(console.error.calls.count()).toBe(2);
204
+ expectDev(console.error.calls.argsFor(0)[0]).toEqual(
205
'Warning: Style property values shouldn\'t contain a semicolon. ' +
206
'Check the render method of `Comp`. Try "backgroundColor: blue" instead.',
207
);
208
- expect(console.error.calls.argsFor(1)[0]).toEqual(
208
+ expectDev(console.error.calls.argsFor(1)[0]).toEqual(
209
'Warning: Style property values shouldn\'t contain a semicolon. ' +
210
'Check the render method of `Comp`. Try "color: red" instead.',
211
);
@@ -224,8 +224,8 @@ describe('CSSPropertyOperations', () => {
224
var root = document.createElement('div');
225
ReactDOM.render(<Comp />, root);
226
227
- expect(console.error.calls.count()).toBe(1);
228
- expect(console.error.calls.argsFor(0)[0]).toEqual(
227
+ expectDev(console.error.calls.count()).toBe(1);
228
+ expectDev(console.error.calls.argsFor(0)[0]).toEqual(
229
'Warning: `NaN` is an invalid value for the `fontSize` css style property. ' +
230
'Check the render method of `Comp`.'
231
);
src/renderers/dom/shared/__tests__/ReactBrowserEventEmitter-test.js
+1
-1
@@ -269,7 +269,7 @@ describe('ReactBrowserEventEmitter', () => {
269
expect(idCallOrder[0]).toBe(getInternal(CHILD));
270
expect(idCallOrder[1]).toBe(getInternal(PARENT));
271
expect(idCallOrder[2]).toBe(getInternal(GRANDPARENT));
272
- expect(console.error.calls.count()).toEqual(0);
272
+ expectDev(console.error.calls.count()).toEqual(0);
273
});
274
275
/**
src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js
+83
-83
@@ -20,7 +20,7 @@ describe('ReactDOMComponent', () => {
20
var inputValueTracking;
21
22
function normalizeCodeLocInfo(str) {
23
- return str.replace(/\(at .+?:\d+\)/g, '(at **)');
23
+ return str && str.replace(/\(at .+?:\d+\)/g, '(at **)');
24
}
25
26
beforeEach(() => {
@@ -128,8 +128,8 @@ describe('ReactDOMComponent', () => {
128
var stub = ReactTestUtils.renderIntoDocument(<App />);
129
style.position = 'absolute';
130
stub.setState({style: style});
131
- expect(console.error.calls.count()).toBe(1);
132
- expect(console.error.calls.argsFor(0)[0]).toEqual(
131
+ expectDev(console.error.calls.count()).toBe(1);
132
+ expectDev(console.error.calls.argsFor(0)[0]).toEqual(
133
'Warning: `div` was passed a style object that has previously been ' +
134
'mutated. Mutating `style` is deprecated. Consider cloning it ' +
135
'beforehand. Check the `render` of `App`. Previous style: ' +
@@ -142,22 +142,22 @@ describe('ReactDOMComponent', () => {
142
style.background = 'green';
143
stub.setState({style: {background: 'green'}});
144
// already warned once for the same component and owner
145
- expect(console.error.calls.count()).toBe(1);
145
+ expectDev(console.error.calls.count()).toBe(1);
146
147
style = {background: 'red'};
148
var div = document.createElement('div');
149
ReactDOM.render(<span style={style}></span>, div);
150
style.background = 'blue';
151
ReactDOM.render(<span style={style}></span>, div);
152
- expect(console.error.calls.count()).toBe(2);
152
+ expectDev(console.error.calls.count()).toBe(2);
153
});
154
155
it('should warn for unknown prop', () => {
156
spyOn(console, 'error');
157
var container = document.createElement('div');
158
ReactDOM.render(<div foo="bar" />, container);
159
- expect(console.error.calls.count(0)).toBe(1);
160
- expect(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
159
+ expectDev(console.error.calls.count(0)).toBe(1);
160
+ expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
161
'Warning: Unknown prop `foo` on <div> tag. Remove this prop from the element. ' +
162
'For details, see https://fb.me/react-unknown-prop\n in div (at **)'
163
);
@@ -167,8 +167,8 @@ describe('ReactDOMComponent', () => {
167
spyOn(console, 'error');
168
var container = document.createElement('div');
169
ReactDOM.render(<div foo="bar" baz="qux" />, container);
170
- expect(console.error.calls.count(0)).toBe(1);
171
- expect(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
170
+ expectDev(console.error.calls.count(0)).toBe(1);
171
+ expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
172
'Warning: Unknown props `foo`, `baz` on <div> tag. Remove these props from the element. ' +
173
'For details, see https://fb.me/react-unknown-prop\n in div (at **)'
174
);
@@ -178,8 +178,8 @@ describe('ReactDOMComponent', () => {
178
spyOn(console, 'error');
179
var container = document.createElement('div');
180
ReactDOM.render(<div onDblClick={() => {}} />, container);
181
- expect(console.error.calls.count(0)).toBe(1);
182
- expect(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
181
+ expectDev(console.error.calls.count(0)).toBe(1);
182
+ expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
183
'Warning: Unknown event handler property onDblClick. Did you mean `onDoubleClick`?\n in div (at **)'
184
);
185
});
@@ -194,7 +194,7 @@ describe('ReactDOMComponent', () => {
194
}
195
196
ReactTestUtils.renderIntoDocument(<Component />);
197
- expect(console.error.calls.count()).toBe(0);
197
+ expectDev(console.error.calls.count()).toBe(0);
198
});
199
200
it('should warn nicely about NaN in style', () => {
@@ -205,8 +205,8 @@ describe('ReactDOMComponent', () => {
205
ReactDOM.render(<span style={style}></span>, div);
206
ReactDOM.render(<span style={style}></span>, div);
207
208
- expect(console.error.calls.count()).toBe(1);
209
- expect(console.error.calls.argsFor(0)[0]).toEqual(
208
+ expectDev(console.error.calls.count()).toBe(1);
209
+ expectDev(console.error.calls.argsFor(0)[0]).toEqual(
210
'Warning: `NaN` is an invalid value for the `fontSize` css style property.',
211
);
212
});
@@ -362,8 +362,8 @@ describe('ReactDOMComponent', () => {
362
);
363
ReactDOM.render(element, container);
364
}
365
- expect(console.error.calls.count()).toBe(1);
366
- expect(console.error.calls.argsFor(0)[0]).toEqual(
365
+ expectDev(console.error.calls.count()).toBe(1);
366
+ expectDev(console.error.calls.argsFor(0)[0]).toEqual(
367
'Warning: Invalid attribute name: `blah" onclick="beevil" noise="hi`'
368
);
369
});
@@ -382,8 +382,8 @@ describe('ReactDOMComponent', () => {
382
);
383
ReactDOM.render(afterUpdate, container);
384
}
385
- expect(console.error.calls.count()).toBe(1);
386
- expect(console.error.calls.argsFor(0)[0]).toEqual(
385
+ expectDev(console.error.calls.count()).toBe(1);
386
+ expectDev(console.error.calls.argsFor(0)[0]).toEqual(
387
'Warning: Invalid attribute name: `blah" onclick="beevil" noise="hi`'
388
);
389
});
@@ -769,8 +769,8 @@ describe('ReactDOMComponent', () => {
769
errorEvent.initEvent('error', false, false);
770
container.getElementsByTagName('source')[0].dispatchEvent(errorEvent);
771
772
- expect(console.error.calls.count()).toBe(1);
773
- expect(console.error.calls.argsFor(0)[0]).toContain(
772
+ expectDev(console.error.calls.count()).toBe(1);
773
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
774
'onError called'
775
);
776
});
@@ -830,13 +830,13 @@ describe('ReactDOMComponent', () => {
830
});
831
var node = document.createElement('div');
832
ReactDOM.render(<ShadyComponent />, node);
833
- expect(console.error.calls.count()).toBe(1);
834
- expect(console.error.calls.argsFor(0)[0]).toContain(
833
+ expectDev(console.error.calls.count()).toBe(1);
834
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
835
'ShadyComponent is using shady DOM. Using shady DOM with React can ' +
836
'cause things to break subtly.'
837
);
838
mountComponent({is: 'custom-shady-div2'});
839
- expect(console.error.calls.count()).toBe(1);
839
+ expectDev(console.error.calls.count()).toBe(1);
840
841
} finally {
842
document.createElement = defaultCreateElement;
@@ -858,14 +858,14 @@ describe('ReactDOMComponent', () => {
858
};
859
860
mountComponent({is: 'custom-shady-div'});
861
- expect(console.error.calls.count()).toBe(1);
862
- expect(console.error.calls.argsFor(0)[0]).toContain(
861
+ expectDev(console.error.calls.count()).toBe(1);
862
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
863
'A component is using shady DOM. Using shady DOM with React can ' +
864
'cause things to break subtly.'
865
);
866
867
mountComponent({is: 'custom-shady-div2'});
868
- expect(console.error.calls.count()).toBe(1);
868
+ expectDev(console.error.calls.count()).toBe(1);
869
870
} finally {
871
document.createElement = defaultCreateElement;
@@ -901,8 +901,8 @@ describe('ReactDOMComponent', () => {
901
902
spyOn(console, 'error');
903
mountComponent({innerHTML: '<span>Hi Jim!</span>'});
904
- expect(console.error.calls.count()).toBe(1);
905
- expect(console.error.calls.argsFor(0)[0]).toContain(
904
+ expectDev(console.error.calls.count()).toBe(1);
905
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
906
'Directly setting property `innerHTML` is not permitted. '
907
);
908
});
@@ -934,14 +934,14 @@ describe('ReactDOMComponent', () => {
934
it('should warn about contentEditable and children', () => {
935
spyOn(console, 'error');
936
mountComponent({contentEditable: true, children: ''});
937
- expect(console.error.calls.count()).toBe(1);
938
- expect(console.error.calls.argsFor(0)[0]).toContain('contentEditable');
937
+ expectDev(console.error.calls.count()).toBe(1);
938
+ expectDev(console.error.calls.argsFor(0)[0]).toContain('contentEditable');
939
});
940
941
it('should respect suppressContentEditableWarning', () => {
942
spyOn(console, 'error');
943
mountComponent({contentEditable: true, children: '', suppressContentEditableWarning: true});
944
- expect(console.error.calls.count()).toBe(0);
944
+ expectDev(console.error.calls.count()).toBe(0);
945
});
946
947
it('should validate against invalid styles', () => {
@@ -1106,8 +1106,8 @@ describe('ReactDOMComponent', () => {
1106
<div contentEditable={true}><div /></div>,
1107
container
1108
);
1109
- expect(console.error.calls.count()).toBe(1);
1110
- expect(console.error.calls.argsFor(0)[0]).toContain('contentEditable');
1109
+ expectDev(console.error.calls.count()).toBe(1);
1110
+ expectDev(console.error.calls.argsFor(0)[0]).toContain('contentEditable');
1111
});
1112
1113
it('should validate against invalid styles', () => {
@@ -1237,8 +1237,8 @@ describe('ReactDOMComponent', () => {
1237
1238
spyOn(console, 'error');
1239
ReactTestUtils.renderIntoDocument(<div onScroll={function() {}} />);
1240
- expect(console.error.calls.count()).toBe(1);
1241
- expect(console.error.calls.argsFor(0)[0]).toBe(
1240
+ expectDev(console.error.calls.count()).toBe(1);
1241
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
1242
'Warning: This browser doesn\'t support the `onScroll` event'
1243
);
1244
});
@@ -1246,7 +1246,7 @@ describe('ReactDOMComponent', () => {
1246
it('should not warn when server-side rendering `onScroll`', () => {
1247
spyOn(console, 'error');
1248
ReactDOMServer.renderToString(<div onScroll={() => {}}/>);
1249
- expect(console.error).not.toHaveBeenCalled();
1249
+ expectDev(console.error).not.toHaveBeenCalled();
1250
});
1251
});
1252
@@ -1283,8 +1283,8 @@ describe('ReactDOMComponent', () => {
1283
spyOn(console, 'error');
1284
ReactTestUtils.renderIntoDocument(<div><tr /><tr /></div>);
1285
1286
- expect(console.error.calls.count()).toBe(1);
1287
- expect(console.error.calls.argsFor(0)[0]).toBe(
1286
+ expectDev(console.error.calls.count()).toBe(1);
1287
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
1288
'Warning: validateDOMNesting(...): <tr> cannot appear as a child of ' +
1289
'<div>. See div > tr.'
1290
);
@@ -1295,8 +1295,8 @@ describe('ReactDOMComponent', () => {
1295
var p = document.createElement('p');
1296
ReactDOM.render(<span><p /></span>, p);
1297
1298
- expect(console.error.calls.count()).toBe(1);
1299
- expect(console.error.calls.argsFor(0)[0]).toBe(
1298
+ expectDev(console.error.calls.count()).toBe(1);
1299
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
1300
'Warning: validateDOMNesting(...): <p> cannot appear as a descendant ' +
1301
'of <p>. See p > ... > p.'
1302
);
@@ -1319,17 +1319,17 @@ describe('ReactDOMComponent', () => {
1319
1320
ReactTestUtils.renderIntoDocument(<Foo />);
1321
1322
- expect(console.error.calls.count()).toBe(3);
1323
- expect(console.error.calls.argsFor(0)[0]).toBe(
1322
+ expectDev(console.error.calls.count()).toBe(3);
1323
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
1324
'Warning: validateDOMNesting(...): <tr> cannot appear as a child of ' +
1325
'<table>. See Foo > table > Row > tr. Add a <tbody> to your code to ' +
1326
'match the DOM tree generated by the browser.'
1327
);
1328
- expect(console.error.calls.argsFor(1)[0]).toBe(
1328
+ expectDev(console.error.calls.argsFor(1)[0]).toBe(
1329
'Warning: validateDOMNesting(...): Text nodes cannot appear as a ' +
1330
'child of <tr>. See Row > tr > #text.'
1331
);
1332
- expect(console.error.calls.argsFor(2)[0]).toBe(
1332
+ expectDev(console.error.calls.argsFor(2)[0]).toBe(
1333
'Warning: validateDOMNesting(...): Whitespace text nodes cannot ' +
1334
'appear as a child of <table>. Make sure you don\'t have any extra ' +
1335
'whitespace between tags on each line of your source code. See Foo > ' +
@@ -1365,8 +1365,8 @@ describe('ReactDOMComponent', () => {
1365
render: () => <Viz1 />,
1366
});
1367
ReactTestUtils.renderIntoDocument(<App1 />);
1368
- expect(console.error.calls.count()).toBe(1);
1369
- expect(console.error.calls.argsFor(0)[0]).toContain(
1368
+ expectDev(console.error.calls.count()).toBe(1);
1369
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
1370
'See Viz1 > table > FancyRow > Row > tr.'
1371
);
1372
@@ -1377,26 +1377,26 @@ describe('ReactDOMComponent', () => {
1377
render: () => <Viz2 />,
1378
});
1379
ReactTestUtils.renderIntoDocument(<App2 />);
1380
- expect(console.error.calls.count()).toBe(2);
1381
- expect(console.error.calls.argsFor(1)[0]).toContain(
1380
+ expectDev(console.error.calls.count()).toBe(2);
1381
+ expectDev(console.error.calls.argsFor(1)[0]).toContain(
1382
'See Viz2 > FancyTable > Table > table > FancyRow > Row > tr.'
1383
);
1384
1385
ReactTestUtils.renderIntoDocument(<FancyTable><FancyRow /></FancyTable>);
1386
- expect(console.error.calls.count()).toBe(3);
1387
- expect(console.error.calls.argsFor(2)[0]).toContain(
1386
+ expectDev(console.error.calls.count()).toBe(3);
1387
+ expectDev(console.error.calls.argsFor(2)[0]).toContain(
1388
'See FancyTable > Table > table > FancyRow > Row > tr.'
1389
);
1390
1391
ReactTestUtils.renderIntoDocument(<table><FancyRow /></table>);
1392
- expect(console.error.calls.count()).toBe(4);
1393
- expect(console.error.calls.argsFor(3)[0]).toContain(
1392
+ expectDev(console.error.calls.count()).toBe(4);
1393
+ expectDev(console.error.calls.argsFor(3)[0]).toContain(
1394
'See table > FancyRow > Row > tr.'
1395
);
1396
1397
ReactTestUtils.renderIntoDocument(<FancyTable><tr /></FancyTable>);
1398
- expect(console.error.calls.count()).toBe(5);
1399
- expect(console.error.calls.argsFor(4)[0]).toContain(
1398
+ expectDev(console.error.calls.count()).toBe(5);
1399
+ expectDev(console.error.calls.argsFor(4)[0]).toContain(
1400
'See FancyTable > Table > table > tr.'
1401
);
1402
@@ -1407,8 +1407,8 @@ describe('ReactDOMComponent', () => {
1407
}
1408
1409
ReactTestUtils.renderIntoDocument(<Link><div><Link /></div></Link>);
1410
- expect(console.error.calls.count()).toBe(6);
1411
- expect(console.error.calls.argsFor(5)[0]).toContain(
1410
+ expectDev(console.error.calls.count()).toBe(6);
1411
+ expectDev(console.error.calls.argsFor(5)[0]).toContain(
1412
'See Link > a > ... > Link > a.'
1413
);
1414
});
@@ -1416,59 +1416,59 @@ describe('ReactDOMComponent', () => {
1416
it('should warn about incorrect casing on properties (ssr)', () => {
1417
spyOn(console, 'error');
1418
ReactDOMServer.renderToString(React.createElement('input', {type: 'text', tabindex: '1'}));
1419
- expect(console.error.calls.count()).toBe(1);
1420
- expect(console.error.calls.argsFor(0)[0]).toContain('tabIndex');
1419
+ expectDev(console.error.calls.count()).toBe(1);
1420
+ expectDev(console.error.calls.argsFor(0)[0]).toContain('tabIndex');
1421
});
1422
1423
it('should warn about incorrect casing on event handlers (ssr)', () => {
1424
spyOn(console, 'error');
1425
ReactDOMServer.renderToString(React.createElement('input', {type: 'text', onclick: '1'}));
1426
ReactDOMServer.renderToString(React.createElement('input', {type: 'text', onKeydown: '1'}));
1427
- expect(console.error.calls.count()).toBe(2);
1428
- expect(console.error.calls.argsFor(0)[0]).toContain('onClick');
1429
- expect(console.error.calls.argsFor(1)[0]).toContain('onKeyDown');
1427
+ expectDev(console.error.calls.count()).toBe(2);
1428
+ expectDev(console.error.calls.argsFor(0)[0]).toContain('onClick');
1429
+ expectDev(console.error.calls.argsFor(1)[0]).toContain('onKeyDown');
1430
});
1431
1432
it('should warn about incorrect casing on properties', () => {
1433
spyOn(console, 'error');
1434
ReactTestUtils.renderIntoDocument(React.createElement('input', {type: 'text', tabindex: '1'}));
1435
- expect(console.error.calls.count()).toBe(1);
1436
- expect(console.error.calls.argsFor(0)[0]).toContain('tabIndex');
1435
+ expectDev(console.error.calls.count()).toBe(1);
1436
+ expectDev(console.error.calls.argsFor(0)[0]).toContain('tabIndex');
1437
});
1438
1439
it('should warn about incorrect casing on event handlers', () => {
1440
spyOn(console, 'error');
1441
ReactTestUtils.renderIntoDocument(React.createElement('input', {type: 'text', onclick: '1'}));
1442
ReactTestUtils.renderIntoDocument(React.createElement('input', {type: 'text', onKeydown: '1'}));
1443
- expect(console.error.calls.count()).toBe(2);
1444
- expect(console.error.calls.argsFor(0)[0]).toContain('onClick');
1445
- expect(console.error.calls.argsFor(1)[0]).toContain('onKeyDown');
1443
+ expectDev(console.error.calls.count()).toBe(2);
1444
+ expectDev(console.error.calls.argsFor(0)[0]).toContain('onClick');
1445
+ expectDev(console.error.calls.argsFor(1)[0]).toContain('onKeyDown');
1446
});
1447
1448
it('should warn about class', () => {
1449
spyOn(console, 'error');
1450
ReactDOMServer.renderToString(React.createElement('div', {class: 'muffins'}));
1451
- expect(console.error.calls.count()).toBe(1);
1452
- expect(console.error.calls.argsFor(0)[0]).toContain('className');
1451
+ expectDev(console.error.calls.count()).toBe(1);
1452
+ expectDev(console.error.calls.argsFor(0)[0]).toContain('className');
1453
});
1454
1455
it('should warn about props that are no longer supported', () => {
1456
spyOn(console, 'error');
1457
ReactTestUtils.renderIntoDocument(<div />);
1458
- expect(console.error.calls.count()).toBe(0);
1458
+ expectDev(console.error.calls.count()).toBe(0);
1459
1460
ReactTestUtils.renderIntoDocument(<div onFocusIn={() => {}} />);
1461
- expect(console.error.calls.count()).toBe(1);
1461
+ expectDev(console.error.calls.count()).toBe(1);
1462
1463
ReactTestUtils.renderIntoDocument(<div onFocusOut={() => {}} />);
1464
- expect(console.error.calls.count()).toBe(2);
1464
+ expectDev(console.error.calls.count()).toBe(2);
1465
});
1466
1467
it('gives source code refs for unknown prop warning', () => {
1468
spyOn(console, 'error');
1469
ReactDOMServer.renderToString(<div class="paladin"/>);
1470
ReactDOMServer.renderToString(<input type="text" onclick="1"/>);
1471
- expect(console.error.calls.count()).toBe(2);
1471
+ expectDev(console.error.calls.count()).toBe(2);
1472
expect(
1473
normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])
1474
).toBe(
@@ -1487,10 +1487,10 @@ describe('ReactDOMComponent', () => {
1487
var container = document.createElement('div');
1488
1489
ReactDOMServer.renderToString(<div className="paladin" />, container);
1490
- expect(console.error.calls.count()).toBe(0);
1490
+ expectDev(console.error.calls.count()).toBe(0);
1491
1492
ReactDOMServer.renderToString(<div class="paladin" />, container);
1493
- expect(console.error.calls.count()).toBe(1);
1493
+ expectDev(console.error.calls.count()).toBe(1);
1494
expect(
1495
normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])
1496
).toBe(
@@ -1512,13 +1512,13 @@ describe('ReactDOMComponent', () => {
1512
</div>
1513
);
1514
1515
- expect(console.error.calls.count()).toBe(2);
1515
+ expectDev(console.error.calls.count()).toBe(2);
1516
1517
- expect(console.error.calls.argsFor(0)[0]).toContain('className');
1517
+ expectDev(console.error.calls.argsFor(0)[0]).toContain('className');
1518
var matches = console.error.calls.argsFor(0)[0].match(/.*\(.*:(\d+)\).*/);
1519
var previousLine = matches[1];
1520
1521
- expect(console.error.calls.argsFor(1)[0]).toContain('onClick');
1521
+ expectDev(console.error.calls.argsFor(1)[0]).toContain('onClick');
1522
matches = console.error.calls.argsFor(1)[0].match(/.*\(.*:(\d+)\).*/);
1523
var currentLine = matches[1];
1524
@@ -1563,13 +1563,13 @@ describe('ReactDOMComponent', () => {
1563
1564
ReactDOMServer.renderToString(<Parent />, container);
1565
1566
- expect(console.error.calls.count()).toBe(2);
1566
+ expectDev(console.error.calls.count()).toBe(2);
1567
1568
- expect(console.error.calls.argsFor(0)[0]).toContain('className');
1568
+ expectDev(console.error.calls.argsFor(0)[0]).toContain('className');
1569
var matches = console.error.calls.argsFor(0)[0].match(/.*\(.*:(\d+)\).*/);
1570
var previousLine = matches[1];
1571
1572
- expect(console.error.calls.argsFor(1)[0]).toContain('onClick');
1572
+ expectDev(console.error.calls.argsFor(1)[0]).toContain('onClick');
1573
matches = console.error.calls.argsFor(1)[0].match(/.*\(.*:(\d+)\).*/);
1574
var currentLine = matches[1];
1575
@@ -1584,13 +1584,13 @@ describe('ReactDOMComponent', () => {
1584
ReactTestUtils.renderIntoDocument(React.createElement('label', {for: 'test'}));
1585
ReactTestUtils.renderIntoDocument(React.createElement('input', {type: 'text', autofocus: true}));
1586
1587
- expect(console.error.calls.count()).toBe(2);
1587
+ expectDev(console.error.calls.count()).toBe(2);
1588
1589
- expect(console.error.calls.argsFor(0)[0]).toBe(
1589
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
1590
'Warning: Unknown DOM property for. Did you mean htmlFor?\n in label'
1591
);
1592
1593
- expect(console.error.calls.argsFor(1)[0]).toBe(
1593
+ expectDev(console.error.calls.argsFor(1)[0]).toBe(
1594
'Warning: Unknown DOM property autofocus. Did you mean autoFocus?\n in input'
1595
);
1596
});
src/renderers/dom/shared/__tests__/ReactDOMInvalidARIAHook-test.js
+7
-7
@@ -30,13 +30,13 @@ describe('ReactDOMInvalidARIAHook', () => {
30
it('should allow valid aria-* props', () => {
31
spyOn(console, 'error');
32
mountComponent({'aria-label': 'Bumble bees'});
33
- expect(console.error.calls.count()).toBe(0);
33
+ expectDev(console.error.calls.count()).toBe(0);
34
});
35
it('should warn for one invalid aria-* prop', () => {
36
spyOn(console, 'error');
37
mountComponent({'aria-badprop': 'maybe'});
38
- expect(console.error.calls.count()).toBe(1);
39
- expect(console.error.calls.argsFor(0)[0]).toContain(
38
+ expectDev(console.error.calls.count()).toBe(1);
39
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
40
'Warning: Invalid aria prop `aria-badprop` on <div> tag. ' +
41
'For details, see https://fb.me/invalid-aria-prop'
42
);
@@ -49,8 +49,8 @@ describe('ReactDOMInvalidARIAHook', () => {
49
'aria-malprop': 'Turbulent seas',
50
}
51
);
52
- expect(console.error.calls.count()).toBe(1);
53
- expect(console.error.calls.argsFor(0)[0]).toContain(
52
+ expectDev(console.error.calls.count()).toBe(1);
53
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
54
'Warning: Invalid aria props `aria-badprop`, `aria-malprop` on <div> ' +
55
'tag. For details, see https://fb.me/invalid-aria-prop'
56
);
@@ -59,8 +59,8 @@ describe('ReactDOMInvalidARIAHook', () => {
59
spyOn(console, 'error');
60
// The valid attribute name is aria-haspopup.
61
mountComponent({'aria-hasPopup': 'true'});
62
- expect(console.error.calls.count()).toBe(1);
63
- expect(console.error.calls.argsFor(0)[0]).toContain(
62
+ expectDev(console.error.calls.count()).toBe(1);
63
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
64
'Warning: Unknown ARIA attribute aria-hasPopup. ' +
65
'Did you mean aria-haspopup?'
66
);
src/renderers/dom/shared/syntheticEvents/__tests__/SyntheticEvent-test.js
+14
-14
@@ -87,9 +87,9 @@ describe('SyntheticEvent', () => {
87
expect(syntheticEvent.nativeEvent).toBe(null);
88
expect(syntheticEvent.target).toBe(null);
89
// once for each property accessed
90
- expect(console.error.calls.count()).toBe(3);
90
+ expectDev(console.error.calls.count()).toBe(3);
91
// assert the first warning for accessing `type`
92
- expect(console.error.calls.argsFor(0)[0]).toBe(
92
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
93
'Warning: This synthetic event is reused for performance reasons. If ' +
94
'you\'re seeing this, you\'re accessing the property `type` on a ' +
95
'released/nullified synthetic event. This is set to null. If you must ' +
@@ -104,8 +104,8 @@ describe('SyntheticEvent', () => {
104
var syntheticEvent = createEvent({srcElement: target});
105
syntheticEvent.destructor();
106
expect(syntheticEvent.type = 'MouseEvent').toBe('MouseEvent');
107
- expect(console.error.calls.count()).toBe(1);
108
- expect(console.error.calls.argsFor(0)[0]).toBe(
107
+ expectDev(console.error.calls.count()).toBe(1);
108
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
109
'Warning: This synthetic event is reused for performance reasons. If ' +
110
'you\'re seeing this, you\'re setting the property `type` on a ' +
111
'released/nullified synthetic event. This is effectively a no-op. If you must ' +
@@ -119,8 +119,8 @@ describe('SyntheticEvent', () => {
119
var syntheticEvent = createEvent({});
120
SyntheticEvent.release(syntheticEvent);
121
syntheticEvent.preventDefault();
122
- expect(console.error.calls.count()).toBe(1);
123
- expect(console.error.calls.argsFor(0)[0]).toBe(
122
+ expectDev(console.error.calls.count()).toBe(1);
123
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
124
'Warning: This synthetic event is reused for performance reasons. If ' +
125
'you\'re seeing this, you\'re accessing the method `preventDefault` on a ' +
126
'released/nullified synthetic event. This is a no-op function. If you must ' +
@@ -134,8 +134,8 @@ describe('SyntheticEvent', () => {
134
var syntheticEvent = createEvent({});
135
SyntheticEvent.release(syntheticEvent);
136
syntheticEvent.stopPropagation();
137
- expect(console.error.calls.count()).toBe(1);
138
- expect(console.error.calls.argsFor(0)[0]).toBe(
137
+ expectDev(console.error.calls.count()).toBe(1);
138
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
139
'Warning: This synthetic event is reused for performance reasons. If ' +
140
'you\'re seeing this, you\'re accessing the method `stopPropagation` on a ' +
141
'released/nullified synthetic event. This is a no-op function. If you must ' +
@@ -156,13 +156,13 @@ describe('SyntheticEvent', () => {
156
}
157
var instance = ReactDOM.render(<div onClick={assignEvent} />, element);
158
ReactTestUtils.Simulate.click(ReactDOM.findDOMNode(instance));
159
- expect(console.error.calls.count()).toBe(0);
159
+ expectDev(console.error.calls.count()).toBe(0);
160
161
// access a property to cause the warning
162
event.nativeEvent; // eslint-disable-line no-unused-expressions
163
164
- expect(console.error.calls.count()).toBe(1);
165
- expect(console.error.calls.argsFor(0)[0]).toBe(
164
+ expectDev(console.error.calls.count()).toBe(1);
165
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
166
'Warning: This synthetic event is reused for performance reasons. If ' +
167
'you\'re seeing this, you\'re accessing the property `nativeEvent` on a ' +
168
'released/nullified synthetic event. This is set to null. If you must ' +
@@ -178,15 +178,15 @@ describe('SyntheticEvent', () => {
178
SyntheticEvent.release(syntheticEvent);
179
expect(syntheticEvent.foo).toBe('bar');
180
if (typeof Proxy === 'function') {
181
- expect(console.error.calls.count()).toBe(1);
182
- expect(console.error.calls.argsFor(0)[0]).toBe(
181
+ expectDev(console.error.calls.count()).toBe(1);
182
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
183
'Warning: This synthetic event is reused for performance reasons. If ' +
184
'you\'re seeing this, you\'re adding a new property in the synthetic ' +
185
'event object. The property is never released. ' +
186
'See https://fb.me/react-event-pooling for more information.'
187
);
188
} else {
189
- expect(console.error.calls.count()).toBe(0);
189
+ expectDev(console.error.calls.count()).toBe(0);
190
}
191
});
192
});
src/renderers/dom/shared/wrappers/__tests__/ReactDOMInput-test.js
+44
-44
@@ -50,7 +50,7 @@ describe('ReactDOMInput', () => {
50
document.body.appendChild(container);
51
52
var node = ReactDOM.findDOMNode(stub);
53
- expect(console.error.calls.count()).toBe(1);
53
+ expectDev(console.error.calls.count()).toBe(1);
54
55
// Simulate a native change event
56
setUntrackedValue(node, 'giraffe');
@@ -593,12 +593,12 @@ describe('ReactDOMInput', () => {
593
ReactTestUtils.renderIntoDocument(
594
<input type="text" value="zoink" readOnly={true} />
595
);
596
- expect(console.error.calls.count()).toBe(0);
596
+ expectDev(console.error.calls.count()).toBe(0);
597
598
ReactTestUtils.renderIntoDocument(
599
<input type="text" value="zoink" readOnly={false} />
600
);
601
- expect(console.error.calls.count()).toBe(1);
601
+ expectDev(console.error.calls.count()).toBe(1);
602
});
603
604
@@ -617,12 +617,12 @@ describe('ReactDOMInput', () => {
617
ReactTestUtils.renderIntoDocument(
618
<input type="checkbox" checked="false" readOnly={true} />
619
);
620
- expect(console.error.calls.count()).toBe(0);
620
+ expectDev(console.error.calls.count()).toBe(0);
621
622
ReactTestUtils.renderIntoDocument(
623
<input type="checkbox" checked="false" readOnly={false} />
624
);
625
- expect(console.error.calls.count()).toBe(1);
625
+ expectDev(console.error.calls.count()).toBe(1);
626
});
627
628
it('should update defaultValue to empty string', () => {
@@ -634,21 +634,21 @@ describe('ReactDOMInput', () => {
634
635
it('should warn if value is null', () => {
636
ReactTestUtils.renderIntoDocument(<input type="text" value={null} />);
637
- expect(console.error.calls.argsFor(0)[0]).toContain(
637
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
638
'`value` prop on `input` should not be null. ' +
639
'Consider using the empty string to clear the component or `undefined` ' +
640
'for uncontrolled components.'
641
);
642
643
ReactTestUtils.renderIntoDocument(<input type="text" value={null} />);
644
- expect(console.error.calls.count()).toBe(1);
644
+ expectDev(console.error.calls.count()).toBe(1);
645
});
646
647
it('should warn if checked and defaultChecked props are specified', () => {
648
ReactTestUtils.renderIntoDocument(
649
<input type="radio" checked={true} defaultChecked={true} readOnly={true} />
650
);
651
- expect(console.error.calls.argsFor(0)[0]).toContain(
651
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
652
'A component contains an input of type radio with both checked and defaultChecked props. ' +
653
'Input elements must be either controlled or uncontrolled ' +
654
'(specify either the checked prop, or the defaultChecked prop, but not ' +
@@ -660,14 +660,14 @@ describe('ReactDOMInput', () => {
660
ReactTestUtils.renderIntoDocument(
661
<input type="radio" checked={true} defaultChecked={true} readOnly={true} />
662
);
663
- expect(console.error.calls.count()).toBe(1);
663
+ expectDev(console.error.calls.count()).toBe(1);
664
});
665
666
it('should warn if value and defaultValue props are specified', () => {
667
ReactTestUtils.renderIntoDocument(
668
<input type="text" value="foo" defaultValue="bar" readOnly={true} />
669
);
670
- expect(console.error.calls.argsFor(0)[0]).toContain(
670
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
671
'A component contains an input of type text with both value and defaultValue props. ' +
672
'Input elements must be either controlled or uncontrolled ' +
673
'(specify either the value prop, or the defaultValue prop, but not ' +
@@ -679,7 +679,7 @@ describe('ReactDOMInput', () => {
679
ReactTestUtils.renderIntoDocument(
680
<input type="text" value="foo" defaultValue="bar" readOnly={true} />
681
);
682
- expect(console.error.calls.count()).toBe(1);
682
+ expectDev(console.error.calls.count()).toBe(1);
683
});
684
685
it('should warn if controlled input switches to uncontrolled (value is undefined)', () => {
@@ -687,8 +687,8 @@ describe('ReactDOMInput', () => {
687
var container = document.createElement('div');
688
ReactDOM.render(stub, container);
689
ReactDOM.render(<input type="text" />, container);
690
- expect(console.error.calls.count()).toBe(1);
691
- expect(console.error.calls.argsFor(0)[0]).toContain(
690
+ expectDev(console.error.calls.count()).toBe(1);
691
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
692
'A component is changing a controlled input of type text to be uncontrolled. ' +
693
'Input elements should not switch from controlled to uncontrolled (or vice versa). ' +
694
'Decide between using a controlled or uncontrolled input ' +
@@ -701,8 +701,8 @@ describe('ReactDOMInput', () => {
701
var container = document.createElement('div');
702
ReactDOM.render(stub, container);
703
ReactDOM.render(<input type="text" value={null} />, container);
704
- expect(console.error.calls.count()).toBeGreaterThan(0);
705
- expect(console.error.calls.argsFor(1)[0]).toContain(
704
+ expectDev(console.error.calls.count()).toBeGreaterThan(0);
705
+ expectDev(console.error.calls.argsFor(1)[0]).toContain(
706
'A component is changing a controlled input of type text to be uncontrolled. ' +
707
'Input elements should not switch from controlled to uncontrolled (or vice versa). ' +
708
'Decide between using a controlled or uncontrolled input ' +
@@ -715,8 +715,8 @@ describe('ReactDOMInput', () => {
715
var container = document.createElement('div');
716
ReactDOM.render(stub, container);
717
ReactDOM.render(<input type="text" defaultValue="uncontrolled" />, container);
718
- expect(console.error.calls.count()).toBe(1);
719
- expect(console.error.calls.argsFor(0)[0]).toContain(
718
+ expectDev(console.error.calls.count()).toBe(1);
719
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
720
'A component is changing a controlled input of type text to be uncontrolled. ' +
721
'Input elements should not switch from controlled to uncontrolled (or vice versa). ' +
722
'Decide between using a controlled or uncontrolled input ' +
@@ -729,8 +729,8 @@ describe('ReactDOMInput', () => {
729
var container = document.createElement('div');
730
ReactDOM.render(stub, container);
731
ReactDOM.render(<input type="text" value="controlled" />, container);
732
- expect(console.error.calls.count()).toBe(1);
733
- expect(console.error.calls.argsFor(0)[0]).toContain(
732
+ expectDev(console.error.calls.count()).toBe(1);
733
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
734
'A component is changing an uncontrolled input of type text to be controlled. ' +
735
'Input elements should not switch from uncontrolled to controlled (or vice versa). ' +
736
'Decide between using a controlled or uncontrolled input ' +
@@ -743,8 +743,8 @@ describe('ReactDOMInput', () => {
743
var container = document.createElement('div');
744
ReactDOM.render(stub, container);
745
ReactDOM.render(<input type="text" value="controlled" />, container);
746
- expect(console.error.calls.count()).toBeGreaterThan(0);
747
- expect(console.error.calls.argsFor(1)[0]).toContain(
746
+ expectDev(console.error.calls.count()).toBeGreaterThan(0);
747
+ expectDev(console.error.calls.argsFor(1)[0]).toContain(
748
'A component is changing an uncontrolled input of type text to be controlled. ' +
749
'Input elements should not switch from uncontrolled to controlled (or vice versa). ' +
750
'Decide between using a controlled or uncontrolled input ' +
@@ -757,8 +757,8 @@ describe('ReactDOMInput', () => {
757
var container = document.createElement('div');
758
ReactDOM.render(stub, container);
759
ReactDOM.render(<input type="checkbox" />, container);
760
- expect(console.error.calls.count()).toBe(1);
761
- expect(console.error.calls.argsFor(0)[0]).toContain(
760
+ expectDev(console.error.calls.count()).toBe(1);
761
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
762
'A component is changing a controlled input of type checkbox to be uncontrolled. ' +
763
'Input elements should not switch from controlled to uncontrolled (or vice versa). ' +
764
'Decide between using a controlled or uncontrolled input ' +
@@ -771,8 +771,8 @@ describe('ReactDOMInput', () => {
771
var container = document.createElement('div');
772
ReactDOM.render(stub, container);
773
ReactDOM.render(<input type="checkbox" checked={null} />, container);
774
- expect(console.error.calls.count()).toBe(1);
775
- expect(console.error.calls.argsFor(0)[0]).toContain(
774
+ expectDev(console.error.calls.count()).toBe(1);
775
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
776
'A component is changing a controlled input of type checkbox to be uncontrolled. ' +
777
'Input elements should not switch from controlled to uncontrolled (or vice versa). ' +
778
'Decide between using a controlled or uncontrolled input ' +
@@ -785,8 +785,8 @@ describe('ReactDOMInput', () => {
785
var container = document.createElement('div');
786
ReactDOM.render(stub, container);
787
ReactDOM.render(<input type="checkbox" defaultChecked={true} />, container);
788
- expect(console.error.calls.count()).toBe(1);
789
- expect(console.error.calls.argsFor(0)[0]).toContain(
788
+ expectDev(console.error.calls.count()).toBe(1);
789
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
790
'A component is changing a controlled input of type checkbox to be uncontrolled. ' +
791
'Input elements should not switch from controlled to uncontrolled (or vice versa). ' +
792
'Decide between using a controlled or uncontrolled input ' +
@@ -799,8 +799,8 @@ describe('ReactDOMInput', () => {
799
var container = document.createElement('div');
800
ReactDOM.render(stub, container);
801
ReactDOM.render(<input type="checkbox" checked={true} />, container);
802
- expect(console.error.calls.count()).toBe(1);
803
- expect(console.error.calls.argsFor(0)[0]).toContain(
802
+ expectDev(console.error.calls.count()).toBe(1);
803
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
804
'A component is changing an uncontrolled input of type checkbox to be controlled. ' +
805
'Input elements should not switch from uncontrolled to controlled (or vice versa). ' +
806
'Decide between using a controlled or uncontrolled input ' +
@@ -813,8 +813,8 @@ describe('ReactDOMInput', () => {
813
var container = document.createElement('div');
814
ReactDOM.render(stub, container);
815
ReactDOM.render(<input type="checkbox" checked={true} />, container);
816
- expect(console.error.calls.count()).toBe(1);
817
- expect(console.error.calls.argsFor(0)[0]).toContain(
816
+ expectDev(console.error.calls.count()).toBe(1);
817
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
818
'A component is changing an uncontrolled input of type checkbox to be controlled. ' +
819
'Input elements should not switch from uncontrolled to controlled (or vice versa). ' +
820
'Decide between using a controlled or uncontrolled input ' +
@@ -827,8 +827,8 @@ describe('ReactDOMInput', () => {
827
var container = document.createElement('div');
828
ReactDOM.render(stub, container);
829
ReactDOM.render(<input type="radio" />, container);
830
- expect(console.error.calls.count()).toBe(1);
831
- expect(console.error.calls.argsFor(0)[0]).toContain(
830
+ expectDev(console.error.calls.count()).toBe(1);
831
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
832
'A component is changing a controlled input of type radio to be uncontrolled. ' +
833
'Input elements should not switch from controlled to uncontrolled (or vice versa). ' +
834
'Decide between using a controlled or uncontrolled input ' +
@@ -841,8 +841,8 @@ describe('ReactDOMInput', () => {
841
var container = document.createElement('div');
842
ReactDOM.render(stub, container);
843
ReactDOM.render(<input type="radio" checked={null} />, container);
844
- expect(console.error.calls.count()).toBe(1);
845
- expect(console.error.calls.argsFor(0)[0]).toContain(
844
+ expectDev(console.error.calls.count()).toBe(1);
845
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
846
'A component is changing a controlled input of type radio to be uncontrolled. ' +
847
'Input elements should not switch from controlled to uncontrolled (or vice versa). ' +
848
'Decide between using a controlled or uncontrolled input ' +
@@ -855,8 +855,8 @@ describe('ReactDOMInput', () => {
855
var container = document.createElement('div');
856
ReactDOM.render(stub, container);
857
ReactDOM.render(<input type="radio" defaultChecked={true} />, container);
858
- expect(console.error.calls.count()).toBe(1);
859
- expect(console.error.calls.argsFor(0)[0]).toContain(
858
+ expectDev(console.error.calls.count()).toBe(1);
859
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
860
'A component is changing a controlled input of type radio to be uncontrolled. ' +
861
'Input elements should not switch from controlled to uncontrolled (or vice versa). ' +
862
'Decide between using a controlled or uncontrolled input ' +
@@ -869,8 +869,8 @@ describe('ReactDOMInput', () => {
869
var container = document.createElement('div');
870
ReactDOM.render(stub, container);
871
ReactDOM.render(<input type="radio" checked={true} />, container);
872
- expect(console.error.calls.count()).toBe(1);
873
- expect(console.error.calls.argsFor(0)[0]).toContain(
872
+ expectDev(console.error.calls.count()).toBe(1);
873
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
874
'A component is changing an uncontrolled input of type radio to be controlled. ' +
875
'Input elements should not switch from uncontrolled to controlled (or vice versa). ' +
876
'Decide between using a controlled or uncontrolled input ' +
@@ -883,8 +883,8 @@ describe('ReactDOMInput', () => {
883
var container = document.createElement('div');
884
ReactDOM.render(stub, container);
885
ReactDOM.render(<input type="radio" checked={true} />, container);
886
- expect(console.error.calls.count()).toBe(1);
887
- expect(console.error.calls.argsFor(0)[0]).toContain(
886
+ expectDev(console.error.calls.count()).toBe(1);
887
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
888
'A component is changing an uncontrolled input of type radio to be controlled. ' +
889
'Input elements should not switch from uncontrolled to controlled (or vice versa). ' +
890
'Decide between using a controlled or uncontrolled input ' +
@@ -899,7 +899,7 @@ describe('ReactDOMInput', () => {
899
ReactDOM.render(<input type="radio" value="value" defaultChecked={true} />, container);
900
ReactDOM.render(<input type="radio" value="value" onChange={() => null} />, container);
901
ReactDOM.render(<input type="radio" />, container);
902
- expect(console.error.calls.count()).toBe(0);
902
+ expectDev(console.error.calls.count()).toBe(0);
903
});
904
905
it('should not warn if radio value changes but never becomes uncontrolled', () => {
@@ -913,14 +913,14 @@ describe('ReactDOMInput', () => {
913
checked={false}
914
onChange={() => null}
915
/>, container);
916
- expect(console.error.calls.count()).toBe(0);
916
+ expectDev(console.error.calls.count()).toBe(0);
917
});
918
919
it('should warn if radio checked false changes to become uncontrolled', () => {
920
var container = document.createElement('div');
921
ReactDOM.render(<input type="radio" value="value" checked={false} onChange={() => null} />, container);
922
ReactDOM.render(<input type="radio" value="value" />, container);
923
- expect(console.error.calls.argsFor(0)[0]).toContain(
923
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
924
'A component is changing a controlled input of type radio to be uncontrolled. ' +
925
'Input elements should not switch from controlled to uncontrolled (or vice versa). ' +
926
'Decide between using a controlled or uncontrolled input ' +
src/renderers/dom/shared/wrappers/__tests__/ReactDOMOption-test.js
+3
-3
@@ -39,8 +39,8 @@ describe('ReactDOMOption', () => {
39
expect(node.innerHTML).toBe('1 2');
40
ReactTestUtils.renderIntoDocument(<option>{1} <div /> {2}</option>);
41
// only warn once
42
- expect(console.error.calls.count()).toBe(1);
43
- expect(console.error.calls.argsFor(0)[0]).toContain('Only strings and numbers are supported as <option> children.');
42
+ expectDev(console.error.calls.count()).toBe(1);
43
+ expectDev(console.error.calls.argsFor(0)[0]).toContain('Only strings and numbers are supported as <option> children.');
44
});
45
46
it('should ignore null/undefined/false children without warning', () => {
@@ -50,7 +50,7 @@ describe('ReactDOMOption', () => {
50
51
var node = ReactDOM.findDOMNode(stub);
52
53
- expect(console.error.calls.count()).toBe(0);
53
+ expectDev(console.error.calls.count()).toBe(0);
54
expect(node.innerHTML).toBe('1 2');
55
});
56
src/renderers/dom/shared/wrappers/__tests__/ReactDOMSelect-test.js
+4
-4
@@ -430,14 +430,14 @@ describe('ReactDOMSelect', () => {
430
spyOn(console, 'error');
431
432
ReactTestUtils.renderIntoDocument(<select value={null}><option value="test"/></select>);
433
- expect(console.error.calls.argsFor(0)[0]).toContain(
433
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
434
'`value` prop on `select` should not be null. ' +
435
'Consider using the empty string to clear the component or `undefined` ' +
436
'for uncontrolled components.'
437
);
438
439
ReactTestUtils.renderIntoDocument(<select value={null}><option value="test"/></select>);
440
- expect(console.error.calls.count()).toBe(1);
440
+ expectDev(console.error.calls.count()).toBe(1);
441
});
442
443
it('should refresh state on change', () => {
@@ -464,7 +464,7 @@ describe('ReactDOMSelect', () => {
464
<option value="gorilla">A gorilla!</option>
465
</select>
466
);
467
- expect(console.error.calls.argsFor(0)[0]).toContain(
467
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
468
'Select elements must be either controlled or uncontrolled ' +
469
'(specify either the value prop, or the defaultValue prop, but not ' +
470
'both). Decide between using a controlled or uncontrolled select ' +
@@ -479,7 +479,7 @@ describe('ReactDOMSelect', () => {
479
<option value="gorilla">A gorilla!</option>
480
</select>
481
);
482
- expect(console.error.calls.count()).toBe(1);
482
+ expectDev(console.error.calls.count()).toBe(1);
483
});
484
485
it('should be able to safely remove select onChange', () => {
src/renderers/dom/shared/wrappers/__tests__/ReactDOMTextarea-test.js
+10
-10
@@ -255,7 +255,7 @@ describe('ReactDOMTextarea', () => {
255
var stub = <textarea>giraffe</textarea>;
256
var node = renderTextarea(stub, container);
257
258
- expect(console.error.calls.count()).toBe(1);
258
+ expectDev(console.error.calls.count()).toBe(1);
259
expect(node.value).toBe('giraffe');
260
261
// Changing children should do nothing, it functions like `defaultValue`.
@@ -294,14 +294,14 @@ describe('ReactDOMTextarea', () => {
294
it('should allow numbers as children', () => {
295
spyOn(console, 'error');
296
var node = renderTextarea(<textarea>{17}</textarea>);
297
- expect(console.error.calls.count()).toBe(1);
297
+ expectDev(console.error.calls.count()).toBe(1);
298
expect(node.value).toBe('17');
299
});
300
301
it('should allow booleans as children', () => {
302
spyOn(console, 'error');
303
var node = renderTextarea(<textarea>{false}</textarea>);
304
- expect(console.error.calls.count()).toBe(1);
304
+ expectDev(console.error.calls.count()).toBe(1);
305
expect(node.value).toBe('false');
306
});
307
@@ -313,7 +313,7 @@ describe('ReactDOMTextarea', () => {
313
},
314
};
315
var node = renderTextarea(<textarea>{obj}</textarea>);
316
- expect(console.error.calls.count()).toBe(1);
316
+ expectDev(console.error.calls.count()).toBe(1);
317
expect(node.value).toBe('sharkswithlasers');
318
});
319
@@ -326,7 +326,7 @@ describe('ReactDOMTextarea', () => {
326
);
327
}).toThrow();
328
329
- expect(console.error.calls.count()).toBe(1);
329
+ expectDev(console.error.calls.count()).toBe(1);
330
331
var node;
332
expect(function() {
@@ -335,7 +335,7 @@ describe('ReactDOMTextarea', () => {
335
336
expect(node.value).toBe('[object Object]');
337
338
- expect(console.error.calls.count()).toBe(2);
338
+ expectDev(console.error.calls.count()).toBe(2);
339
});
340
341
it('should unmount', () => {
@@ -348,14 +348,14 @@ describe('ReactDOMTextarea', () => {
348
spyOn(console, 'error');
349
350
ReactTestUtils.renderIntoDocument(<textarea value={null} />);
351
- expect(console.error.calls.argsFor(0)[0]).toContain(
351
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
352
'`value` prop on `textarea` should not be null. ' +
353
'Consider using the empty string to clear the component or `undefined` ' +
354
'for uncontrolled components.'
355
);
356
357
ReactTestUtils.renderIntoDocument(<textarea value={null} />);
358
- expect(console.error.calls.count()).toBe(1);
358
+ expectDev(console.error.calls.count()).toBe(1);
359
});
360
361
it('should warn if value and defaultValue are specified', () => {
@@ -363,7 +363,7 @@ describe('ReactDOMTextarea', () => {
363
ReactTestUtils.renderIntoDocument(
364
<textarea value="foo" defaultValue="bar" readOnly={true} />
365
);
366
- expect(console.error.calls.argsFor(0)[0]).toContain(
366
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
367
'Textarea elements must be either controlled or uncontrolled ' +
368
'(specify either the value prop, or the defaultValue prop, but not ' +
369
'both). Decide between using a controlled or uncontrolled textarea ' +
@@ -374,7 +374,7 @@ describe('ReactDOMTextarea', () => {
374
ReactTestUtils.renderIntoDocument(
375
<textarea value="foo" defaultValue="bar" readOnly={true} />
376
);
377
- expect(console.error.calls.count()).toBe(1);
377
+ expectDev(console.error.calls.count()).toBe(1);
378
});
379
380
});
src/renderers/dom/stack/client/__tests__/ReactDOM-test.js
+1
-1
@@ -115,7 +115,7 @@ describe('ReactDOM', () => {
115
spyOn(console, 'error');
116
var element = React.DOM.div();
117
expect(element.type).toBe('div');
118
- expect(console.error.calls.count()).toBe(0);
118
+ expectDev(console.error.calls.count()).toBe(0);
119
});
120
121
it('throws in render() if the mount callback is not a function', () => {
src/renderers/dom/stack/client/__tests__/ReactMount-test.js
+12
-12
@@ -134,12 +134,12 @@ describe('ReactMount', () => {
134
135
spyOn(console, 'error');
136
ReactMount.render(<div />, container);
137
- expect(console.error.calls.count()).toBe(1);
137
+ expectDev(console.error.calls.count()).toBe(1);
138
139
container.innerHTML = ' ' + ReactDOMServer.renderToString(<div />);
140
141
ReactMount.render(<div />, container);
142
- expect(console.error.calls.count()).toBe(2);
142
+ expectDev(console.error.calls.count()).toBe(2);
143
});
144
145
it('should not warn if mounting into non-empty node', () => {
@@ -148,7 +148,7 @@ describe('ReactMount', () => {
148
149
spyOn(console, 'error');
150
ReactMount.render(<div />, container);
151
- expect(console.error.calls.count()).toBe(0);
151
+ expectDev(console.error.calls.count()).toBe(0);
152
});
153
154
it('should warn when mounting into document.body', () => {
@@ -158,8 +158,8 @@ describe('ReactMount', () => {
158
159
ReactMount.render(<div />, iFrame.contentDocument.body);
160
161
- expect(console.error.calls.count()).toBe(1);
162
- expect(console.error.calls.argsFor(0)[0]).toContain(
161
+ expectDev(console.error.calls.count()).toBe(1);
162
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
163
'Rendering components directly into document.body is discouraged'
164
);
165
});
@@ -175,8 +175,8 @@ describe('ReactMount', () => {
175
<div>This markup contains an nbsp entity: client text</div>,
176
div
177
);
178
- expect(console.error.calls.count()).toBe(1);
179
- expect(console.error.calls.argsFor(0)[0]).toContain(
178
+ expectDev(console.error.calls.count()).toBe(1);
179
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
180
' (client) nbsp entity: client text</div>\n' +
181
' (server) nbsp entity: server text</div>'
182
);
@@ -220,8 +220,8 @@ describe('ReactMount', () => {
220
spyOn(console, 'error');
221
var rootNode = container.firstChild;
222
ReactDOM.render(<span />, rootNode);
223
- expect(console.error.calls.count()).toBe(1);
224
- expect(console.error.calls.argsFor(0)[0]).toBe(
223
+ expectDev(console.error.calls.count()).toBe(1);
224
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
225
'Warning: render(...): Replacing React-rendered children with a new ' +
226
'root component. If you intended to update the children of this node, ' +
227
'you should instead have the existing children update their state and ' +
@@ -246,15 +246,15 @@ describe('ReactMount', () => {
246
247
spyOn(console, 'error');
248
ReactDOMOther.unmountComponentAtNode(container);
249
- expect(console.error.calls.count()).toBe(1);
250
- expect(console.error.calls.argsFor(0)[0]).toBe(
249
+ expectDev(console.error.calls.count()).toBe(1);
250
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
251
'Warning: unmountComponentAtNode(): The node you\'re attempting to unmount ' +
252
'was rendered by another copy of React.'
253
);
254
255
// Don't throw a warning if the correct React copy unmounts the node
256
ReactDOM.unmountComponentAtNode(container);
257
- expect(console.error.calls.count()).toBe(1);
257
+ expectDev(console.error.calls.count()).toBe(1);
258
});
259
260
it('passes the correct callback context', () => {
src/renderers/dom/stack/client/__tests__/ReactMountDestruction-test.js
+4
-4
@@ -53,8 +53,8 @@ describe('ReactMount', () => {
53
var rootDiv = mainContainerDiv.firstChild;
54
spyOn(console, 'error');
55
ReactDOM.unmountComponentAtNode(rootDiv);
56
- expect(console.error.calls.count()).toBe(1);
57
- expect(console.error.calls.argsFor(0)[0]).toBe(
56
+ expectDev(console.error.calls.count()).toBe(1);
57
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
58
'Warning: unmountComponentAtNode(): The node you\'re attempting to ' +
59
'unmount was rendered by React and is not a top-level container. You ' +
60
'may have accidentally passed in a React root node instead of its ' +
@@ -77,8 +77,8 @@ describe('ReactMount', () => {
77
var nonRootDiv = mainContainerDiv.firstChild.firstChild;
78
spyOn(console, 'error');
79
ReactDOM.unmountComponentAtNode(nonRootDiv);
80
- expect(console.error.calls.count()).toBe(1);
81
- expect(console.error.calls.argsFor(0)[0]).toBe(
80
+ expectDev(console.error.calls.count()).toBe(1);
81
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
82
'Warning: unmountComponentAtNode(): The node you\'re attempting to ' +
83
'unmount was rendered by React and is not a top-level container. ' +
84
'Instead, have the parent component update its state and rerender in ' +
src/renderers/dom/stack/server/__tests__/ReactServerRendering-test.js
+7
-7
@@ -265,7 +265,7 @@ describe('ReactServerRendering', () => {
265
spyOn(console, 'error');
266
instance = ReactDOM.render(<TestComponent name="y" />, element);
267
expect(mountCount).toEqual(4);
268
- expect(console.error.calls.count()).toBe(1);
268
+ expectDev(console.error.calls.count()).toBe(1);
269
expect(element.innerHTML.length > 0).toBe(true);
270
expect(element.innerHTML).not.toEqual(lastMarkup);
271
@@ -476,8 +476,8 @@ describe('ReactServerRendering', () => {
476
spyOn(console, 'error');
477
ReactServerRendering.renderToString(<Foo />);
478
jest.runOnlyPendingTimers();
479
- expect(console.error.calls.count()).toBe(1);
480
- expect(console.error.calls.mostRecent().args[0]).toBe(
479
+ expectDev(console.error.calls.count()).toBe(1);
480
+ expectDev(console.error.calls.mostRecent().args[0]).toBe(
481
'Warning: setState(...): Can only update a mounting component.' +
482
' This usually means you called setState() outside componentWillMount() on the server.' +
483
' This is a no-op. Please check the code for the Foo component.'
@@ -502,8 +502,8 @@ describe('ReactServerRendering', () => {
502
spyOn(console, 'error');
503
ReactServerRendering.renderToString(<Bar />);
504
jest.runOnlyPendingTimers();
505
- expect(console.error.calls.count()).toBe(1);
506
- expect(console.error.calls.mostRecent().args[0]).toBe(
505
+ expectDev(console.error.calls.count()).toBe(1);
506
+ expectDev(console.error.calls.mostRecent().args[0]).toBe(
507
'Warning: replaceState(...): Can only update a mounting component. ' +
508
'This usually means you called replaceState() outside componentWillMount() on the server. ' +
509
'This is a no-op. Please check the code for the Bar component.'
@@ -529,8 +529,8 @@ describe('ReactServerRendering', () => {
529
spyOn(console, 'error');
530
ReactServerRendering.renderToString(<Baz />);
531
jest.runOnlyPendingTimers();
532
- expect(console.error.calls.count()).toBe(1);
533
- expect(console.error.calls.mostRecent().args[0]).toBe(
532
+ expectDev(console.error.calls.count()).toBe(1);
533
+ expectDev(console.error.calls.mostRecent().args[0]).toBe(
534
'Warning: forceUpdate(...): Can only update a mounting component. ' +
535
'This usually means you called forceUpdate() outside componentWillMount() on the server. ' +
536
'This is a no-op. Please check the code for the Baz component.'
src/renderers/shared/__tests__/ReactDebugTool-test.js
+3
-3
@@ -63,14 +63,14 @@ describe('ReactDebugTool', () => {
63
});
64
65
ReactDebugTool.onTestEvent();
66
- expect(console.error.calls.count()).toBe(1);
67
- expect(console.error.calls.argsFor(0)[0]).toContain(
66
+ expectDev(console.error.calls.count()).toBe(1);
67
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
68
'Exception thrown by hook while handling ' +
69
'onTestEvent: Error: Hi.'
70
);
71
72
ReactDebugTool.onTestEvent();
73
- expect(console.error.calls.count()).toBe(1);
73
+ expectDev(console.error.calls.count()).toBe(1);
74
});
75
76
it('returns isProfiling state', () => {
src/renderers/shared/__tests__/ReactPerf-test.js
+7
-7
@@ -389,28 +389,28 @@ describe('ReactPerf', () => {
389
var measurements = measure(() => {});
390
spyOn(console, 'error');
391
ReactPerf.getMeasurementsSummaryMap(measurements);
392
- expect(console.error.calls.count()).toBe(1);
393
- expect(console.error.calls.argsFor(0)[0]).toContain(
392
+ expectDev(console.error.calls.count()).toBe(1);
393
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
394
'`ReactPerf.getMeasurementsSummaryMap(...)` is deprecated. Use ' +
395
'`ReactPerf.getWasted(...)` instead.'
396
);
397
398
ReactPerf.getMeasurementsSummaryMap(measurements);
399
- expect(console.error.calls.count()).toBe(1);
399
+ expectDev(console.error.calls.count()).toBe(1);
400
});
401
402
it('warns once when using printDOM', () => {
403
var measurements = measure(() => {});
404
spyOn(console, 'error');
405
ReactPerf.printDOM(measurements);
406
- expect(console.error.calls.count()).toBe(1);
407
- expect(console.error.calls.argsFor(0)[0]).toContain(
406
+ expectDev(console.error.calls.count()).toBe(1);
407
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
408
'`ReactPerf.printDOM(...)` is deprecated. Use ' +
409
'`ReactPerf.printOperations(...)` instead.'
410
);
411
412
ReactPerf.printDOM(measurements);
413
- expect(console.error.calls.count()).toBe(1);
413
+ expectDev(console.error.calls.count()).toBe(1);
414
});
415
416
it('returns isRunning state', () => {
@@ -464,7 +464,7 @@ describe('ReactPerf', () => {
464
expect(ReactPerf.stop()).toBe(undefined);
465
expect(ReactPerf.isRunning()).toBe(false);
466
467
- expect(console.error.calls.count()).toBe(1);
467
+ expectDev(console.error.calls.count()).toBe(1);
468
469
__DEV__ = true;
470
});
src/renderers/shared/hooks/__tests__/ReactComponentTreeHook-test.js
+2
-2
@@ -1830,8 +1830,8 @@ describe('ReactComponentTreeHook', () => {
1830
1831
spyOn(console, 'error');
1832
getAddendum(-17);
1833
- expect(console.error.calls.count()).toBe(1);
1834
- expect(console.error.calls.argsFor(0)[0]).toBe(
1833
+ expectDev(console.error.calls.count()).toBe(1);
1834
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
1835
'Warning: ReactComponentTreeHook: Missing React element for ' +
1836
'debugID -17 when building stack'
1837
);
src/renderers/shared/stack/reconciler/__tests__/ReactComponent-test.js
+1
-1
@@ -348,7 +348,7 @@ describe('ReactComponent', () => {
348
);
349
350
// One warning for each element creation
351
- expect(console.error.calls.count()).toBe(2);
351
+ expectDev(console.error.calls.count()).toBe(2);
352
});
353
354
});
src/renderers/shared/stack/reconciler/__tests__/ReactComponentLifeCycle-test.js
+8
-8
@@ -234,8 +234,8 @@ describe('ReactComponentLifeCycle', () => {
234
}
235
236
ReactTestUtils.renderIntoDocument(<StatefulComponent />);
237
- expect(console.error.calls.count()).toBe(1);
238
- expect(console.error.calls.argsFor(0)[0]).toBe(
237
+ expectDev(console.error.calls.count()).toBe(1);
238
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
239
'Warning: setState(...): Can only update a mounted or ' +
240
'mounting component. This usually means you called setState() on an ' +
241
'unmounted component. This is a no-op. Please check the code for the ' +
@@ -263,8 +263,8 @@ describe('ReactComponentLifeCycle', () => {
263
var instance = ReactTestUtils.renderIntoDocument(element);
264
expect(instance.isMounted()).toBeTruthy();
265
266
- expect(console.error.calls.count()).toBe(1);
267
- expect(console.error.calls.argsFor(0)[0]).toContain(
266
+ expectDev(console.error.calls.count()).toBe(1);
267
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
268
'Component is accessing isMounted inside its render()'
269
);
270
});
@@ -289,8 +289,8 @@ describe('ReactComponentLifeCycle', () => {
289
var instance = ReactTestUtils.renderIntoDocument(element);
290
expect(instance.isMounted()).toBeTruthy();
291
292
- expect(console.error.calls.count()).toBe(1);
293
- expect(console.error.calls.argsFor(0)[0]).toContain(
292
+ expectDev(console.error.calls.count()).toBe(1);
293
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
294
'Component is accessing isMounted inside its render()'
295
);
296
});
@@ -330,8 +330,8 @@ describe('ReactComponentLifeCycle', () => {
330
});
331
332
ReactTestUtils.renderIntoDocument(<Component />);
333
- expect(console.error.calls.count()).toBe(1);
334
- expect(console.error.calls.argsFor(0)[0]).toContain(
333
+ expectDev(console.error.calls.count()).toBe(1);
334
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
335
'Component is accessing findDOMNode inside its render()'
336
);
337
});
src/renderers/shared/stack/reconciler/__tests__/ReactCompositeComponent-test.js
+23
-23
@@ -184,11 +184,11 @@ describe('ReactCompositeComponent', () => {
184
mountedInstance.methodAutoBound();
185
}).not.toThrow();
186
187
- expect(console.error.calls.count()).toBe(1);
187
+ expectDev(console.error.calls.count()).toBe(1);
188
var explicitlyBound = mountedInstance.methodToBeExplicitlyBound.bind(
189
mountedInstance
190
);
191
- expect(console.error.calls.count()).toBe(2);
191
+ expectDev(console.error.calls.count()).toBe(2);
192
var autoBound = mountedInstance.methodAutoBound;
193
194
var context = {};
@@ -269,13 +269,13 @@ describe('ReactCompositeComponent', () => {
269
instance = ReactDOM.render(instance, container);
270
instance.forceUpdate();
271
272
- expect(console.error.calls.count()).toBe(0);
272
+ expectDev(console.error.calls.count()).toBe(0);
273
274
ReactDOM.unmountComponentAtNode(container);
275
276
instance.forceUpdate();
277
- expect(console.error.calls.count()).toBe(1);
278
- expect(console.error.calls.argsFor(0)[0]).toBe(
277
+ expectDev(console.error.calls.count()).toBe(1);
278
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
279
'Warning: forceUpdate(...): Can only update a mounted or ' +
280
'mounting component. This usually means you called forceUpdate() on an ' +
281
'unmounted component. This is a no-op. Please check the code for the ' +
@@ -309,7 +309,7 @@ describe('ReactCompositeComponent', () => {
309
310
instance.setState({value: 1});
311
312
- expect(console.error.calls.count()).toBe(0);
312
+ expectDev(console.error.calls.count()).toBe(0);
313
314
expect(renders).toBe(2);
315
@@ -318,8 +318,8 @@ describe('ReactCompositeComponent', () => {
318
319
expect(renders).toBe(2);
320
321
- expect(console.error.calls.count()).toBe(1);
322
- expect(console.error.calls.argsFor(0)[0]).toBe(
321
+ expectDev(console.error.calls.count()).toBe(1);
322
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
323
'Warning: setState(...): Can only update a mounted or ' +
324
'mounting component. This usually means you called setState() on an ' +
325
'unmounted component. This is a no-op. Please check the code for the ' +
@@ -377,12 +377,12 @@ describe('ReactCompositeComponent', () => {
377
}
378
}
379
380
- expect(console.error.calls.count()).toBe(0);
380
+ expectDev(console.error.calls.count()).toBe(0);
381
382
var instance = ReactDOM.render(<Component />, container);
383
384
- expect(console.error.calls.count()).toBe(1);
385
- expect(console.error.calls.argsFor(0)[0]).toBe(
384
+ expectDev(console.error.calls.count()).toBe(1);
385
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
386
'Warning: setState(...): Cannot update during an existing state ' +
387
'transition (such as within `render` or another component\'s ' +
388
'constructor). Render methods should be a pure function of props and ' +
@@ -426,12 +426,12 @@ describe('ReactCompositeComponent', () => {
426
}
427
}
428
429
- expect(console.error.calls.count()).toBe(0);
429
+ expectDev(console.error.calls.count()).toBe(0);
430
var instance = ReactDOM.render(<Component />, container);
431
expect(renderPasses).toBe(2);
432
expect(instance.state.value).toBe(1);
433
- expect(console.error.calls.count()).toBe(1);
434
- expect(console.error.calls.argsFor(0)[0]).toBe(
433
+ expectDev(console.error.calls.count()).toBe(1);
434
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
435
'Warning: setState(...): Cannot call setState() inside getChildContext()'
436
);
437
});
@@ -502,8 +502,8 @@ describe('ReactCompositeComponent', () => {
502
var instance = ReactTestUtils.renderIntoDocument(<Component />);
503
instance.setState({bogus: true});
504
505
- expect(console.error.calls.count()).toBe(1);
506
- expect(console.error.calls.argsFor(0)[0]).toBe(
505
+ expectDev(console.error.calls.count()).toBe(1);
506
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
507
'Warning: Component.shouldComponentUpdate(): Returned undefined instead of a ' +
508
'boolean value. Make sure to return true or false.'
509
);
@@ -523,8 +523,8 @@ describe('ReactCompositeComponent', () => {
523
524
ReactTestUtils.renderIntoDocument(<Component />);
525
526
- expect(console.error.calls.count()).toBe(1);
527
- expect(console.error.calls.argsFor(0)[0]).toBe(
526
+ expectDev(console.error.calls.count()).toBe(1);
527
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
528
'Warning: Component has a method called ' +
529
'componentDidUnmount(). But there is no such lifecycle method. ' +
530
'Did you mean componentWillUnmount()?'
@@ -1022,8 +1022,8 @@ describe('ReactCompositeComponent', () => {
1022
}
1023
1024
ReactTestUtils.renderIntoDocument(<Outer />);
1025
- expect(console.error.calls.count()).toBe(1);
1026
- expect(console.error.calls.argsFor(0)[0]).toBe(
1025
+ expectDev(console.error.calls.count()).toBe(1);
1026
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
1027
'Warning: _renderNewRootComponent(): Render methods should ' +
1028
'be a pure function of props and state; triggering nested component ' +
1029
'updates from render is not allowed. If necessary, trigger nested ' +
@@ -1267,12 +1267,12 @@ describe('ReactCompositeComponent', () => {
1267
}
1268
}
1269
1270
- expect(console.error.calls.count()).toBe(0);
1270
+ expectDev(console.error.calls.count()).toBe(0);
1271
1272
ReactDOM.render(<Foo idx="qwe" />, container);
1273
1274
- expect(console.error.calls.count()).toBe(1);
1275
- expect(console.error.calls.argsFor(0)[0]).toContain(
1274
+ expectDev(console.error.calls.count()).toBe(1);
1275
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
1276
'Foo(...): When calling super() in `Foo`, make sure to pass ' +
1277
'up the same props that your component\'s constructor was passed.'
1278
);
src/renderers/shared/stack/reconciler/__tests__/ReactMockedComponent-test.js
+1
-1
@@ -32,7 +32,7 @@ describe('ReactMockedComponent', () => {
32
it('should allow an implicitly mocked component to be rendered without warnings', () => {
33
spyOn(console, 'error');
34
ReactTestUtils.renderIntoDocument(<AutoMockedComponent />);
35
- expect(console.error.calls.count()).toBe(0);
35
+ expectDev(console.error.calls.count()).toBe(0);
36
});
37
38
it('should allow an implicitly mocked component to be updated', () => {
src/renderers/shared/stack/reconciler/__tests__/ReactMultiChild-test.js
+3
-3
@@ -13,7 +13,7 @@
13
14
describe('ReactMultiChild', () => {
15
function normalizeCodeLocInfo(str) {
16
- return str.replace(/\(at .+?:\d+\)/g, '(at **)');
16
+ return str && str.replace(/\(at .+?:\d+\)/g, '(at **)');
17
}
18
19
var React;
@@ -185,8 +185,8 @@ describe('ReactMultiChild', () => {
185
container
186
);
187
188
- expect(console.error.calls.count()).toBe(1);
189
- expect(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
188
+ expectDev(console.error.calls.count()).toBe(1);
189
+ expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
190
'Warning: flattenChildren(...): ' +
191
'Encountered two children with the same key, `1`. ' +
192
'Child keys must be unique; when two children share a key, ' +
src/renderers/shared/stack/reconciler/__tests__/ReactMultiChildText-test.js
+3
-3
@@ -183,8 +183,8 @@ describe('ReactMultiChildText', () => {
183
[true, <div>{1.2}{''}{<div />}{'foo'}</div>, true, 1.2], [<div />, '1.2'],
184
['', 'foo', <div>{true}{<div />}{1.2}{''}</div>, 'foo'], ['', 'foo', <div />, 'foo'],
185
]);
186
- expect(console.error.calls.count()).toBe(1);
187
- expect(console.error.calls.argsFor(0)[0]).toContain(
186
+ expectDev(console.error.calls.count()).toBe(1);
187
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
188
'Warning: Each child in an array or iterator should have a unique "key" prop.'
189
);
190
});
@@ -244,6 +244,6 @@ describe('ReactMultiChildText', () => {
244
expect(childNodes[5]).toBe(alpha3);
245
246
// Using Maps as children gives a single warning
247
- expect(console.error.calls.count()).toBe(1);
247
+ expectDev(console.error.calls.count()).toBe(1);
248
});
249
});
src/renderers/shared/stack/reconciler/__tests__/ReactStatelessComponent-test.js
+12
-12
@@ -112,8 +112,8 @@ describe('ReactStatelessComponent', () => {
112
113
ReactDOM.render(<StatelessComponentWithChildContext name="A" />, container);
114
115
- expect(console.error.calls.count()).toBe(1);
116
- expect(console.error.calls.argsFor(0)[0]).toContain(
115
+ expectDev(console.error.calls.count()).toBe(1);
116
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
117
'StatelessComponentWithChildContext(...): childContextTypes cannot ' +
118
'be defined on a functional component.'
119
);
@@ -127,8 +127,8 @@ describe('ReactStatelessComponent', () => {
127
expect(function() {
128
ReactTestUtils.renderIntoDocument(<div><NotAComponent /></div>);
129
}).toThrow();
130
- expect(console.error.calls.count()).toBe(1);
131
- expect(console.error.calls.argsFor(0)[0]).toContain(
130
+ expectDev(console.error.calls.count()).toBe(1);
131
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
132
'NotAComponent(...): A valid React element (or null) must be returned. ' +
133
'You may have returned undefined, an array or some other invalid object.'
134
);
@@ -159,8 +159,8 @@ describe('ReactStatelessComponent', () => {
159
160
ReactTestUtils.renderIntoDocument(<Parent/>);
161
162
- expect(console.error.calls.count()).toBe(1);
163
- expect(console.error.calls.argsFor(0)[0]).toContain(
162
+ expectDev(console.error.calls.count()).toBe(1);
163
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
164
'Stateless function components cannot be given refs ' +
165
'(See ref "stateless" in StatelessComponent created by Parent). ' +
166
'Attempts to access this ref will fail.'
@@ -183,9 +183,9 @@ describe('ReactStatelessComponent', () => {
183
184
spyOn(console, 'error');
185
ReactTestUtils.renderIntoDocument(<Child />);
186
- expect(console.error.calls.count()).toBe(1);
187
- expect(console.error.calls.argsFor(0)[0]).toContain('a unique "key" prop');
188
- expect(console.error.calls.argsFor(0)[0]).toContain('Child');
186
+ expectDev(console.error.calls.count()).toBe(1);
187
+ expectDev(console.error.calls.argsFor(0)[0]).toContain('a unique "key" prop');
188
+ expectDev(console.error.calls.argsFor(0)[0]).toContain('Child');
189
});
190
191
it('should support default props and prop types', () => {
@@ -197,7 +197,7 @@ describe('ReactStatelessComponent', () => {
197
198
spyOn(console, 'error');
199
ReactTestUtils.renderIntoDocument(<Child />);
200
- expect(console.error.calls.count()).toBe(1);
200
+ expectDev(console.error.calls.count()).toBe(1);
201
expect(
202
console.error.calls.argsFor(0)[0].replace(/\(at .+?:\d+\)/g, '(at **)')
203
).toBe(
@@ -265,8 +265,8 @@ describe('ReactStatelessComponent', () => {
265
expect(function() {
266
ReactTestUtils.renderIntoDocument(<div><NotAComponent /></div>);
267
}).toThrow(); // has no method 'render'
268
- expect(console.error.calls.count()).toBe(1);
269
- expect(console.error.calls.argsFor(0)[0]).toContain(
268
+ expectDev(console.error.calls.count()).toBe(1);
269
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
270
'NotAComponent(...): A valid React element (or null) must be returned. You may ' +
271
'have returned undefined, an array or some other invalid object.'
272
);
src/renderers/shared/stack/reconciler/__tests__/ReactUpdates-test.js
+1
@@ -897,6 +897,7 @@ describe('ReactUpdates', () => {
897
898
var component = ReactTestUtils.renderIntoDocument(<A />);
899
900
+ console.log('xxx', expect().toThrowError);
901
expect(() => component.setState({}, 'no')).toThrowError(
902
'setState(...): Expected the last optional `callback` argument ' +
903
'to be a function. Instead received: string.'
src/renderers/testing/__tests__/ReactTestRenderer-test.js
+2
-2
@@ -223,8 +223,8 @@ describe('ReactTestRenderer', () => {
223
}
224
ReactTestRenderer.create(<Baz />);
225
ReactTestRenderer.create(<Foo />);
226
- expect(console.error.calls.count()).toBe(1);
227
- expect(console.error.calls.argsFor(0)[0]).toContain(
226
+ expectDev(console.error.calls.count()).toBe(1);
227
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
228
'Stateless function components cannot be given refs ' +
229
'(See ref "foo" in Bar created by Foo). ' +
230
'Attempts to access this ref will fail.'
src/shared/utils/__tests__/traverseAllChildren-test.js
+8
-8
@@ -84,8 +84,8 @@ describe('traverseAllChildren', () => {
84
'.0'
85
);
86
expect(traverseContext.length).toEqual(1);
87
- expect(console.error.calls.count()).toBe(1);
88
- expect(console.error.calls.argsFor(0)[0]).toContain(
87
+ expectDev(console.error.calls.count()).toBe(1);
88
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
89
'Warning: Each child in an array or iterator should have a unique "key" prop.'
90
);
91
});
@@ -330,8 +330,8 @@ describe('traverseAllChildren', () => {
330
'.2'
331
);
332
333
- expect(console.error.calls.count()).toBe(1);
334
- expect(console.error.calls.argsFor(0)[0]).toContain(
333
+ expectDev(console.error.calls.count()).toBe(1);
334
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
335
'Warning: Each child in an array or iterator should have a unique "key" prop.'
336
);
337
});
@@ -434,8 +434,8 @@ describe('traverseAllChildren', () => {
434
'.$#3:0'
435
);
436
437
- expect(console.error.calls.count()).toBe(1);
438
- expect(console.error.calls.argsFor(0)[0]).toContain(
437
+ expectDev(console.error.calls.count()).toBe(1);
438
+ expectDev(console.error.calls.argsFor(0)[0]).toContain(
439
'Warning: Using Maps as children is not yet fully supported. It is an ' +
440
'experimental feature that might be removed. Convert it to a sequence ' +
441
'/ iterable of keyed ReactElements instead.'
@@ -552,8 +552,8 @@ describe('traverseAllChildren', () => {
552
553
ReactTestUtils.renderIntoDocument(<Parent />);
554
555
- expect(console.error.calls.count()).toBe(1);
556
- expect(console.error.calls.argsFor(0)[0]).toBe(
555
+ expectDev(console.error.calls.count()).toBe(1);
556
+ expectDev(console.error.calls.argsFor(0)[0]).toBe(
557
'Warning: Using Maps as children is not yet fully supported. It is an ' +
558
'experimental feature that might be removed. Convert it to a sequence ' +
559
'/ iterable of keyed ReactElements instead. Check the render method of `Parent`.'
src/test/__tests__/ReactTestUtils-test.js
+2
-2
@@ -292,7 +292,7 @@ describe('ReactTestUtils', () => {
292
293
var shallowRenderer = ReactTestUtils.createRenderer();
294
shallowRenderer.render(<SimpleComponent />);
295
- expect(console.error.calls.count()).toBe(1);
295
+ expectDev(console.error.calls.count()).toBe(1);
296
expect(
297
console.error.calls.argsFor(0)[0].replace(/\(at .+?:\d+\)/g, '(at **)')
298
).toBe(
@@ -546,7 +546,7 @@ describe('ReactTestUtils', () => {
546
ReactDOM.findDOMNode(instance),
547
{clientX: CLIENT_X}
548
);
549
- expect(console.error.calls.count()).toBe(0);
549
+ expectDev(console.error.calls.count()).toBe(0);
550
});
551
552
it('can scry with stateless components involved', () => {