@@ -121,4 +121,64 @@ describe('usePaginatedQuery', () => {
121121 expect ( rendered . getByTestId ( 'status' ) . textContent ) . toBe ( 'success' )
122122 expect ( rendered . getByTestId ( 'status' ) . textContent ) . not . toBe ( 'loading' )
123123 } )
124+
125+ it ( 'should clear resolvedData data when query is falsy' , async ( ) => {
126+ function Page ( ) {
127+ const [ searchTerm , setSearchTerm ] = React . useState ( '' )
128+ const [ page , setPage ] = React . useState ( 1 )
129+ const { resolvedData = 'undefined' } = usePaginatedQuery (
130+ searchTerm && [ 'data' , searchTerm , page ] ,
131+ async ( queryName , searchTerm , page ) => {
132+ await sleep ( 1 )
133+ return `${ searchTerm } ${ page } `
134+ }
135+ )
136+
137+ return (
138+ < div >
139+ < h1 data-testid = "title" > Data { resolvedData } </ h1 >
140+ < input
141+ name = "searchTerm"
142+ placeholder = "Enter a search term"
143+ value = { searchTerm }
144+ onChange = { e => setSearchTerm ( e . currentTarget . value ) }
145+ />
146+ < button
147+ onClick = { ( ) => {
148+ setSearchTerm ( '' )
149+ setPage ( 1 )
150+ } }
151+ >
152+ clear
153+ </ button >
154+ < button onClick = { ( ) => setPage ( page + 1 ) } > next</ button >
155+ </ div >
156+ )
157+ }
158+
159+ const rendered = render ( < Page /> )
160+
161+ fireEvent . change ( rendered . getByPlaceholderText ( 'Enter a search term' ) , {
162+ target : { value : 'first-search' } ,
163+ } )
164+ rendered . getByText ( 'Data undefined' )
165+ await waitForElement ( ( ) => rendered . getByText ( 'Data first-search 1' ) )
166+
167+ fireEvent . click ( rendered . getByText ( 'next' ) )
168+ rendered . getByText ( 'Data first-search 1' )
169+ await waitForElement ( ( ) => rendered . getByText ( 'Data first-search 2' ) )
170+
171+ fireEvent . click ( rendered . getByText ( 'clear' ) )
172+ rendered . getByText ( 'Data undefined' )
173+
174+ fireEvent . change ( rendered . getByPlaceholderText ( 'Enter a search term' ) , {
175+ target : { value : 'second-search' } ,
176+ } )
177+ rendered . getByText ( 'Data undefined' )
178+ await waitForElement ( ( ) => rendered . getByText ( 'Data second-search 1' ) )
179+
180+ fireEvent . click ( rendered . getByText ( 'next' ) )
181+ rendered . getByText ( 'Data second-search 1' )
182+ await waitForElement ( ( ) => rendered . getByText ( 'Data second-search 2' ) )
183+ } )
124184} )
0 commit comments