@tanstack/react-query 4.13.4 → 4.13.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/react-query",
3
- "version": "4.13.4",
3
+ "version": "4.13.5",
4
4
  "description": "Hooks for managing, caching and syncing asynchronous and remote data in React",
5
5
  "author": "tannerlinsley",
6
6
  "license": "MIT",
@@ -873,20 +873,35 @@ describe('useQuery', () => {
873
873
 
874
874
  states.push(state)
875
875
 
876
- const { remove } = state
877
-
878
- React.useEffect(() => {
879
- setActTimeout(() => {
880
- remove()
881
- rerender({})
882
- }, 20)
883
- }, [remove])
876
+ return (
877
+ <>
878
+ <div>{state.data}</div>
884
879
 
885
- return null
880
+ <button
881
+ onClick={() => {
882
+ state.remove()
883
+ rerender({})
884
+ }}
885
+ >
886
+ remove
887
+ </button>
888
+ </>
889
+ )
886
890
  }
887
891
 
888
- renderWithClient(queryClient, <Page />)
892
+ const rendered = renderWithClient(queryClient, <Page />)
893
+
894
+ await waitFor(() => {
895
+ rendered.getByText('data')
896
+ })
889
897
 
898
+ fireEvent.click(rendered.getByRole('button', { name: 'remove' }))
899
+
900
+ await waitFor(() => {
901
+ rendered.getByText('data')
902
+ })
903
+
904
+ // required to make sure no additional renders are happening after data is successfully fetched for the second time
890
905
  await sleep(100)
891
906
 
892
907
  expect(states.length).toBe(5)
@@ -1518,17 +1533,27 @@ describe('useQuery', () => {
1518
1533
 
1519
1534
  states.push(state)
1520
1535
 
1521
- React.useEffect(() => {
1522
- setActTimeout(() => {
1523
- setCount(1)
1524
- }, 10)
1525
- }, [])
1526
-
1527
- return null
1536
+ return (
1537
+ <div>
1538
+ <button onClick={() => setCount(1)}>increment</button>
1539
+ <div>data: {state.data ?? 'undefined'}</div>
1540
+ <div>count: {count}</div>
1541
+ </div>
1542
+ )
1528
1543
  }
1529
1544
 
1530
- renderWithClient(queryClient, <Page />)
1545
+ const rendered = renderWithClient(queryClient, <Page />)
1546
+
1547
+ await waitFor(() => rendered.getByText('data: 0'))
1531
1548
 
1549
+ fireEvent.click(rendered.getByRole('button', { name: /increment/i }))
1550
+
1551
+ await waitFor(() => {
1552
+ rendered.getByText('count: 1')
1553
+ rendered.getByText('data: undefined')
1554
+ })
1555
+
1556
+ // making sure no additional fetches are triggered
1532
1557
  await sleep(50)
1533
1558
 
1534
1559
  expect(states.length).toBe(3)
@@ -1812,26 +1837,41 @@ describe('useQuery', () => {
1812
1837
 
1813
1838
  states.push(state)
1814
1839
 
1815
- const { refetch } = state
1840
+ return (
1841
+ <div>
1842
+ <button onClick={() => state.refetch()}>refetch</button>
1843
+ <button onClick={() => setCount(1)}>setCount</button>
1844
+ <div>data: {state.data ?? 'undefined'}</div>
1845
+ </div>
1846
+ )
1847
+ }
1816
1848
 
1817
- React.useEffect(() => {
1818
- refetch()
1849
+ const rendered = renderWithClient(queryClient, <Page />)
1819
1850
 
1820
- setActTimeout(() => {
1821
- setCount(1)
1822
- }, 20)
1851
+ await waitFor(() => {
1852
+ rendered.getByText('data: undefined')
1853
+ })
1823
1854
 
1824
- setActTimeout(() => {
1825
- refetch()
1826
- }, 30)
1827
- }, [refetch])
1855
+ fireEvent.click(rendered.getByRole('button', { name: 'refetch' }))
1828
1856
 
1829
- return null
1830
- }
1857
+ await waitFor(() => {
1858
+ rendered.getByText('data: 0')
1859
+ })
1831
1860
 
1832
- renderWithClient(queryClient, <Page />)
1861
+ fireEvent.click(rendered.getByRole('button', { name: 'setCount' }))
1833
1862
 
1834
- await sleep(100)
1863
+ await waitFor(() => {
1864
+ rendered.getByText('data: 0')
1865
+ })
1866
+
1867
+ fireEvent.click(rendered.getByRole('button', { name: 'refetch' }))
1868
+
1869
+ await waitFor(() => {
1870
+ rendered.getByText('data: 1')
1871
+ })
1872
+
1873
+ // making sure no additional renders are triggered
1874
+ await sleep(20)
1835
1875
 
1836
1876
  expect(states.length).toBe(6)
1837
1877
 
@@ -2194,19 +2234,31 @@ describe('useQuery', () => {
2194
2234
 
2195
2235
  states.push(state)
2196
2236
 
2197
- const { refetch } = state
2237
+ return (
2238
+ <>
2239
+ <button
2240
+ onClick={async () => {
2241
+ await state.refetch()
2242
+ }}
2243
+ >
2244
+ refetch
2245
+ </button>
2198
2246
 
2199
- React.useEffect(() => {
2200
- setActTimeout(() => {
2201
- refetch()
2202
- }, 10)
2203
- }, [refetch])
2204
- return null
2247
+ <div>{state.data}</div>
2248
+ </>
2249
+ )
2205
2250
  }
2206
2251
 
2207
- renderWithClient(queryClient, <Page />)
2252
+ const rendered = renderWithClient(queryClient, <Page />)
2208
2253
 
2209
- await sleep(30)
2254
+ await waitFor(() => {
2255
+ rendered.getByText('test')
2256
+ })
2257
+
2258
+ fireEvent.click(rendered.getByRole('button', { name: 'refetch' }))
2259
+
2260
+ // sleep is required to make sure no additional renders happen after click
2261
+ await sleep(20)
2210
2262
 
2211
2263
  expect(states.length).toBe(2)
2212
2264
  expect(states[0]).toMatchObject({