@@ -66,6 +66,44 @@ describe('injectInfiniteQuery', () => {
6666 ) . toBeInTheDocument ( )
6767 } )
6868
69+ it ( 'should reject and update signal' , async ( ) => {
70+ const key = queryKey ( )
71+
72+ @Component ( {
73+ template : `
74+ <div>status: {{ query.status() }}</div>
75+ <div>pages: {{ query.data()?.pages?.join(', ') ?? 'none' }}</div>
76+ <div>error: {{ query.error()?.message ?? 'none' }}</div>
77+ <div>isError: {{ query.isError() }}</div>
78+ <div>failureCount: {{ query.failureCount() }}</div>
79+ ` ,
80+ } )
81+ class Page {
82+ readonly query = injectInfiniteQuery ( ( ) => ( {
83+ retry : false ,
84+ queryKey : key ,
85+ queryFn : ( ) =>
86+ sleep ( 10 ) . then ( ( ) => Promise . reject ( new Error ( 'Some error' ) ) ) ,
87+ initialPageParam : 0 ,
88+ getNextPageParam : ( ) => 12 ,
89+ } ) )
90+ }
91+
92+ const rendered = await render ( Page )
93+
94+ expect ( rendered . getByText ( 'status: pending' ) ) . toBeInTheDocument ( )
95+ expect ( rendered . getByText ( 'pages: none' ) ) . toBeInTheDocument ( )
96+
97+ await vi . advanceTimersByTimeAsync ( 11 )
98+ rendered . fixture . detectChanges ( )
99+
100+ expect ( rendered . getByText ( 'status: error' ) ) . toBeInTheDocument ( )
101+ expect ( rendered . getByText ( 'pages: none' ) ) . toBeInTheDocument ( )
102+ expect ( rendered . getByText ( 'error: Some error' ) ) . toBeInTheDocument ( )
103+ expect ( rendered . getByText ( 'isError: true' ) ) . toBeInTheDocument ( )
104+ expect ( rendered . getByText ( 'failureCount: 1' ) ) . toBeInTheDocument ( )
105+ } )
106+
69107 describe ( 'injection context' , ( ) => {
70108 it ( 'should throw NG0203 with descriptive error outside injection context' , ( ) => {
71109 const key = queryKey ( )
0 commit comments