@@ -8,7 +8,7 @@ import VarDatePicker from '../DatePicker'
88
99mockScrollIntoView ( )
1010
11- const [ currentYear , currentMonth ] = dayjs ( ) . format ( 'YYYY-MM' ) . split ( '-' )
11+ const [ currentYear ] = dayjs ( ) . format ( 'YYYY-MM' ) . split ( '-' )
1212
1313test ( 'datePicker plugin' , ( ) => {
1414 const app = createApp ( { } ) . use ( DatePicker )
@@ -258,6 +258,67 @@ test('datePicker should update title year when month preview crosses year', asyn
258258 wrapper . unmount ( )
259259} )
260260
261+ test ( 'datePicker fallbackViewDate should control initial panel when modelValue is empty' , async ( ) => {
262+ const wrapper = mount ( VarDatePicker , {
263+ props : {
264+ fallbackViewDate : '2026-04-01' ,
265+ } ,
266+ } )
267+
268+ await delay ( 0 )
269+ expect ( wrapper . find ( '.var-date-picker__title-year' ) . text ( ) ) . toBe ( '2026' )
270+ expect ( wrapper . find ( '.var-date-picker-header__value' ) . text ( ) ) . toBe ( '2026 四月' )
271+ expect ( wrapper . emitted ( ) [ 'update:modelValue' ] ) . toBeFalsy ( )
272+
273+ wrapper . unmount ( )
274+ } )
275+
276+ test ( 'datePicker fallbackViewDate should not override modelValue' , async ( ) => {
277+ const wrapper = mount ( VarDatePicker , {
278+ props : {
279+ modelValue : '2021-05-19' ,
280+ fallbackViewDate : '2026-04-01' ,
281+ } ,
282+ } )
283+
284+ await delay ( 0 )
285+ expect ( wrapper . find ( '.var-date-picker__title-year' ) . text ( ) ) . toBe ( '2021' )
286+ expect ( wrapper . find ( '.var-date-picker-header__value' ) . text ( ) ) . toBe ( '2021 五月' )
287+
288+ wrapper . unmount ( )
289+ } )
290+
291+ test ( 'datePicker fallbackViewDate should control initial panel for empty multiple and range value' , async ( ) => {
292+ const multipleWrapper = mount ( VarDatePicker , {
293+ props : {
294+ multiple : true ,
295+ modelValue : [ ] ,
296+ fallbackViewDate : '2026-04-01' ,
297+ } ,
298+ } )
299+
300+ await delay ( 0 )
301+ expect ( multipleWrapper . find ( '.var-date-picker__title-year' ) . text ( ) ) . toBe ( '2026' )
302+ expect ( multipleWrapper . find ( '.var-date-picker-header__value' ) . text ( ) ) . toBe ( '2026 四月' )
303+ expect ( multipleWrapper . emitted ( ) [ 'update:modelValue' ] ) . toBeFalsy ( )
304+ multipleWrapper . unmount ( )
305+
306+ const rangeWrapper = mount ( VarDatePicker , {
307+ props : {
308+ range : true ,
309+ modelValue : [ ] ,
310+ fallbackViewDate : '2026-04-01' ,
311+ } ,
312+ } )
313+
314+ await delay ( 0 )
315+ expect ( rangeWrapper . find ( '.var-date-picker__title-year' ) . text ( ) ) . toBe ( '2026' )
316+ expect ( rangeWrapper . find ( '.var-date-picker-header__value' ) . text ( ) ) . toBe ( '2026 四月' )
317+ expect ( rangeWrapper . emitted ( ) [ 'update:modelValue' ] ) . toBeFalsy ( )
318+
319+ rangeWrapper . unmount ( )
320+ } )
321+
261322test ( 'datePicker multiple' , async ( ) => {
262323 const template = `<var-date-picker multiple v-model="date" :type="type"/>`
263324
@@ -280,26 +341,17 @@ test('datePicker multiple', async () => {
280341 await elements [ 1 ] . trigger ( 'click' )
281342 await elements [ 2 ] . trigger ( 'click' )
282343
283- expect ( wrapper . vm . date ) . toEqual ( [
284- '2021-05-19' ,
285- `${ currentYear } -${ currentMonth } -01` ,
286- `${ currentYear } -${ currentMonth } -02` ,
287- `${ currentYear } -${ currentMonth } -03` ,
288- ] )
344+ expect ( wrapper . vm . date ) . toEqual ( [ '2021-05-19' , '2021-05-01' , '2021-05-02' , '2021-05-03' ] )
289345
290346 await elements [ 0 ] . trigger ( 'click' )
291- expect ( wrapper . vm . date ) . toEqual ( [
292- '2021-05-19' ,
293- `${ currentYear } -${ currentMonth } -02` ,
294- `${ currentYear } -${ currentMonth } -03` ,
295- ] )
347+ expect ( wrapper . vm . date ) . toEqual ( [ '2021-05-19' , '2021-05-02' , '2021-05-03' ] )
296348
297349 await wrapper . setData ( { type : 'month' , date : [ '2021-05' ] } )
298350 await delay ( 0 )
299351
300352 const btn = wrapper . find ( 'ul' ) . find ( 'button' )
301353 await btn . trigger ( 'click' )
302- expect ( wrapper . vm . date ) . toEqual ( [ '2021-05' , ` ${ currentYear } -01` ] )
354+ expect ( wrapper . vm . date ) . toEqual ( [ '2021-05' , '2021 -01' ] )
303355
304356 await wrapper . setData ( { type : 'year' , date : [ '2021' ] } )
305357 await delay ( 0 )
@@ -336,7 +388,7 @@ test('datePicker range', async () => {
336388 await elements [ 0 ] . trigger ( 'click' )
337389 await elements [ 2 ] . trigger ( 'click' )
338390
339- expect ( wrapper . vm . date ) . toEqual ( [ ` ${ currentYear } - ${ currentMonth } -01` , ` ${ currentYear } - ${ currentMonth } -03` ] )
391+ expect ( wrapper . vm . date ) . toEqual ( [ '2021-05 -01' , '2021-05 -03' ] )
340392
341393 await wrapper . setData ( { type : 'month' , date : null } )
342394 await wrapper . setData ( { type : 'month' , date : [ '2021-05' , '2021-06' ] } )
@@ -345,7 +397,7 @@ test('datePicker range', async () => {
345397 const lis = wrapper . find ( '.var-month-picker__content' ) . find ( 'ul' ) . findAll ( 'li' ) . slice ( 0 , 3 )
346398 await lis [ 0 ] . find ( 'button' ) . trigger ( 'click' )
347399 await lis [ 2 ] . find ( 'button' ) . trigger ( 'click' )
348- expect ( wrapper . vm . date ) . toEqual ( [ ` ${ currentYear } -01` , ` ${ currentYear } -03` ] )
400+ expect ( wrapper . vm . date ) . toEqual ( [ '2021 -01' , '2021 -03' ] )
349401 expect ( fn ) . toHaveBeenCalledTimes ( 1 )
350402
351403 await wrapper . setData ( { type : 'year' , date : [ currentYear , `${ + currentYear + 2 } ` ] } )
0 commit comments