import { QueryClient, infiniteQueryOptions, queryOptions } from '@tanstack/react-query'
import { describe, expectTypeOf, it } from 'vitest'
import { QueriesHydration } from './QueriesHydration'
import { queryFn, queryKey } from './test-utils'
describe('', () => {
it('type check', () => {
const options1 = queryOptions({
queryKey: ['query1'],
queryFn: queryFn,
})
const options2 = queryOptions({
queryKey: ['query2'],
queryFn: queryFn,
})
// Should accept queries array with queryKey
void (async () =>
await QueriesHydration({
queries: [{ queryKey, queryFn }],
children: <>>,
}))()
// Should accept multiple queries
void (async () =>
await QueriesHydration({
queries: [options1, options2],
children: <>>,
}))()
// Should accept skipSsrOnError as boolean
void (async () =>
await QueriesHydration({
queries: [options1],
skipSsrOnError: true,
children: <>>,
}))()
// Should accept skipSsrOnError with fallback
void (async () =>
await QueriesHydration({
queries: [options1],
skipSsrOnError: { fallback:
Loading...
},
children: <>>,
}))()
// Should accept undefined queryClient prop
void (async () =>
await QueriesHydration({
queries: [options1],
queryClient: undefined,
children: <>>,
}))()
// Should accept QueryClient instance for queryClient prop
void (async () =>
await QueriesHydration({
queries: [options1],
queryClient: new QueryClient(),
children: <>>,
}))()
// Should accept infiniteQueryOptions
const infiniteOptions = infiniteQueryOptions({
queryKey: ['infinite'],
queryFn: queryFn,
getNextPageParam: () => null,
})
void (async () =>
await QueriesHydration({
queries: [infiniteOptions],
children: <>>,
}))()
// Should accept mixed queries and infiniteQueryOptions
void (async () =>
await QueriesHydration({
queries: [options1, infiniteOptions],
children: <>>,
}))()
// Return type should be JSX.Element (Promise)
expectTypeOf(
QueriesHydration({
queries: [options1],
children: <>>,
})
).toEqualTypeOf>()
})
})