11import { TestBed } from '@angular/core/testing'
22import { afterEach , beforeEach , describe , expect , it , vi } from 'vitest'
3- import { Injector , provideZonelessChangeDetection } from '@angular/core'
3+ import {
4+ Component ,
5+ Injector ,
6+ provideZonelessChangeDetection ,
7+ } from '@angular/core'
8+ import { render } from '@testing-library/angular'
49import { queryKey , sleep } from '@tanstack/query-test-utils'
510import { QueryClient , injectInfiniteQuery , provideTanStackQuery } from '..'
6- import { expectSignals } from './test-utils'
711
812describe ( 'injectInfiniteQuery' , ( ) => {
913 let queryClient : QueryClient
@@ -25,42 +29,41 @@ describe('injectInfiniteQuery', () => {
2529
2630 it ( 'should properly execute infinite query' , async ( ) => {
2731 const key = queryKey ( )
28- const query = TestBed . runInInjectionContext ( ( ) => {
29- return injectInfiniteQuery ( ( ) => ( {
32+
33+ @Component ( {
34+ template : `
35+ <div>status: {{ query.status() }}</div>
36+ <div>pages: {{ query.data()?.pages?.join(', ') ?? 'none' }}</div>
37+ ` ,
38+ } )
39+ class Page {
40+ readonly query = injectInfiniteQuery ( ( ) => ( {
3041 queryKey : key ,
3142 queryFn : ( { pageParam } ) =>
3243 sleep ( 10 ) . then ( ( ) => 'data on page ' + pageParam ) ,
3344 initialPageParam : 0 ,
3445 getNextPageParam : ( ) => 12 ,
3546 } ) )
36- } )
47+ }
3748
38- expectSignals ( query , {
39- data : undefined ,
40- status : 'pending' ,
41- } )
49+ const rendered = await render ( Page )
4250
43- await vi . advanceTimersByTimeAsync ( 11 )
51+ expect ( rendered . getByText ( 'status: pending' ) ) . toBeInTheDocument ( )
52+ expect ( rendered . getByText ( 'pages: none' ) ) . toBeInTheDocument ( )
4453
45- expectSignals ( query , {
46- data : {
47- pageParams : [ 0 ] ,
48- pages : [ 'data on page 0' ] ,
49- } ,
50- status : 'success' ,
51- } )
54+ await vi . advanceTimersByTimeAsync ( 11 )
55+ rendered . fixture . detectChanges ( )
56+ expect ( rendered . getByText ( 'status: success' ) ) . toBeInTheDocument ( )
57+ expect ( rendered . getByText ( 'pages: data on page 0' ) ) . toBeInTheDocument ( )
5258
53- void query . fetchNextPage ( )
59+ rendered . fixture . componentInstance . query . fetchNextPage ( )
5460
5561 await vi . advanceTimersByTimeAsync ( 11 )
56-
57- expectSignals ( query , {
58- data : {
59- pageParams : [ 0 , 12 ] ,
60- pages : [ 'data on page 0' , 'data on page 12' ] ,
61- } ,
62- status : 'success' ,
63- } )
62+ rendered . fixture . detectChanges ( )
63+ expect ( rendered . getByText ( 'status: success' ) ) . toBeInTheDocument ( )
64+ expect (
65+ rendered . getByText ( 'pages: data on page 0, data on page 12' ) ,
66+ ) . toBeInTheDocument ( )
6467 } )
6568
6669 describe ( 'injection context' , ( ) => {
0 commit comments