@@ -36,6 +36,7 @@ describe('ReactDOMInput', function() {
36
36
stub = ReactTestUtils . renderIntoDocument ( stub ) ;
37
37
var node = ReactDOM . findDOMNode ( stub ) ;
38
38
39
+ expect ( node . getAttribute ( 'value' ) ) . toBe ( '0' ) ;
39
40
expect ( node . value ) . toBe ( '0' ) ;
40
41
} ) ;
41
42
@@ -55,6 +56,68 @@ describe('ReactDOMInput', function() {
55
56
expect ( node . value ) . toBe ( 'false' ) ;
56
57
} ) ;
57
58
59
+ it ( 'should update `defaultValue` for uncontrolled input' , function ( ) {
60
+ var container = document . createElement ( 'div' ) ;
61
+
62
+ var el = ReactDOM . render ( < input type = "text" defaultValue = "0" /> , container ) ;
63
+ var node = ReactDOM . findDOMNode ( el ) ;
64
+
65
+ expect ( node . value ) . toBe ( '0' ) ;
66
+
67
+ ReactDOM . render ( < input type = "text" defaultValue = "1" /> , container ) ;
68
+
69
+ expect ( node . value ) . toBe ( '1' ) ;
70
+ } ) ;
71
+
72
+ it ( 'should take `defaultValue` for a controlled input' , function ( ) {
73
+ var container = document . createElement ( 'div' ) ;
74
+
75
+ var el = ReactDOM . render ( < input type = "text" value = { null } defaultValue = "0" /> , container ) ;
76
+ var node = ReactDOM . findDOMNode ( el ) ;
77
+
78
+ expect ( node . value ) . toBe ( '0' ) ;
79
+
80
+ ReactDOM . render ( < input type = "text" value = { null } defaultValue = "1" /> , container ) ;
81
+
82
+ expect ( node . value ) . toBe ( '1' ) ;
83
+
84
+ ReactDOM . render ( < input type = "text" value = { 3 } defaultValue = "2" /> , container ) ;
85
+
86
+ expect ( node . value ) . toBe ( '3' ) ;
87
+
88
+ ReactDOM . render ( < input type = "text" value = { 5 } defaultValue = "4" /> , container ) ;
89
+
90
+ expect ( node . value ) . toBe ( '5' ) ;
91
+ expect ( node . getAttribute ( 'value' ) ) . toBe ( '4' ) ;
92
+ expect ( node . defaultValue ) . toBe ( '4' ) ;
93
+ } ) ;
94
+
95
+ it ( 'should update `value` when changing to controlled input' , function ( ) {
96
+ var container = document . createElement ( 'div' ) ;
97
+
98
+ var el = ReactDOM . render ( < input type = "text" defaultValue = "0" /> , container ) ;
99
+ var node = ReactDOM . findDOMNode ( el ) ;
100
+
101
+ expect ( node . value ) . toBe ( '0' ) ;
102
+
103
+ ReactDOM . render ( < input type = "text" value = "1" defaultValue = "0" /> , container ) ;
104
+
105
+ expect ( node . value ) . toBe ( '1' ) ;
106
+ } ) ;
107
+
108
+ it ( 'should clear `value` when changing to uncontrolled input' , function ( ) {
109
+ var container = document . createElement ( 'div' ) ;
110
+
111
+ var el = ReactDOM . render ( < input type = "text" value = "0" readOnly = "true" /> , container ) ;
112
+ var node = ReactDOM . findDOMNode ( el ) ;
113
+
114
+ expect ( node . value ) . toBe ( '0' ) ;
115
+
116
+ ReactDOM . render ( < input type = "text" defaultValue = "1" /> , container ) ;
117
+
118
+ expect ( node . value ) . toBe ( '' ) ;
119
+ } ) ;
120
+
58
121
it ( 'should display "foobar" for `defaultValue` of `objToString`' , function ( ) {
59
122
var objToString = {
60
123
toString : function ( ) {
0 commit comments