Fix tests for value change
Paul O’Shannessy committed
Apr 6, 2016 at 13:13 UTC
cf1a96611f2c47b277bd8243159a2aa7a4f52180
1 file changed
+30
-20
src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js
+30
-20
@@ -14,13 +14,14 @@
14
15
describe('ReactDOMComponent', function() {
16
var React;
17
-
17
var ReactDOM;
18
+ var ReactDOMFeatureFlags;
19
var ReactDOMServer;
20
21
beforeEach(function() {
22
jest.resetModuleRegistry();
23
React = require('React');
24
+ ReactDOMFeatureFlags = require('ReactDOMFeatureFlags')
25
ReactDOM = require('ReactDOM');
26
ReactDOMServer = require('ReactDOMServer');
27
});
@@ -497,26 +498,35 @@ describe('ReactDOMComponent', function() {
498
}),
499
});
500
500
- ReactDOM.render(<div value="" />, container);
501
- expect(nodeValueSetter.mock.calls.length).toBe(0);
502
-
503
- ReactDOM.render(<div value="foo" />, container);
504
- expect(nodeValueSetter.mock.calls.length).toBe(1);
505
-
506
- ReactDOM.render(<div value="foo" />, container);
507
- expect(nodeValueSetter.mock.calls.length).toBe(1);
508
-
509
- ReactDOM.render(<div />, container);
510
- expect(nodeValueSetter.mock.calls.length).toBe(2);
511
-
512
- ReactDOM.render(<div value={null} />, container);
513
- expect(nodeValueSetter.mock.calls.length).toBe(2);
514
-
515
- ReactDOM.render(<div value="" />, container);
516
- expect(nodeValueSetter.mock.calls.length).toBe(3);
501
+ function renderWithValueAndExpect(value, expected) {
502
+ ReactDOM.render(<div value={value} />, container);
503
+ expect(nodeValueSetter.mock.calls.length).toBe(expected);
504
+ }
505
518
- ReactDOM.render(<div />, container);
519
- expect(nodeValueSetter.mock.calls.length).toBe(3);
506
+ if (ReactDOMFeatureFlags.useCreateElement) {
507
+ renderWithValueAndExpect(undefined, 0);
508
+ renderWithValueAndExpect('', 1);
509
+ renderWithValueAndExpect('foo', 2);
510
+ renderWithValueAndExpect('foo', 2);
511
+ renderWithValueAndExpect(undefined, 3);
512
+ renderWithValueAndExpect(null, 3);
513
+ renderWithValueAndExpect('', 4);
514
+ renderWithValueAndExpect(undefined, 4);
515
+ } else {
516
+ renderWithValueAndExpect(undefined, 0);
517
+ // This differs because we will have created a node with the value
518
+ // attribute set. This means it will hasAttribute, so we won't try to
519
+ // set the value.
520
+ renderWithValueAndExpect('', 0);
521
+ renderWithValueAndExpect('foo', 1);
522
+ renderWithValueAndExpect('foo', 1);
523
+ renderWithValueAndExpect(undefined, 2);
524
+ renderWithValueAndExpect(null, 2);
525
+ // Again, much like the initial update case, we will always have the
526
+ // attribute set so we won't set the value.
527
+ renderWithValueAndExpect('', 2);
528
+ renderWithValueAndExpect(undefined, 2);
529
+ }
530
});
531
532
it('should not incur unnecessary DOM mutations for boolean properties', function() {