Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,121 @@ describe('injectInfiniteQuery', () => {
vi.useRealTimers()
})

test('should narrow type after isSuccess', () => {
const query = TestBed.runInInjectionContext(() => {
return injectInfiniteQuery(() => ({
queryKey: ['infiniteQuery'],
queryFn: ({ pageParam }) =>
sleep(0).then(() => 'data on page ' + pageParam),
initialPageParam: 0,
getNextPageParam: () => 12,
}))
describe('without initialData', () => {
test('should narrow type after isSuccess', () => {
const query = TestBed.runInInjectionContext(() => {
return injectInfiniteQuery(() => ({
queryKey: ['infiniteQuery'],
queryFn: ({ pageParam }) =>
sleep(0).then(() => 'data on page ' + pageParam),
initialPageParam: 0,
getNextPageParam: () => 12,
}))
})

if (query.isSuccess()) {
const data = query.data()
expectTypeOf(data).toEqualTypeOf<InfiniteData<string, unknown>>()
}
})

test('should narrow type after isPending', () => {
const query = TestBed.runInInjectionContext(() => {
return injectInfiniteQuery(() => ({
queryKey: ['infiniteQuery'],
queryFn: ({ pageParam }) =>
sleep(0).then(() => 'data on page ' + pageParam),
initialPageParam: 0,
getNextPageParam: () => 12,
}))
})

if (query.isPending()) {
const data = query.data()
expectTypeOf(data).toEqualTypeOf<undefined>()
}
})

test('should narrow type after isError', () => {
const query = TestBed.runInInjectionContext(() => {
return injectInfiniteQuery(() => ({
queryKey: ['infiniteQuery'],
queryFn: ({ pageParam }) =>
sleep(0).then(() => 'data on page ' + pageParam),
initialPageParam: 0,
getNextPageParam: () => 12,
}))
})

if (query.isError()) {
const error = query.error()
expectTypeOf(error).toEqualTypeOf<Error>()
}
})
})

describe('with initialData', () => {
test('should narrow type after isSuccess', () => {
const query = TestBed.runInInjectionContext(() => {
return injectInfiniteQuery(() => ({
queryKey: ['infiniteQuery'],
queryFn: ({ pageParam }) =>
sleep(0).then(() => 'data on page ' + pageParam),
initialPageParam: 0,
getNextPageParam: () => 12,
initialData: {
pageParams: [0, 1],
pages: ['page 0 data', 'page 1 data'],
},
}))
})

if (query.isSuccess()) {
const data = query.data()
expectTypeOf(data).toEqualTypeOf<InfiniteData<string, unknown>>()
}
})

test('should narrow type after isPending', () => {
const query = TestBed.runInInjectionContext(() => {
return injectInfiniteQuery(() => ({
queryKey: ['infiniteQuery'],
queryFn: ({ pageParam }) =>
sleep(0).then(() => 'data on page ' + pageParam),
initialPageParam: 0,
getNextPageParam: () => 12,
initialData: {
pageParams: [0, 1],
pages: ['page 0 data', 'page 1 data'],
},
}))
})

if (query.isPending()) {
const data = query.data()
expectTypeOf(data).toEqualTypeOf<InfiniteData<string, unknown>>()
}
})

if (query.isSuccess()) {
const data = query.data()
expectTypeOf(data).toEqualTypeOf<InfiniteData<string, unknown>>()
}
test('should narrow type after isError', () => {
const query = TestBed.runInInjectionContext(() => {
return injectInfiniteQuery(() => ({
queryKey: ['infiniteQuery'],
queryFn: ({ pageParam }) =>
sleep(0).then(() => 'data on page ' + pageParam),
initialPageParam: 0,
getNextPageParam: () => 12,
initialData: {
pageParams: [0, 1],
pages: ['page 0 data', 'page 1 data'],
},
}))
})

if (query.isError()) {
const error = query.error()
expectTypeOf(error).toEqualTypeOf<Error>()
}
})
})
})
3 changes: 2 additions & 1 deletion packages/angular-query-experimental/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,8 @@ export type DefinedCreateInfiniteQueryResult<
TData,
TError
>,
> = MapToSignals<TDefinedInfiniteQueryObserver>
> =BaseQueryNarrowing<TData, TError> &
MapToSignals<TDefinedInfiniteQueryObserver>

export interface CreateMutationOptions<
TData = unknown,
Expand Down
Loading