Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/react 18 #3064

Merged
merged 191 commits into from
Apr 2, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
191 commits
Select commit Hold shift + click to select a range
c6654e4
feat(react): react-18
TkDodo Oct 28, 2021
4021f54
feat(core): react-18
TkDodo Oct 28, 2021
c2b0716
feat(core): react-18
TkDodo Oct 28, 2021
f9211ca
feat(core): react-18
TkDodo Oct 29, 2021
89b4499
feat(core): react-18
TkDodo Oct 29, 2021
b3b5425
feat(core): react-18
TkDodo Oct 29, 2021
4006249
feat(core): react-18
TkDodo Oct 29, 2021
e39e137
feat(core): react-18
TkDodo Oct 29, 2021
711e602
feat(core): react-18
TkDodo Oct 29, 2021
a78301c
feat(core): react-18
TkDodo Oct 29, 2021
19330d2
feat(core): react-18
TkDodo Oct 29, 2021
ecf6f99
feat(core): react-18
TkDodo Oct 29, 2021
52c3c78
feat(core): react-18
TkDodo Oct 31, 2021
178b2a8
feat(core): react-18
TkDodo Oct 31, 2021
cd8e00b
feat(core): react-18
TkDodo Oct 31, 2021
bb07d66
feat(core): react-18
TkDodo Oct 31, 2021
2644f89
feat(core): react-18
TkDodo Oct 31, 2021
3756e89
feat(core): react-18
TkDodo Oct 31, 2021
8880622
feat(core): react-18
TkDodo Oct 31, 2021
e12b3d1
feat(core): react-18
TkDodo Oct 31, 2021
b79bc13
feat(core): react-18
TkDodo Nov 1, 2021
5827bde
feat(core): react-18
TkDodo Nov 1, 2021
2c3c83d
feat(core): react-18
TkDodo Nov 6, 2021
1e75ce6
feat(core): react-18
TkDodo Nov 6, 2021
278ec77
feat(core): react-18
TkDodo Nov 6, 2021
e30e696
Merge branch 'master' into feature/react-18
TkDodo Nov 6, 2021
c72a3f3
feat(core): react-18
TkDodo Nov 6, 2021
e78e99b
feat(core): react-18
TkDodo Nov 6, 2021
5cd2395
feat(core): react-18
TkDodo Nov 6, 2021
27a5e69
feat(core): react-18
TkDodo Nov 6, 2021
c7f1eed
feat(core): react-18
TkDodo Nov 6, 2021
e3a89d4
feat(core): react-18
TkDodo Nov 6, 2021
6e0a0d2
feat(core): react-18
TkDodo Nov 6, 2021
5409167
feat(core): react-18
TkDodo Nov 6, 2021
c4845ed
feat(core): react-18
TkDodo Nov 7, 2021
1b0d76d
feat(core): react-18
TkDodo Nov 7, 2021
b231357
feat(core): react-18
TkDodo Nov 7, 2021
b92b211
Merge branch 'master' into feature/react-18
TkDodo Nov 7, 2021
e9037ed
feat(core): react-18
TkDodo Nov 7, 2021
ad73004
feat(hydration): remove hydration package (#2936)
TkDodo Nov 13, 2021
e892557
V4: streamline cancel refetch (#2937)
TkDodo Nov 13, 2021
56598fb
feat: better query filters (#2938)
TkDodo Nov 14, 2021
b9a26f2
Merge remote-tracking branch 'react-query/master' into v4
TkDodo Nov 17, 2021
d8effee
feat(core): react-18
TkDodo Nov 17, 2021
8908b6f
feat(core): react-18
TkDodo Nov 17, 2021
768cc86
feat(core): react-18
TkDodo Nov 17, 2021
fd9f4f0
feat(core): react-18
TkDodo Nov 17, 2021
113211e
feat(core): react-18
TkDodo Nov 17, 2021
31835a3
feat(core): react-18
TkDodo Nov 17, 2021
5f88642
feat(core): react-18
TkDodo Nov 17, 2021
2ad404b
Merge remote-tracking branch 'react-query/master' into feature/react-18
TkDodo Nov 17, 2021
1f6ac11
fix: rename react directory to reactjs (#2884)
EddyVinck Nov 17, 2021
d1a7520
Merge remote-tracking branch 'react-query/master' into v4
TkDodo Nov 17, 2021
ac1eefd
feat: mutation cache duration (#2963)
TkDodo Nov 17, 2021
4e8f584
Merge remote-tracking branch 'react-query/v4' into feature/react-18
TkDodo Nov 17, 2021
a4b4564
feat(core): react-18
TkDodo Nov 17, 2021
8e95d37
feat(core): react-18
TkDodo Nov 17, 2021
010b89e
feat(core): react-18
TkDodo Nov 17, 2021
fa12391
refactor(persistQueryClient): Make persistQueryClient stable (#2961)
prateek3255 Nov 18, 2021
7a95ea6
Merge remote-tracking branch 'react-query/master' into v4
TkDodo Nov 18, 2021
e03840f
Merge remote-tracking branch 'react-query/v4' into feature/react-18
TkDodo Nov 18, 2021
41ee429
feat(core): react-18
TkDodo Nov 18, 2021
a090fe5
2964 changes to on success callback (#2969)
TkDodo Nov 19, 2021
2624c42
2919 query key array (#2988)
TkDodo Nov 19, 2021
aa79aee
Merge remote-tracking branch 'react-query/v4' into feature/react-18
TkDodo Nov 19, 2021
67b9a9b
Merge remote-tracking branch 'react-query/master' into v4
TkDodo Nov 20, 2021
5b464da
feat(QueryObserver): track queries as default (#2987)
babycourageous Nov 20, 2021
a701340
refactor: Remove deprecated promise cancel (#2996)
prateek3255 Nov 22, 2021
1226d8c
Merge remote-tracking branch 'react-query/master' into v4
TkDodo Nov 22, 2021
adcd99a
Merge remote-tracking branch 'react-query/master' into v4
TkDodo Nov 22, 2021
3a6ca29
Merge remote-tracking branch 'react-query/v4' into feature/react-18
TkDodo Nov 23, 2021
26949e5
Merge remote-tracking branch 'react-query/master' into v4
TkDodo Nov 26, 2021
b12bc2c
remove test that doesn't make sense anymore - we don't allow differen…
TkDodo Nov 26, 2021
ad16e4d
Merge remote-tracking branch 'react-query/v4' into feature/react-18
TkDodo Nov 26, 2021
17201ab
feat(core): react-18
TkDodo Nov 27, 2021
9e50b30
feat(core): react-18
TkDodo Nov 27, 2021
74e825e
feat(core): react-18
TkDodo Nov 27, 2021
35e4fcd
feat(core): react-18
TkDodo Nov 27, 2021
c93cbf1
feat(core): react-18
TkDodo Nov 27, 2021
9f788ae
feat(core): react-18
TkDodo Nov 27, 2021
2296749
feat(core): react-18
TkDodo Nov 27, 2021
d14cd14
feat(core): react-18
TkDodo Nov 27, 2021
aaf37f1
feat(core): react-18
TkDodo Nov 27, 2021
74247eb
feat(core): react-18
TkDodo Nov 27, 2021
dc1943c
feat(core): react-18
TkDodo Nov 27, 2021
b13c8d6
feat(core): react-18
TkDodo Nov 27, 2021
4418448
✅ Use getByLabelText for opening query details
prateek3255 Nov 27, 2021
fb13a05
Merge remote-tracking branch 'react-query/master' into v4
TkDodo Nov 28, 2021
c284c22
Merge remote-tracking branch 'react-query/v4' into feature/react-18
TkDodo Nov 28, 2021
2e23064
:bug: Use findBy* instead of getBy*
prateek3255 Nov 28, 2021
d7d3dc8
Merge pull request #3 from prateek3255/fix/devtools-tests
TkDodo Nov 28, 2021
a7da9fc
feat(core): react-18
TkDodo Nov 28, 2021
ab318c5
feat(core): react-18
TkDodo Nov 28, 2021
293d503
feat(core): react-18
TkDodo Nov 28, 2021
5c6ce67
feat(core): react-18
TkDodo Nov 28, 2021
7a03fac
feat(core): react-18
TkDodo Nov 28, 2021
c7d9f7b
feat(core): react-18
TkDodo Nov 28, 2021
180c87a
✅ Make sorting test more robust
prateek3255 Nov 29, 2021
73f1389
Merge pull request #4 from prateek3255/fix/devtools-test
TkDodo Nov 29, 2021
23db87d
✅ Make queries dependent on each other
prateek3255 Nov 30, 2021
10594d7
Merge pull request #5 from prateek3255/fix/devtools-tests
TkDodo Nov 30, 2021
bc116d3
2927 offline queries (#3006)
TkDodo Dec 1, 2021
670dec8
Merge remote-tracking branch 'react-query/master' into v4
TkDodo Dec 2, 2021
693ae25
Merge remote-tracking branch 'react-query/v4' into feature/react-18
TkDodo Dec 2, 2021
d3ca9cb
feat(core): react-18
TkDodo Dec 2, 2021
99b72e5
feat(core): react-18
TkDodo Dec 2, 2021
510eab6
feat(core): react-18
TkDodo Dec 2, 2021
993b906
Merge remote-tracking branch 'react-query/master' into v4
TkDodo Dec 3, 2021
4b75108
refactor(queryClient): remove undocumented methods
TkDodo Dec 3, 2021
377a7c1
Merge remote-tracking branch 'react-query/v4' into feature/react-18
TkDodo Dec 3, 2021
74f5df2
feat(core): react-18
TkDodo Dec 3, 2021
30de7f0
feat(core): react-18
TkDodo Dec 3, 2021
05a5382
feat(core): react-18
TkDodo Dec 3, 2021
fe43224
feat(core): react-18
TkDodo Dec 3, 2021
1f9d715
feat(core): react-18
TkDodo Dec 3, 2021
ca628ac
feat(core): react-18
TkDodo Dec 3, 2021
ad31b82
feat(core): react-18
TkDodo Dec 3, 2021
817b4c7
feat(core): react-18
TkDodo Dec 3, 2021
0582539
feat(core): react-18
TkDodo Dec 4, 2021
654a1a8
feat(core): react-18
TkDodo Dec 4, 2021
700acf6
feat(core): react-18
TkDodo Dec 4, 2021
111bdb8
feat(core): react-18
TkDodo Dec 4, 2021
fc5db99
feat(core): react-18
TkDodo Dec 4, 2021
efbfb0d
feat(core): react-18
TkDodo Dec 4, 2021
6dfb3fb
feat(core): react-18
TkDodo Dec 4, 2021
f804b15
fix: offline mutations fixes (#3051)
TkDodo Dec 4, 2021
8ede950
Merge remote-tracking branch 'react-query/v4' into feature/react-18
TkDodo Dec 4, 2021
6985a49
examples: fix query keys in basic examples
TkDodo Dec 4, 2021
f7aab99
Merge remote-tracking branch 'react-query/v4' into feature/react-18
TkDodo Dec 4, 2021
0e5aaed
Merge remote-tracking branch 'react-query/master' into v4
TkDodo Dec 5, 2021
bd0f87c
fix(useMutation): make sure cacheCallbacks are always called
TkDodo Dec 5, 2021
0300ef4
Merge remote-tracking branch 'react-query/v4' into feature/react-18
TkDodo Dec 5, 2021
7585984
feat(core): react-18
TkDodo Dec 5, 2021
bb1443c
Feature/cachetime zero (#3054)
TkDodo Dec 6, 2021
0e1bb92
add publishing capabilities for alpha branch
TkDodo Dec 6, 2021
71a2d6c
Merge remote-tracking branch 'react-query/v4' into feature/react-18
TkDodo Dec 6, 2021
b229a3a
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Dec 7, 2021
4e83259
feat(core): react-18
TkDodo Dec 7, 2021
df22407
feat(core): react-18
TkDodo Dec 7, 2021
e3dd14b
feat(core): react-18
TkDodo Dec 7, 2021
a97e10f
feat(core): react-18
TkDodo Dec 7, 2021
be480ef
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Dec 10, 2021
f4c226c
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Dec 10, 2021
1f56b7c
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Dec 10, 2021
984483a
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Dec 10, 2021
9825bb2
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Dec 11, 2021
e55149d
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Dec 11, 2021
915718f
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Dec 11, 2021
3167fa7
:recycle: Refactor devtools subscriptions
prateek3255 Dec 12, 2021
4b9126f
:sparkles: Move query states subscriptions to separate component
prateek3255 Dec 13, 2021
61973d3
:recycle: Move active query to a separate component
prateek3255 Dec 13, 2021
9678ea2
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Dec 14, 2021
ac06d64
refactor: devtools susbscriptions
TkDodo Dec 14, 2021
49cef59
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Dec 16, 2021
d34a362
feat(core): react-18
TkDodo Dec 16, 2021
ba37a19
feat(core): react-18
TkDodo Dec 16, 2021
5bcb415
feat(core): react-18
TkDodo Dec 16, 2021
4a88bf6
feat(core): react-18
TkDodo Dec 16, 2021
cacb7df
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Dec 28, 2021
00a2796
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Jan 23, 2022
4701bbd
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Feb 6, 2022
48d642a
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Feb 6, 2022
eed037b
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Feb 12, 2022
76c16c8
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Feb 19, 2022
73bd87c
feat(core): react-18
TkDodo Feb 19, 2022
86d4d7a
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Feb 20, 2022
ac7288c
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Feb 26, 2022
635f29f
fix merge conflicts
TkDodo Feb 26, 2022
965b8e2
more merge conflicts
TkDodo Feb 26, 2022
c953209
another merge conflict: idle state doesn't exist anymore
TkDodo Feb 26, 2022
af11d7b
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Feb 26, 2022
ecabf49
fix tests, we need to check for fetchStatus now
TkDodo Feb 26, 2022
d446484
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Feb 26, 2022
deb4165
remove unnecessary optional chaining in tests
TkDodo Feb 26, 2022
dd8c424
prettier
TkDodo Feb 26, 2022
faac282
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Mar 3, 2022
c2bef1f
Merge remote-tracking branch 'react-query/alpha' into feature/react-18
TkDodo Mar 13, 2022
808c801
Merge remote-tracking branch 'tannerlinsley/alpha' into feature/react-18
TkDodo Mar 25, 2022
4cfa457
useIsMutating: fix assertions - no more duplicates in react18
TkDodo Mar 25, 2022
11a2f20
also, no duplicate renderings for PersistQueryClient anymore
TkDodo Mar 25, 2022
33ed7c0
make tests more resilient
TkDodo Mar 25, 2022
b028542
another flaky one
TkDodo Mar 25, 2022
2dfc993
re-write new custom context tests to be the same as other tests
TkDodo Mar 25, 2022
9d702a3
re-write new custom context tests to be the same as other tests
TkDodo Mar 25, 2022
eabcd46
remove calls to getServerSnapshot
TkDodo Mar 26, 2022
494cf31
Revert "remove calls to getServerSnapshot"
TkDodo Mar 26, 2022
7b4ae0c
update to latest alphas an rcs
TkDodo Mar 26, 2022
0e1cc4f
use testing-library 12 for react-17 test suite
TkDodo Mar 26, 2022
dca1921
update from release candidates to actual releases
TkDodo Mar 31, 2022
bf24140
Merge remote-tracking branch 'tannerlinsley/alpha' into feature/react-18
TkDodo Apr 2, 2022
258bf8f
make another test more stable
TkDodo Apr 2, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions .github/workflows/test-and-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,12 @@ on:

jobs:
test:
name: 'Node ${{ matrix.node }}'
name: 'Node ${{ matrix.node }}, React ${{ matrix.react }}'
runs-on: ubuntu-latest
strategy:
matrix:
node: [12, 14, 16]
react: [17, 18]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
Expand All @@ -26,8 +27,10 @@ jobs:
- name: Install dependencies
uses: bahmutov/npm-install@v1
- run: yarn test:ci
env:
REACTJS_VERSION: ${{ matrix.react }}
- run: yarn test:size
if: matrix.node == '16'
if: matrix.node == '16' && matrix.react == '18'
env:
BUNDLEWATCH_GITHUB_TOKEN: ${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }}
- name: Upload coverage to Codecov
Expand Down
30 changes: 30 additions & 0 deletions jest.setup.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,33 @@ import { notifyManager } from './src'
notifyManager.setNotifyFunction(fn => {
act(fn)
})

jest.mock('react', () => {
const packages = {
18: 'react',
17: 'react-17',
}
const version = process.env.REACTJS_VERSION || '18'

return jest.requireActual(packages[version])
})

jest.mock('react-dom', () => {
const packages = {
18: 'react-dom',
17: 'react-dom-17',
}
const version = process.env.REACTJS_VERSION || '18'

return jest.requireActual(packages[version])
})

jest.mock('@testing-library/react', () => {
const packages = {
18: '@testing-library/react',
17: '@testing-library/react-17',
}
const version = process.env.REACTJS_VERSION || '18'

return jest.requireActual(packages[version])
})
21 changes: 14 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
"scripts": {
"test": "is-ci \"test:ci\" \"test:dev\"",
"test:dev": "npm run test:types && npm run test:format && npm run test:eslint && npm run test:codemod && jest --watch",
"test:dev:17": "npm run test:types && npm run test:format && npm run test:eslint && npm run test:codemod && REACTJS_VERSION=17 jest --watch",
"test:ci": "npm run test:types && npm run test:format && npm run test:eslint && npm run test:codemod && jest",
"test:coverage": "yarn test:ci; open coverage/lcov-report/index.html",
"test:format": "yarn prettier --check",
Expand Down Expand Up @@ -69,11 +70,13 @@
],
"dependencies": {
"@babel/runtime": "^7.5.5",
"@types/use-sync-external-store": "^0.0.3",
"broadcast-channel": "^3.4.1",
"match-sorter": "^6.0.2"
"match-sorter": "^6.0.2",
"use-sync-external-store": "^1.0.0"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0"
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
},
"peerDependenciesMeta": {
"react-dom": {
Expand All @@ -92,12 +95,14 @@
"@babel/preset-typescript": "^7.16.7",
"@rollup/plugin-replace": "^3.0.0",
"@svgr/rollup": "^6.1.1",
"@testing-library/react": "^13.0.0",
"@testing-library/react-17": "npm:@testing-library/react@^12.1.4",
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^10.4.7",
"@types/jest": "^26.0.4",
"@types/jscodeshift": "^0.11.3",
"@types/react": "^16.9.41",
"@types/react-dom": "^16.9.8",
"@types/node": "^16.11.10",
"@types/react": "^17.0.37",
"@types/react-dom": "^17.0.11",
"@typescript-eslint/eslint-plugin": "^5.6.0",
"@typescript-eslint/parser": "^5.6.0",
"babel-eslint": "^10.1.0",
Expand All @@ -122,8 +127,10 @@
"jest": "^26.0.1",
"jscodeshift": "^0.13.1",
"prettier": "2.2.1",
"react": "^16.13.0",
"react-dom": "^16.13.1",
"react": "^18.0.0",
"react-17": "npm:react@^17.0.2",
"react-dom": "^18.0.0",
"react-dom-17": "npm:react-dom@^17.0.2",
"react-error-boundary": "^2.2.2",
"replace": "^1.2.0",
"rimraf": "^3.0.2",
Expand Down
11 changes: 9 additions & 2 deletions rollup.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,13 @@ const inputSrcs = [
const extensions = ['.js', '.jsx', '.es6', '.es', '.mjs', '.ts', '.tsx']
const babelConfig = { extensions, runtimeHelpers: true }
const resolveConfig = { extensions }
const commonJsConfig = {
namedExports: {
'node_modules/use-sync-external-store/shim/index.js': [
'useSyncExternalStore',
],
},
}

export default inputSrcs
.map(([input, name, file]) => {
Expand All @@ -61,7 +68,7 @@ export default inputSrcs
plugins: [
resolve(resolveConfig),
babel(babelConfig),
commonJS(),
commonJS(commonJsConfig),
externalDeps(),
],
},
Expand All @@ -83,7 +90,7 @@ export default inputSrcs
}),
resolve(resolveConfig),
babel(babelConfig),
commonJS(),
commonJS(commonJsConfig),
externalDeps(),
terser(),
size(),
Expand Down
8 changes: 5 additions & 3 deletions src/core/queryObserver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -570,15 +570,17 @@ export class QueryObserver<
| QueryObserverResult<TData, TError>
| undefined

this.currentResult = this.createResult(this.currentQuery, this.options)
const nextResult = this.createResult(this.currentQuery, this.options)
this.currentResultState = this.currentQuery.state
this.currentResultOptions = this.options

// Only notify if something has changed
if (shallowEqualObjects(this.currentResult, prevResult)) {
// Only notify and update result if something has changed
if (shallowEqualObjects(nextResult, prevResult)) {
return
}

this.currentResult = nextResult

// Determine which callbacks to trigger
const defaultNotifyOptions: NotifyOptions = { cache: true }

Expand Down
1 change: 1 addition & 0 deletions src/core/subscribable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ export class Subscribable<TListener extends Function = Listener> {

constructor() {
this.listeners = []
this.subscribe = this.subscribe.bind(this)
}

subscribe(listener: TListener): () => void {
Expand Down
6 changes: 3 additions & 3 deletions src/core/tests/queryClient.test.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { waitFor } from '@testing-library/react'
import { fireEvent, waitFor } from '@testing-library/react'
import '@testing-library/jest-dom'
import React from 'react'

Expand Down Expand Up @@ -379,7 +379,7 @@ describe('queryClient', () => {
const rendered = renderWithClient(queryClient, <Page />)

await waitFor(() => rendered.getByText('data: data'))
rendered.getByRole('button', { name: /setQueryData/i }).click()
fireEvent.click(rendered.getByRole('button', { name: /setQueryData/i }))
await waitFor(() => rendered.getByText('data: newData'))

expect(onSuccess).toHaveBeenCalledTimes(1)
Expand Down Expand Up @@ -409,7 +409,7 @@ describe('queryClient', () => {
const rendered = renderWithClient(queryClient, <Page />)

await waitFor(() => rendered.getByText('data: data'))
rendered.getByRole('button', { name: /setQueryData/i }).click()
fireEvent.click(rendered.getByRole('button', { name: /setQueryData/i }))
await waitFor(() => rendered.getByText('data: newData'))
await waitFor(() => {
expect(rendered.getByText('dataUpdatedAt: 100')).toBeInTheDocument()
Expand Down
34 changes: 7 additions & 27 deletions src/core/tests/utils.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import {
parseMutationArgs,
matchMutation,
scheduleMicrotask,
sleep,
} from '../utils'
import { Mutation } from '../mutation'
import { waitFor } from '@testing-library/dom'
import { createQueryClient } from '../../reactjs/tests/utils'

describe('core/utils', () => {
Expand Down Expand Up @@ -330,33 +330,13 @@ describe('core/utils', () => {
})

describe('scheduleMicrotask', () => {
it('should throw an exception if the callback throw an error', async () => {
const error = new Error('error')
const callback = () => {
throw error
}
const errorSpy = jest.fn().mockImplementation(err => err)
jest.useFakeTimers()
const setTimeoutSpy = jest
.spyOn(globalThis, 'setTimeout')
.mockImplementation(function (handler: TimerHandler) {
try {
if (typeof handler === 'function') {
handler(errorSpy(error))
}
} catch (err: any) {
expect(err.message).toEqual('error')
// Do no throw an uncaught exception that cannot be tested with
// this jest version
}
return 0 as any
})
it('should defer execution of callback', async () => {
const callback = jest.fn()

scheduleMicrotask(callback)
jest.runAllTimers()
await waitFor(() => expect(setTimeoutSpy).toHaveBeenCalled())
expect(errorSpy).toHaveBeenCalled()
setTimeoutSpy.mockRestore()
jest.useRealTimers()
expect(callback).not.toHaveBeenCalled()
await sleep(0)
expect(callback).toHaveBeenCalledTimes(1)
})
})
})
10 changes: 2 additions & 8 deletions src/core/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -404,14 +404,8 @@ export function sleep(timeout: number): Promise<void> {
* Schedules a microtask.
* This can be useful to schedule state updates after rendering.
*/
export function scheduleMicrotask(callback: () => void): void {
Promise.resolve()
.then(callback)
.catch(error =>
setTimeout(() => {
throw error
})
)
export function scheduleMicrotask(callback: () => void) {
sleep(0).then(callback)
}

export function getAbortController(): AbortController | undefined {
Expand Down
Loading