1
1
import { flushPromises , mount , VueWrapper } from '@vue/test-utils' ;
2
- import { describe , it , expect , afterEach } from 'vitest' ;
2
+ import { describe , it , expect , afterEach , vi } from 'vitest' ;
3
3
import { nextTick } from 'vue' ;
4
4
import {
5
5
addMonths ,
@@ -12,6 +12,8 @@ import {
12
12
addDays ,
13
13
getHours ,
14
14
startOfMonth ,
15
+ startOfDay ,
16
+ endOfDay ,
15
17
} from 'date-fns' ;
16
18
import { ja } from 'date-fns/locale' ;
17
19
@@ -274,16 +276,55 @@ describe('Logic connection', () => {
274
276
const { dp, menu } = await mountDatepicker ( {
275
277
modeValue : null ,
276
278
range : true ,
277
- presetDates : [ { label : 'Today' , range } ] ,
279
+ presetDates : [ { label : 'Today' , value : range , testId : 'TodayPresetBtn' } ] ,
278
280
} ) ;
279
281
280
- menu . vm . presetDate ( range ) ;
282
+ await menu . find ( '[data-test-id="TodayPresetBtn"]' ) . trigger ( 'click' ) ;
281
283
282
284
expect ( dp . vm . internalModelValue ) . toHaveLength ( 2 ) ;
283
285
expect ( dp . vm . internalModelValue ) . toEqual ( range ) ;
284
286
dp . unmount ( ) ;
285
287
} ) ;
286
288
289
+ it ( 'Should preset range from preset-dates when range its a function' , async ( ) => {
290
+ const range = [ new Date ( '2000-01-01T00:00:00' ) , new Date ( '2000-12-31T23:59:59' ) ] ;
291
+ const { dp, menu } = await mountDatepicker ( {
292
+ modeValue : null ,
293
+ range : true ,
294
+ presetDates : [ { label : 'This Year' , value : ( ) => range , testId : 'ThisYearPresetBtn' } ] ,
295
+ } ) ;
296
+
297
+ await menu . find ( '[data-test-id="ThisYearPresetBtn"]' ) . trigger ( 'click' ) ;
298
+
299
+ expect ( dp . vm . internalModelValue ) . toHaveLength ( 2 ) ;
300
+ expect ( dp . vm . internalModelValue ) . toEqual ( range ) ;
301
+ dp . unmount ( ) ;
302
+ } ) ;
303
+
304
+ it ( 'Should correctly set today when preset-dates its a function and selected 2 days later' , async ( ) => {
305
+ vi . useFakeTimers ( )
306
+ vi . setSystemTime ( new Date ( '2000-01-01T00:00:00.000Z' ) )
307
+
308
+ const { dp, menu } = await mountDatepicker ( {
309
+ modeValue : null ,
310
+ range : true ,
311
+ presetDates : [ { label : 'Today' , value : ( ) => [ startOfDay ( new Date ( ) ) , endOfDay ( new Date ( ) ) ] , testId : 'TodayPresetBtn' } ] ,
312
+ } ) ;
313
+
314
+ await menu . find ( '[data-test-id="TodayPresetBtn"]' ) . trigger ( 'click' ) ;
315
+
316
+ expect ( dp . vm . internalModelValue ) . toEqual ( [ startOfDay ( new Date ( '2000-01-01T00:00:00.000Z' ) ) , endOfDay ( new Date ( '2000-01-01T00:00:00.000Z' ) ) ] ) ;
317
+
318
+ setTimeout ( async ( ) => await menu . find ( '[data-test-id="TodayPresetBtn"]' ) . trigger ( 'click' ) , 1000 * 60 * 60 * 48 ) //
319
+
320
+ vi . runAllTimers ( )
321
+
322
+ expect ( dp . vm . internalModelValue ) . toEqual ( [ startOfDay ( new Date ( '2000-01-03T00:00:00.000Z' ) ) , endOfDay ( new Date ( '2000-01-03T00:00:00.000Z' ) ) ] ) ;
323
+
324
+ dp . unmount ( ) ;
325
+ vi . useRealTimers ( )
326
+ } ) ;
327
+
287
328
it ( 'Should select week' , async ( ) => {
288
329
const start = startOfMonth ( new Date ( ) ) ;
289
330
0 commit comments