@@ -1087,5 +1087,69 @@ describe("client", () => {
10871087 const allItems = result . current . data ?. pages . flatMap ( ( page ) => page . items ) ;
10881088 expect ( allItems ) . toEqual ( [ 1 , 2 , 3 , 4 , 5 , 6 ] ) ;
10891089 } ) ;
1090+ it ( 'should use return type from select option' , async ( ) => {
1091+ const fetchClient = createFetchClient < paths > ( { baseUrl } ) ;
1092+ const client = createClient ( fetchClient ) ;
1093+
1094+ // First page request handler
1095+ const firstRequestHandler = useMockRequestHandler ( {
1096+ baseUrl,
1097+ method : "get" ,
1098+ path : "/paginated-data" ,
1099+ status : 200 ,
1100+ body : { items : [ 1 , 2 , 3 ] , nextPage : 1 } ,
1101+ } ) ;
1102+
1103+ const { result, rerender } = renderHook (
1104+ ( ) =>
1105+ client . useInfiniteQuery (
1106+ "get" ,
1107+ "/paginated-data" ,
1108+ {
1109+ params : {
1110+ query : {
1111+ limit : 3 ,
1112+ } ,
1113+ } ,
1114+ } ,
1115+ {
1116+ getNextPageParam : ( lastPage ) => lastPage . nextPage ,
1117+ initialPageParam : 0 ,
1118+ select : ( data ) => data . pages . flatMap ( ( page ) => page . items ) . filter ( ( item ) => item !== undefined ) ,
1119+ } ,
1120+ ) ,
1121+ { wrapper } ,
1122+ ) ;
1123+
1124+ // Wait for initial query to complete
1125+ await waitFor ( ( ) => expect ( result . current . isSuccess ) . toBe ( true ) ) ;
1126+
1127+ expectTypeOf ( result . current . data ) . toEqualTypeOf < number [ ] | undefined > ( ) ;
1128+ expect ( result . current . data ) . toEqual ( [ 1 , 2 , 3 ] ) ;
1129+
1130+ // Set up mock for second page before triggering next page fetch
1131+ const secondRequestHandler = useMockRequestHandler ( {
1132+ baseUrl,
1133+ method : "get" ,
1134+ path : "/paginated-data" ,
1135+ status : 200 ,
1136+ body : { items : [ 4 , 5 , 6 ] , nextPage : 2 } ,
1137+ } ) ;
1138+
1139+ // Fetch next page
1140+ await act ( async ( ) => {
1141+ await result . current . fetchNextPage ( ) ;
1142+ // Force a rerender to ensure state is updated
1143+ rerender ( ) ;
1144+ } ) ;
1145+
1146+ // Wait for second page to be fetched and verify loading states
1147+ await waitFor ( ( ) => {
1148+ expect ( result . current . isFetching ) . toBe ( false ) ;
1149+ expect ( result . current . hasNextPage ) . toBe ( true ) ;
1150+ } ) ;
1151+
1152+ expect ( result . current . data ) . toEqual ( [ 1 , 2 , 3 , 4 , 5 , 6 ] ) ;
1153+ } ) ;
10901154 } ) ;
10911155} ) ;
0 commit comments