@@ -3,6 +3,7 @@ import { mount } from "enzyme";
3
3
import DatePicker from "../src/index.jsx" ;
4
4
import Year from "../src/year" ;
5
5
import TestUtils from "react-dom/test-utils" ;
6
+ import { create } from "react-test-renderer" ;
6
7
import ReactDOM from "react-dom" ;
7
8
import * as utils from "../src/date_utils" ;
8
9
import Calendar from "../src/calendar" ;
@@ -166,4 +167,111 @@ describe("YearPicker", () => {
166
167
expect ( allPreselectedYears . length ) . to . equal ( 1 ) ;
167
168
} ) ;
168
169
} ) ;
170
+
171
+ describe ( "Keyboard navigation" , ( ) => {
172
+ let preSelected ;
173
+ const setPreSelection = ( preSelection ) => {
174
+ preSelected = preSelection ;
175
+ } ;
176
+
177
+ let selectedDay ;
178
+ const onDayClick = ( day ) => {
179
+ selectedDay = day ;
180
+ } ;
181
+
182
+ const getPicker = ( initialDate , props ) =>
183
+ TestUtils . renderIntoDocument (
184
+ < Year
185
+ selected = { utils . newDate ( initialDate ) }
186
+ date = { utils . newDate ( initialDate ) }
187
+ setPreSelection = { setPreSelection }
188
+ preSelection = { utils . newDate ( initialDate ) }
189
+ onDayClick = { onDayClick }
190
+ yearItemNumber = { 12 }
191
+ { ...props }
192
+ />
193
+ ) ;
194
+
195
+ const simulateLeft = ( target ) =>
196
+ TestUtils . Simulate . keyDown ( target , {
197
+ key : "ArrowLeft" ,
198
+ keyCode : 37 ,
199
+ which : 37 ,
200
+ } ) ;
201
+ const simulateRight = ( target ) =>
202
+ TestUtils . Simulate . keyDown ( target , {
203
+ key : "ArrowRight" ,
204
+ keyCode : 39 ,
205
+ which : 39 ,
206
+ } ) ;
207
+
208
+ it ( "should preSelect and set 2020 on left arrow press" , ( ) => {
209
+ const yearPicker = getPicker ( "2021-01-01" ) ;
210
+
211
+ const target = TestUtils . findRenderedDOMComponentWithClass (
212
+ yearPicker ,
213
+ "react-datepicker__year-text--selected"
214
+ ) ;
215
+ simulateLeft ( target ) ;
216
+
217
+ expect ( utils . getYear ( preSelected ) ) . to . equal ( 2020 ) ;
218
+ } ) ;
219
+ it ( "should preSelect and set 2022 on left arrow press" , ( ) => {
220
+ const yearPicker = getPicker ( "2021-01-01" ) ;
221
+
222
+ const target = TestUtils . findRenderedDOMComponentWithClass (
223
+ yearPicker ,
224
+ "react-datepicker__year-text--selected"
225
+ ) ;
226
+ simulateRight ( target ) ;
227
+
228
+ expect ( utils . getYear ( preSelected ) ) . to . equal ( 2022 ) ;
229
+ } ) ;
230
+ it ( "should paginate from 2017 to 2016" , ( ) => {
231
+ const yearPicker = getPicker ( "2017-01-01" ) ;
232
+
233
+ const target = TestUtils . findRenderedDOMComponentWithClass (
234
+ yearPicker ,
235
+ "react-datepicker__year-text--selected"
236
+ ) ;
237
+ simulateLeft ( target ) ;
238
+
239
+ expect ( utils . getYear ( preSelected ) ) . to . equal ( 2016 ) ;
240
+ } ) ;
241
+ it ( "should paginate from 2028 to 2029" , ( ) => {
242
+ const yearPicker = getPicker ( "2028-01-01" ) ;
243
+
244
+ const target = TestUtils . findRenderedDOMComponentWithClass (
245
+ yearPicker ,
246
+ "react-datepicker__year-text--selected"
247
+ ) ;
248
+ simulateRight ( target ) ;
249
+
250
+ expect ( utils . getYear ( preSelected ) ) . to . equal ( 2029 ) ;
251
+ } ) ;
252
+ it ( "should select 2021 when Enter key is pressed" , ( ) => {
253
+ const yearPicker = getPicker ( "2021-01-01" ) ;
254
+
255
+ const target = TestUtils . findRenderedDOMComponentWithClass (
256
+ yearPicker ,
257
+ "react-datepicker__year-text--selected"
258
+ ) ;
259
+
260
+ TestUtils . Simulate . keyDown ( target , { key : "Enter" , code : 13 , which : 13 } ) ;
261
+ expect ( utils . getYear ( selectedDay ) ) . to . equal ( 2021 ) ;
262
+ } ) ;
263
+ it ( "should disable keyboard navigation" , ( ) => {
264
+ const yearPicker = getPicker ( "2021-01-01" , {
265
+ disabledKeyboardNavigation : true ,
266
+ } ) ;
267
+
268
+ const target = TestUtils . findRenderedDOMComponentWithClass (
269
+ yearPicker ,
270
+ "react-datepicker__year-text--selected"
271
+ ) ;
272
+ simulateRight ( target ) ;
273
+
274
+ expect ( utils . getYear ( preSelected ) ) . to . equal ( 2021 ) ;
275
+ } ) ;
276
+ } ) ;
169
277
} ) ;
0 commit comments