@@ -94,6 +94,111 @@ describe('when disabled', () => {
94
94
} ) ;
95
95
} ) ;
96
96
97
+ describe ( 'when `isClearable` is true' , ( ) => {
98
+ it ( 'should allow clearing input with keyboard' , ( ) => {
99
+ const onChange = jest . fn ( ) ;
100
+ const { queryByLabelText, getByLabelText } = renderDateRangeInput ( {
101
+ onChange,
102
+ } ) ;
103
+ const event = { target : { value : '09/18/2018 - 09/20/2018' } } ;
104
+ fireEvent . focus ( getByLabelText ( 'Date' ) ) ;
105
+ fireEvent . change ( getByLabelText ( 'Date' ) , event ) ;
106
+ fireEvent . keyDown ( getByLabelText ( 'Date' ) , { key : 'Enter' } ) ;
107
+ fireEvent . keyUp ( getByLabelText ( 'Date' ) , { key : 'Enter' } ) ;
108
+
109
+ const clearEvent = { target : { value : '' } } ;
110
+ fireEvent . focus ( getByLabelText ( 'Date' ) ) ;
111
+ fireEvent . change ( getByLabelText ( 'Date' ) , clearEvent ) ;
112
+ fireEvent . keyDown ( getByLabelText ( 'Date' ) , { key : 'Enter' } ) ;
113
+ fireEvent . keyUp ( getByLabelText ( 'Date' ) , { key : 'Enter' } ) ;
114
+
115
+ expect ( queryByLabelText ( 'clear' ) ) . not . toBeInTheDocument ( ) ;
116
+ expect ( onChange ) . toHaveBeenCalledWith ( {
117
+ target : {
118
+ id : 'date-range-input' ,
119
+ name : undefined ,
120
+ value : [ ] ,
121
+ } ,
122
+ } ) ;
123
+ } ) ;
124
+ it ( 'should allow clearing the input with icon button' , ( ) => {
125
+ const onChange = jest . fn ( ) ;
126
+ const { queryByLabelText, getByLabelText } = renderDateRangeInput ( {
127
+ onChange,
128
+ } ) ;
129
+ const event = { target : { value : '09/18/2018 - 09/20/2018' } } ;
130
+ fireEvent . focus ( getByLabelText ( 'Date' ) ) ;
131
+ fireEvent . change ( getByLabelText ( 'Date' ) , event ) ;
132
+ fireEvent . keyDown ( getByLabelText ( 'Date' ) , { key : 'Enter' } ) ;
133
+ fireEvent . keyUp ( getByLabelText ( 'Date' ) , { key : 'Enter' } ) ;
134
+
135
+ expect ( getByLabelText ( 'clear' ) ) . toBeInTheDocument ( ) ;
136
+
137
+ getByLabelText ( 'clear' ) . click ( ) ;
138
+ expect ( onChange ) . toHaveBeenCalledWith ( {
139
+ target : {
140
+ id : 'date-range-input' ,
141
+ name : undefined ,
142
+ value : [ '2018-09-18' , '2018-09-20' ] ,
143
+ } ,
144
+ } ) ;
145
+
146
+ expect ( queryByLabelText ( 'clear' ) ) . not . toBeInTheDocument ( ) ;
147
+ expect ( onChange ) . toHaveBeenCalledWith ( {
148
+ target : {
149
+ id : 'date-range-input' ,
150
+ name : undefined ,
151
+ value : [ ] ,
152
+ } ,
153
+ } ) ;
154
+ } ) ;
155
+ } ) ;
156
+
157
+ describe ( 'when `isClearable` is false' , ( ) => {
158
+ it ( 'should not allow clearing input with keyboard' , ( ) => {
159
+ const onChange = jest . fn ( ) ;
160
+ const { queryByLabelText, getByLabelText } = renderDateRangeInput ( {
161
+ onChange,
162
+ isClearable : false ,
163
+ } ) ;
164
+ const event = { target : { value : '09/18/2018 - 09/20/2018' } } ;
165
+ fireEvent . focus ( getByLabelText ( 'Date' ) ) ;
166
+ fireEvent . change ( getByLabelText ( 'Date' ) , event ) ;
167
+ fireEvent . keyDown ( getByLabelText ( 'Date' ) , { key : 'Enter' } ) ;
168
+ fireEvent . keyUp ( getByLabelText ( 'Date' ) , { key : 'Enter' } ) ;
169
+
170
+ const clearEvent = { target : { value : '' } } ;
171
+ fireEvent . focus ( getByLabelText ( 'Date' ) ) ;
172
+ fireEvent . change ( getByLabelText ( 'Date' ) , clearEvent ) ;
173
+ fireEvent . keyDown ( getByLabelText ( 'Date' ) , { key : 'Enter' } ) ;
174
+ fireEvent . keyUp ( getByLabelText ( 'Date' ) , { key : 'Enter' } ) ;
175
+
176
+ expect ( queryByLabelText ( 'clear' ) ) . not . toBeInTheDocument ( ) ;
177
+ expect ( onChange ) . not . toHaveBeenCalledWith ( {
178
+ target : {
179
+ id : 'date-range-input' ,
180
+ name : undefined ,
181
+ value : [ ] ,
182
+ } ,
183
+ } ) ;
184
+ } ) ;
185
+
186
+ it ( 'should not allow clearing the input' , ( ) => {
187
+ const onChange = jest . fn ( ) ;
188
+ const { queryByLabelText, getByLabelText } = renderDateRangeInput ( {
189
+ onChange,
190
+ isClearable : false ,
191
+ } ) ;
192
+ const event = { target : { value : '09/18/2018 - 09/20/2018' } } ;
193
+ fireEvent . focus ( getByLabelText ( 'Date' ) ) ;
194
+ fireEvent . change ( getByLabelText ( 'Date' ) , event ) ;
195
+ fireEvent . keyDown ( getByLabelText ( 'Date' ) , { key : 'Enter' } ) ;
196
+ fireEvent . keyUp ( getByLabelText ( 'Date' ) , { key : 'Enter' } ) ;
197
+
198
+ expect ( queryByLabelText ( 'clear' ) ) . not . toBeInTheDocument ( ) ;
199
+ } ) ;
200
+ } ) ;
201
+
97
202
describe ( 'when locale is "en"' , ( ) => {
98
203
it ( 'should allow changing the value by typing a date in an american format' , ( ) => {
99
204
const onChange = jest . fn ( ) ;
0 commit comments