@@ -33,27 +33,25 @@ describe('<DatePicker />', () => {
3333
3434 test ( 'open/close calendar' , ( ) => {
3535 wrapper = mount ( defaultDatePicker ) ;
36+ // check to make sure calendar is hidden
3637 expect ( wrapper . state ( 'hidden' ) ) . toBeTruthy ( ) ;
3738
39+ // click to show calendar
3840 wrapper . find ( 'input[type="text"]' ) . simulate ( 'click' , { type : 'input' } ) ;
3941
42+ // check to make sure calendar is shown
4043 expect ( wrapper . state ( 'hidden' ) ) . toBeFalsy ( ) ;
4144
45+ // clicking on input text should keep calendar displayed
4246 wrapper . find ( 'input[type="text"]' ) . simulate ( 'click' , { type : 'input' } ) ;
4347
48+ // check to make sure calendar is shown
4449 expect ( wrapper . state ( 'hidden' ) ) . toBeFalsy ( ) ;
4550
46- wrapper . instance ( ) . componentWillMount ( ) ;
47-
48- let event = new MouseEvent ( 'mousedown' , {
49- target : document . querySelector ( 'body' )
50- } ) ;
51- document . dispatchEvent ( event ) ;
52-
53- expect ( wrapper . state ( 'hidden' ) ) . toBeTruthy ( ) ;
54-
51+ // click to show calendar
5552 wrapper . find ( 'input[type="text"]' ) . simulate ( 'click' , { type : '' } ) ;
5653
54+ // check to make sure calendar is shown
5755 expect ( wrapper . state ( 'hidden' ) ) . toBeFalsy ( ) ;
5856 } ) ;
5957
@@ -62,34 +60,61 @@ describe('<DatePicker />', () => {
6260 //open date picker calendar
6361 expect ( wrapper . state ( 'hidden' ) ) . toBeTruthy ( ) ;
6462
63+ // click to show calendar
6564 wrapper . find ( 'input[type="text"]' ) . simulate ( 'click' , { type : 'input' } ) ;
6665
66+ // check to make sure calendar is shown
6767 expect ( wrapper . state ( 'hidden' ) ) . toBeFalsy ( ) ;
6868
6969 wrapper . instance ( ) . componentWillMount ( ) ;
7070
71+ // click on body element
7172 let event = new MouseEvent ( 'mousedown' , {
7273 target : document . querySelector ( 'body' )
7374 } ) ;
7475 document . dispatchEvent ( event ) ;
7576
77+ // check to make sure calendar is hidden
7678 expect ( wrapper . state ( 'hidden' ) ) . toBeTruthy ( ) ;
7779
7880 // show date picker, select date range then close
7981 wrapper . find ( 'input[type="text"]' ) . simulate ( 'click' , { type : '' } ) ;
8082
83+ // check to make sure calendar is shown
8184 expect ( wrapper . state ( 'hidden' ) ) . toBeFalsy ( ) ;
85+ } ) ;
8286
87+ test ( 'start date and end date range' , ( ) => {
8388 wrapper = mount ( rangeDatePicker ) ;
89+ // set dates
8490 let startRangeDate = new Date ( ) ;
8591 let endRangeDate = new Date ( ) ;
8692 endRangeDate . setDate ( endRangeDate . getDate ( ) + 3 ) ;
8793
8894 let arrDates = [ startRangeDate , endRangeDate ] ;
8995 wrapper . instance ( ) . updateDate ( arrDates ) ;
9096
97+ expect ( wrapper . state ( 'arrSelectedDates' ) . length ) . toEqual ( 2 ) ;
98+
99+ // click on body element
100+ let event = new MouseEvent ( 'mousedown' , {
101+ target : document . querySelector ( 'body' )
102+ } ) ;
91103 document . dispatchEvent ( event ) ;
92104
105+ // check to make sure calendar is hidden
106+ expect ( wrapper . state ( 'hidden' ) ) . toBeTruthy ( ) ;
107+ } ) ;
108+
109+ test ( 'check start date greater than end date for range' , ( ) => {
110+ wrapper = mount ( rangeDatePicker ) ;
111+ // set dates
112+ let startRangeDate = new Date ( ) ;
113+ let endRangeDate = new Date ( ) ;
114+ endRangeDate . setDate ( endRangeDate . getDate ( ) + 3 ) ;
115+
116+ let arrDates = [ startRangeDate , endRangeDate ] ;
117+
93118 // make start date bigger than end date
94119 arrDates = [ endRangeDate , startRangeDate ] ;
95120 wrapper . instance ( ) . updateDate ( arrDates ) ;
@@ -101,10 +126,37 @@ describe('<DatePicker />', () => {
101126 expect ( wrapper . state ( 'formattedDate' ) ) . toEqual ( switchFormattedDate ) ;
102127 expect ( wrapper . state ( 'arrSelectedDates' ) . length ) . toEqual ( 2 ) ;
103128
129+ // click on body element to hide calendar
130+ let event = new MouseEvent ( 'mousedown' , {
131+ target : document . querySelector ( 'body' )
132+ } ) ;
104133 document . dispatchEvent ( event ) ;
134+
135+ // check to make sure calendar is hidden
136+ expect ( wrapper . state ( 'hidden' ) ) . toBeTruthy ( ) ;
137+ } ) ;
138+
139+ test ( 'entering invalid range dates' , ( ) => {
140+ wrapper = mount ( rangeDatePicker ) ;
141+ // set dates
142+ let startRangeDate = new Date ( ) ;
143+ let endRangeDate = new Date ( ) ;
144+ endRangeDate . setDate ( endRangeDate . getDate ( ) + 3 ) ;
145+
146+ let startDate = `${ startRangeDate . getMonth ( ) +
147+ 1 } /${ startRangeDate . getDate ( ) } /${ startRangeDate . getFullYear ( ) } `;
148+ let endDate = `${ endRangeDate . getMonth ( ) +
149+ 1 } /${ endRangeDate . getDate ( ) } /${ endRangeDate . getFullYear ( ) + 4000 } `;
150+
151+ wrapper . find ( 'input[type="text"]' )
152+ . simulate ( 'change' , { target : { value : `${ startDate } -${ endDate } ` } } ) ;
153+
154+ wrapper . find ( 'input[type="text"]' ) . simulate ( 'keypress' , { key : 'Enter' } ) ;
155+
156+ expect ( wrapper . state ( 'arrSelectedDates' ) ) . toEqual ( 'undefined' ) ;
105157 } ) ;
106158
107- test ( 'update date method' , ( ) => {
159+ test ( 'updateDate method' , ( ) => {
108160 // choose one day in default picker
109161 wrapper = mount ( defaultDatePicker ) ;
110162 const date = new Date ( ) ;
@@ -143,7 +195,7 @@ describe('<DatePicker />', () => {
143195 expect ( wrapper . state ( 'arrSelectedDates' ) . length ) . toEqual ( 2 ) ;
144196 } ) ;
145197
146- test ( 'enter date value ' , ( ) => {
198+ test ( 'pressing enter key on date input ' , ( ) => {
147199 wrapper = mount ( rangeDatePicker ) ;
148200
149201 let startRangeDate = new Date ( ) ;
@@ -175,20 +227,24 @@ describe('<DatePicker />', () => {
175227
176228 wrapper . find ( 'input[type="text"]' ) . simulate ( 'keypress' , { key : 'Enter' } ) ;
177229
230+ expect ( wrapper . state ( 'formattedDate' ) ) . toBe ( '' ) ;
231+ expect ( wrapper . state ( 'selectedDate' ) ) . toBe ( 'undefined' ) ;
232+ } ) ;
233+
234+ test ( 'enter an invalid date string' , ( ) => {
178235 wrapper = mount ( defaultDatePicker ) ;
179236 let date = new Date ( ) ;
180- wrapper . instance ( ) . updateDate ( date ) ;
181- expect ( wrapper . state ( 'selectedDate' ) ) . toEqual ( date ) ;
182- formattedDate = ` ${ date . getMonth ( ) +
183- 1 } / ${ date . getDate ( ) } / ${ date . getFullYear ( ) } ` ;
184- expect ( wrapper . state ( 'formattedDate' ) ) . toEqual ( formattedDate ) ;
237+ let formattedDate = ` ${ date . getMonth ( ) +
238+ 1 } / ${ date . getDate ( ) } / ${ date . getFullYear ( ) + 4000 } ` ;
239+ wrapper . find ( 'input[type="text"]' )
240+ . simulate ( 'change' , { target : { value : formattedDate } } ) ;
241+
185242 wrapper . find ( 'input[type="text"]' ) . simulate ( 'keypress' , { key : 'Enter' } ) ;
186243
187- // press Esc key
188- wrapper . find ( 'input[type="text"]' ) . simulate ( 'keypress' , { key : 'Esc' } ) ;
244+ expect ( wrapper . state ( 'selectedDate' ) ) . toEqual ( 'undefined' ) ;
189245 } ) ;
190246
191- test ( 'format date ' , ( ) => {
247+ test ( 'formatDate method ' , ( ) => {
192248 wrapper = mount ( rangeDatePicker ) ;
193249 let startRangeDate = new Date ( ) ;
194250 let endRangeDate = new Date ( ) ;
@@ -225,6 +281,28 @@ describe('<DatePicker />', () => {
225281 expect ( wrapper . instance ( ) . formatDate ( startRangeDate ) ) . toEqual ( '' ) ;
226282 } ) ;
227283
284+ test ( 'enter text string for date' , ( ) => {
285+ wrapper = mount ( defaultDatePicker ) ;
286+
287+ wrapper . find ( 'input[type="text"]' )
288+ . simulate ( 'change' , { target : { value : 'May 14th, 2018' } } ) ;
289+
290+ wrapper . find ( 'input[type="text"]' ) . simulate ( 'keypress' , { key : 'Enter' } ) ;
291+
292+ expect ( wrapper . state ( 'formattedDate' ) ) . toEqual ( '' ) ;
293+ } ) ;
294+
295+ test ( 'enter text string for date on date range component' , ( ) => {
296+ wrapper = mount ( rangeDatePicker ) ;
297+
298+ wrapper . find ( 'input[type="text"]' )
299+ . simulate ( 'change' , { target : { value : 'May 14th, 2018-May 15th, 2018' } } ) ;
300+
301+ wrapper . find ( 'input[type="text"]' ) . simulate ( 'keypress' , { key : 'Enter' } ) ;
302+
303+ expect ( wrapper . state ( 'formattedDate' ) ) . toEqual ( '' ) ;
304+ } ) ;
305+
228306 test ( 'modify date on change' , ( ) => {
229307 wrapper = mount ( defaultDatePicker ) ;
230308 wrapper
0 commit comments