@samitouri / QOS-React / commits / cf1a96611f

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() {