11import { mount } from '@vue/test-utils'
2- import { beforeEach , describe , expect , it } from 'vitest'
2+ import { beforeEach , describe , expect , expectTypeOf , it } from 'vitest'
33import {
44 addDoc ,
55 doc as originalDoc ,
@@ -46,7 +46,7 @@ describe(
4646 options,
4747 ref = doc ( ) ,
4848 } : {
49- options ?: UseDocumentOptions
49+ options ?: UseDocumentOptions < T >
5050 ref ?: MaybeRefOrGetter < DocumentReference < T > >
5151 } = { } ) {
5252 let data ! : _RefFirestore < VueFirestoreDocumentData < T > >
@@ -341,18 +341,28 @@ describe(
341341 finished : boolean
342342 }
343343
344- expectType < Ref < DocumentData | null | undefined > > ( useDocument ( itemRef ) )
345- // @ts -expect-error
346- expectType < Ref < number | null > > ( useDocument ( itemRef ) )
344+ expectTypeOf ( useDocument ( itemRef ) . value ) . toEqualTypeOf <
345+ DocumentData | undefined
346+ > ( )
347347
348348 // Adds the id
349+
349350 // FIXME: this one is any but the test passes
350- expectType < string > ( useDocument ( doc ( db , 'todos' , '1' ) ) . value ?. id )
351- expectType < string > ( useDocument < TodoI > ( doc ( db , 'todos' , '1' ) ) . value ! . id )
352- expectType < _Nullable < TodoI > > (
351+ expectTypeOf (
352+ useDocument ( doc ( db , 'todos' , '1' ) ) . value ! . id
353+ // @ts -expect-error:
354+ ) . toEqualTypeOf < string > ( )
355+
356+ expectTypeOf (
353357 useDocument < TodoI > ( doc ( db , 'todos' , '1' ) ) . value
354- )
355- expectType < string > ( useDocument < unknown > ( doc ( db , 'todos' , '1' ) ) . value ! . id )
358+ ) . toMatchTypeOf < _Nullable < TodoI > > ( )
359+ expectTypeOf (
360+ useDocument < unknown > ( doc ( db , 'todos' , '1' ) ) . value ! . id
361+ ) . toBeString ( )
362+ expectTypeOf (
363+ useDocument < TodoI > ( doc ( db , 'todos' , '1' ) ) . value ! . id
364+ ) . toBeString ( )
365+
356366 useDocument (
357367 doc ( db , 'todos' ) . withConverter < TodoI , DocumentData > ( {
358368 fromFirestore : ( snapshot ) => {
@@ -364,7 +374,10 @@ describe(
364374 // @ts -expect-error: no id with custom converter
365375 ) . value ?. id
366376
367- expectType < Ref < number | null | undefined > > ( useDocument < number > ( itemRef ) )
377+ expectTypeOf ( useDocument < number > ( itemRef ) ) . toMatchTypeOf <
378+ Ref < _Nullable < number | null | undefined > >
379+ > ( )
380+
368381 expectType < Ref < number | null | undefined > > (
369382 useDocument < number > ( itemRef ) . data
370383 )
@@ -375,12 +388,15 @@ describe(
375388 toFirestore : ( data ) => ( { n : data } ) ,
376389 fromFirestore : ( snap , options ) => snap . data ( options ) . n as number ,
377390 } )
378- expectType < Ref < number | number | undefined > > (
379- useDocument ( refWithConverter )
380- )
381- expectType < Ref < number | number | undefined > > (
382- useDocument ( refWithConverter ) . data
383- )
391+ expectTypeOf ( useDocument ( refWithConverter ) ) . toMatchTypeOf <
392+ Ref < number | undefined >
393+ > ( )
394+ expectTypeOf ( useDocument ( refWithConverter ) . value ) . toEqualTypeOf <
395+ number | undefined
396+ > ( )
397+ expectTypeOf ( useDocument ( refWithConverter ) . data ) . toEqualTypeOf <
398+ Ref < number | undefined >
399+ > ( )
384400 // should not be null
385401 useDocument ( refWithConverter ) . value ?. toFixed ( 14 )
386402 // @ts -expect-error: string is not assignable to number
@@ -389,11 +405,13 @@ describe(
389405 useDocument ( refWithConverter ) . value . id
390406
391407 // destructuring
392- expectType < Ref < DocumentData | null | undefined > > (
393- useDocument ( itemRef ) . data
394- )
395- expectType < Ref < FirestoreError | undefined > > ( useDocument ( itemRef ) . error )
396- expectType < Ref < boolean > > ( useDocument ( itemRef ) . pending )
408+ expectTypeOf ( useDocument ( itemRef ) . data ) . toEqualTypeOf <
409+ Ref < DocumentData | undefined >
410+ > ( )
411+ expectTypeOf ( useDocument ( itemRef ) . error ) . toEqualTypeOf <
412+ Ref < FirestoreError | undefined >
413+ > ( )
414+ expectTypeOf ( useDocument ( itemRef ) . pending ) . toEqualTypeOf < Ref < boolean > > ( )
397415 } )
398416 } ,
399417 { retry : 3 }
0 commit comments