@@ -23,6 +23,7 @@ import {
2323 it ,
2424 vi ,
2525} from 'vitest'
26+ import { render } from '@testing-library/angular'
2627import { queryKey , sleep } from '@tanstack/query-test-utils'
2728import { lastValueFrom } from 'rxjs'
2829import {
@@ -285,42 +286,74 @@ describe('injectQuery', () => {
285286
286287 it ( 'should resolve to success and update signal: injectQuery()' , async ( ) => {
287288 const key = queryKey ( )
288- const query = TestBed . runInInjectionContext ( ( ) => {
289- return injectQuery ( ( ) => ( {
289+
290+ @Component ( {
291+ template : `
292+ <div>status: {{ query.status() }}</div>
293+ <div>data: {{ query.data() ?? 'none' }}</div>
294+ <div>isPending: {{ query.isPending() }}</div>
295+ <div>isFetching: {{ query.isFetching() }}</div>
296+ <div>isFetched: {{ query.isFetched() }}</div>
297+ <div>isSuccess: {{ query.isSuccess() }}</div>
298+ ` ,
299+ } )
300+ class Page {
301+ readonly query = injectQuery ( ( ) => ( {
290302 queryKey : key ,
291303 queryFn : ( ) => sleep ( 10 ) . then ( ( ) => 'result2' ) ,
292304 } ) )
293- } )
305+ }
306+
307+ const rendered = await render ( Page )
294308
295309 await vi . advanceTimersByTimeAsync ( 11 )
296- expect ( query . status ( ) ) . toBe ( 'success' )
297- expect ( query . data ( ) ) . toBe ( 'result2' )
298- expect ( query . isPending ( ) ) . toBe ( false )
299- expect ( query . isFetching ( ) ) . toBe ( false )
300- expect ( query . isFetched ( ) ) . toBe ( true )
301- expect ( query . isSuccess ( ) ) . toBe ( true )
310+ rendered . fixture . detectChanges ( )
311+
312+ expect ( rendered . getByText ( 'status: success' ) ) . toBeInTheDocument ( )
313+ expect ( rendered . getByText ( 'data: result2' ) ) . toBeInTheDocument ( )
314+ expect ( rendered . getByText ( 'isPending: false' ) ) . toBeInTheDocument ( )
315+ expect ( rendered . getByText ( 'isFetching: false' ) ) . toBeInTheDocument ( )
316+ expect ( rendered . getByText ( 'isFetched: true' ) ) . toBeInTheDocument ( )
317+ expect ( rendered . getByText ( 'isSuccess: true' ) ) . toBeInTheDocument ( )
302318 } )
303319
304320 it ( 'should reject and update signal' , async ( ) => {
305321 const key = queryKey ( )
306- const query = TestBed . runInInjectionContext ( ( ) => {
307- return injectQuery ( ( ) => ( {
322+
323+ @Component ( {
324+ template : `
325+ <div>status: {{ query.status() }}</div>
326+ <div>data: {{ query.data() ?? 'none' }}</div>
327+ <div>error: {{ query.error()?.message ?? 'none' }}</div>
328+ <div>isPending: {{ query.isPending() }}</div>
329+ <div>isFetching: {{ query.isFetching() }}</div>
330+ <div>isError: {{ query.isError() }}</div>
331+ <div>failureCount: {{ query.failureCount() }}</div>
332+ <div>failureReason: {{ query.failureReason()?.message ?? 'none' }}</div>
333+ ` ,
334+ } )
335+ class Page {
336+ readonly query = injectQuery ( ( ) => ( {
308337 retry : false ,
309338 queryKey : key ,
310339 queryFn : ( ) =>
311340 sleep ( 10 ) . then ( ( ) => Promise . reject ( new Error ( 'Some error' ) ) ) ,
312341 } ) )
313- } )
342+ }
343+
344+ const rendered = await render ( Page )
314345
315346 await vi . advanceTimersByTimeAsync ( 11 )
316- expect ( query . status ( ) ) . toBe ( 'error' )
317- expect ( query . data ( ) ) . toBe ( undefined )
318- expect ( query . error ( ) ) . toMatchObject ( { message : 'Some error' } )
319- expect ( query . isPending ( ) ) . toBe ( false )
320- expect ( query . isFetching ( ) ) . toBe ( false )
321- expect ( query . isError ( ) ) . toBe ( true )
322- expect ( query . failureCount ( ) ) . toBe ( 1 )
323- expect ( query . failureReason ( ) ) . toMatchObject ( { message : 'Some error' } )
347+ rendered . fixture . detectChanges ( )
348+
349+ expect ( rendered . getByText ( 'status: error' ) ) . toBeInTheDocument ( )
350+ expect ( rendered . getByText ( 'data: none' ) ) . toBeInTheDocument ( )
351+ expect ( rendered . getByText ( 'error: Some error' ) ) . toBeInTheDocument ( )
352+ expect ( rendered . getByText ( 'isPending: false' ) ) . toBeInTheDocument ( )
353+ expect ( rendered . getByText ( 'isFetching: false' ) ) . toBeInTheDocument ( )
354+ expect ( rendered . getByText ( 'isError: true' ) ) . toBeInTheDocument ( )
355+ expect ( rendered . getByText ( 'failureCount: 1' ) ) . toBeInTheDocument ( )
356+ expect ( rendered . getByText ( 'failureReason: Some error' ) ) . toBeInTheDocument ( )
324357 } )
325358
326359 it ( 'should update query on options contained signal change' , async ( ) => {
0 commit comments