Skip to content

Commit 38178ba

Browse files
authored
fix(query-core): make sure we don't invoke select too often when using placeholderData (#9007)
* fix(query-core): make sure we don't invoke select too often when using placeholderData * ref: run through placeholderData first, then through this helps us memoizing select calls, and we can get rid of some duplication around how select is called again after placeholderData * chore: skip-nx-cache attempt * test: increase timeout * chore: re-enable caching
1 parent d5ba5d1 commit 38178ba

File tree

4 files changed

+195
-169
lines changed

4 files changed

+195
-169
lines changed

packages/eslint-plugin-query/src/__tests__/no-void-query-fn.test.ts

+90-88
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import path from 'node:path'
22
import { RuleTester } from '@typescript-eslint/rule-tester'
3-
import { afterAll, describe, it } from 'vitest'
3+
import { afterAll, describe, it, test } from 'vitest'
44
import { rule } from '../rules/no-void-query-fn/no-void-query-fn.rule'
55
import { normalizeIndent } from './test-utils'
66

@@ -18,11 +18,12 @@ const ruleTester = new RuleTester({
1818
},
1919
})
2020

21-
ruleTester.run('no-void-query-fn', rule, {
22-
valid: [
23-
{
24-
name: 'queryFn returns a value',
25-
code: normalizeIndent`
21+
test('should run rule tests', () => {
22+
ruleTester.run('no-void-query-fn', rule, {
23+
valid: [
24+
{
25+
name: 'queryFn returns a value',
26+
code: normalizeIndent`
2627
import { useQuery } from '@tanstack/react-query'
2728
2829
function Component() {
@@ -33,10 +34,10 @@ ruleTester.run('no-void-query-fn', rule, {
3334
return null
3435
}
3536
`,
36-
},
37-
{
38-
name: 'queryFn returns a Promise',
39-
code: normalizeIndent`
37+
},
38+
{
39+
name: 'queryFn returns a Promise',
40+
code: normalizeIndent`
4041
import { useQuery } from '@tanstack/react-query'
4142
4243
function Component() {
@@ -47,10 +48,10 @@ ruleTester.run('no-void-query-fn', rule, {
4748
return null
4849
}
4950
`,
50-
},
51-
{
52-
name: 'queryFn returns Promise.resolve',
53-
code: normalizeIndent`
51+
},
52+
{
53+
name: 'queryFn returns Promise.resolve',
54+
code: normalizeIndent`
5455
import { useQuery } from '@tanstack/react-query'
5556
5657
function Component() {
@@ -61,10 +62,10 @@ ruleTester.run('no-void-query-fn', rule, {
6162
return null
6263
}
6364
`,
64-
},
65-
{
66-
name: 'queryFn with explicit Promise type',
67-
code: normalizeIndent`
65+
},
66+
{
67+
name: 'queryFn with explicit Promise type',
68+
code: normalizeIndent`
6869
import { useQuery } from '@tanstack/react-query'
6970
7071
interface Data {
@@ -81,10 +82,10 @@ ruleTester.run('no-void-query-fn', rule, {
8182
return null
8283
}
8384
`,
84-
},
85-
{
86-
name: 'queryFn with generic Promise type',
87-
code: normalizeIndent`
85+
},
86+
{
87+
name: 'queryFn with generic Promise type',
88+
code: normalizeIndent`
8889
import { useQuery } from '@tanstack/react-query'
8990
9091
interface Response<T> {
@@ -101,10 +102,10 @@ ruleTester.run('no-void-query-fn', rule, {
101102
return null
102103
}
103104
`,
104-
},
105-
{
106-
name: 'queryFn with external async function',
107-
code: normalizeIndent`
105+
},
106+
{
107+
name: 'queryFn with external async function',
108+
code: normalizeIndent`
108109
import { useQuery } from '@tanstack/react-query'
109110
110111
async function fetchData(): Promise<{ data: string }> {
@@ -119,10 +120,10 @@ ruleTester.run('no-void-query-fn', rule, {
119120
return null
120121
}
121122
`,
122-
},
123-
{
124-
name: 'queryFn returns null',
125-
code: normalizeIndent`
123+
},
124+
{
125+
name: 'queryFn returns null',
126+
code: normalizeIndent`
126127
import { useQuery } from '@tanstack/react-query'
127128
128129
function Component() {
@@ -133,10 +134,10 @@ ruleTester.run('no-void-query-fn', rule, {
133134
return null
134135
}
135136
`,
136-
},
137-
{
138-
name: 'queryFn returns 0',
139-
code: normalizeIndent`
137+
},
138+
{
139+
name: 'queryFn returns 0',
140+
code: normalizeIndent`
140141
import { useQuery } from '@tanstack/react-query'
141142
142143
function Component() {
@@ -147,10 +148,10 @@ ruleTester.run('no-void-query-fn', rule, {
147148
return null
148149
}
149150
`,
150-
},
151-
{
152-
name: 'queryFn returns false',
153-
code: normalizeIndent`
151+
},
152+
{
153+
name: 'queryFn returns false',
154+
code: normalizeIndent`
154155
import { useQuery } from '@tanstack/react-query'
155156
156157
function Component() {
@@ -161,12 +162,12 @@ ruleTester.run('no-void-query-fn', rule, {
161162
return null
162163
}
163164
`,
164-
},
165-
],
166-
invalid: [
167-
{
168-
name: 'queryFn returns void',
169-
code: normalizeIndent`
165+
},
166+
],
167+
invalid: [
168+
{
169+
name: 'queryFn returns void',
170+
code: normalizeIndent`
170171
import { useQuery } from '@tanstack/react-query'
171172
172173
function Component() {
@@ -179,11 +180,11 @@ ruleTester.run('no-void-query-fn', rule, {
179180
return null
180181
}
181182
`,
182-
errors: [{ messageId: 'noVoidReturn' }],
183-
},
184-
{
185-
name: 'queryFn returns undefined',
186-
code: normalizeIndent`
183+
errors: [{ messageId: 'noVoidReturn' }],
184+
},
185+
{
186+
name: 'queryFn returns undefined',
187+
code: normalizeIndent`
187188
import { useQuery } from '@tanstack/react-query'
188189
189190
function Component() {
@@ -194,11 +195,11 @@ ruleTester.run('no-void-query-fn', rule, {
194195
return null
195196
}
196197
`,
197-
errors: [{ messageId: 'noVoidReturn' }],
198-
},
199-
{
200-
name: 'async queryFn returns void',
201-
code: normalizeIndent`
198+
errors: [{ messageId: 'noVoidReturn' }],
199+
},
200+
{
201+
name: 'async queryFn returns void',
202+
code: normalizeIndent`
202203
import { useQuery } from '@tanstack/react-query'
203204
204205
function Component() {
@@ -211,11 +212,11 @@ ruleTester.run('no-void-query-fn', rule, {
211212
return null
212213
}
213214
`,
214-
errors: [{ messageId: 'noVoidReturn' }],
215-
},
216-
{
217-
name: 'queryFn with explicit void Promise',
218-
code: normalizeIndent`
215+
errors: [{ messageId: 'noVoidReturn' }],
216+
},
217+
{
218+
name: 'queryFn with explicit void Promise',
219+
code: normalizeIndent`
219220
import { useQuery } from '@tanstack/react-query'
220221
221222
function Component() {
@@ -228,11 +229,11 @@ ruleTester.run('no-void-query-fn', rule, {
228229
return null
229230
}
230231
`,
231-
errors: [{ messageId: 'noVoidReturn' }],
232-
},
233-
{
234-
name: 'queryFn with Promise.resolve(undefined)',
235-
code: normalizeIndent`
232+
errors: [{ messageId: 'noVoidReturn' }],
233+
},
234+
{
235+
name: 'queryFn with Promise.resolve(undefined)',
236+
code: normalizeIndent`
236237
import { useQuery } from '@tanstack/react-query'
237238
238239
function Component() {
@@ -243,11 +244,11 @@ ruleTester.run('no-void-query-fn', rule, {
243244
return null
244245
}
245246
`,
246-
errors: [{ messageId: 'noVoidReturn' }],
247-
},
248-
{
249-
name: 'queryFn with external void async function',
250-
code: normalizeIndent`
247+
errors: [{ messageId: 'noVoidReturn' }],
248+
},
249+
{
250+
name: 'queryFn with external void async function',
251+
code: normalizeIndent`
251252
import { useQuery } from '@tanstack/react-query'
252253
253254
async function voidOperation(): Promise<void> {
@@ -262,11 +263,11 @@ ruleTester.run('no-void-query-fn', rule, {
262263
return null
263264
}
264265
`,
265-
errors: [{ messageId: 'noVoidReturn' }],
266-
},
267-
{
268-
name: 'queryFn with conditional return (one branch missing)',
269-
code: normalizeIndent`
266+
errors: [{ messageId: 'noVoidReturn' }],
267+
},
268+
{
269+
name: 'queryFn with conditional return (one branch missing)',
270+
code: normalizeIndent`
270271
import { useQuery } from '@tanstack/react-query'
271272
272273
function Component() {
@@ -282,11 +283,11 @@ ruleTester.run('no-void-query-fn', rule, {
282283
return null
283284
}
284285
`,
285-
errors: [{ messageId: 'noVoidReturn' }],
286-
},
287-
{
288-
name: 'queryFn with ternary operator returning undefined',
289-
code: normalizeIndent`
286+
errors: [{ messageId: 'noVoidReturn' }],
287+
},
288+
{
289+
name: 'queryFn with ternary operator returning undefined',
290+
code: normalizeIndent`
290291
import { useQuery } from '@tanstack/react-query'
291292
292293
function Component() {
@@ -297,11 +298,11 @@ ruleTester.run('no-void-query-fn', rule, {
297298
return null
298299
}
299300
`,
300-
errors: [{ messageId: 'noVoidReturn' }],
301-
},
302-
{
303-
name: 'async queryFn with try/catch missing return in catch',
304-
code: normalizeIndent`
301+
errors: [{ messageId: 'noVoidReturn' }],
302+
},
303+
{
304+
name: 'async queryFn with try/catch missing return in catch',
305+
code: normalizeIndent`
305306
import { useQuery } from '@tanstack/react-query'
306307
307308
function Component() {
@@ -319,7 +320,8 @@ ruleTester.run('no-void-query-fn', rule, {
319320
return null
320321
}
321322
`,
322-
errors: [{ messageId: 'noVoidReturn' }],
323-
},
324-
],
325-
})
323+
errors: [{ messageId: 'noVoidReturn' }],
324+
},
325+
],
326+
})
327+
}, 10_000)

0 commit comments

Comments
 (0)