Skip to content

Commit d0552af

Browse files
manudeliTkDodo
andauthored
test(query-test-utils): init (internal package) (#9095)
* test(query-test-utils): init * refactor(tests): replace createQueryClient with new QueryClient instantiation across test files * refactor(tests): remove unused imports in utils test file * refactor(tests): replace fetcher functions with sleep-based implementations in query tests * refactor(tests): replace simpleFetcher with sleep-based implementations in query tests * fix(query-core): update test:build script to remove pnpm prefix * refactor(tests): extract query function into a variable for clarity in useQuery tests * chore(tsconfig): remove temporary Vitest TypeScript configuration file * chore: add @tanstack/query-test-utils as a devDependency in multiple packages --------- Co-authored-by: Dominik Dorfmeister <office@dorfmeister.cc>
1 parent 2cd0ceb commit d0552af

File tree

130 files changed

+1047
-970
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

130 files changed

+1047
-970
lines changed

codecov.yml

+4
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ component_management:
5959
name: '@tanstack/query-sync-storage-persister'
6060
paths:
6161
- packages/query-sync-storage-persister/**
62+
- component_id: query-test-utils
63+
name: '@tanstack/query-test-utils'
64+
paths:
65+
- packages/query-test-utils/**
6266
- component_id: react-query
6367
name: '@tanstack/react-query'
6468
paths:

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686
"@tanstack/query-devtools": "workspace:*",
8787
"@tanstack/query-persist-client-core": "workspace:*",
8888
"@tanstack/query-sync-storage-persister": "workspace:*",
89+
"@tanstack/query-test-utils": "workspace:*",
8990
"@tanstack/react-query": "workspace:*",
9091
"@tanstack/react-query-devtools": "workspace:*",
9192
"@tanstack/react-query-next-experimental": "workspace:*",

packages/angular-query-experimental/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
"@angular/core": "^19.2.4",
7575
"@angular/platform-browser": "^19.2.4",
7676
"@angular/platform-browser-dynamic": "^19.2.4",
77+
"@tanstack/query-test-utils": "workspace:*",
7778
"eslint-plugin-jsdoc": "^50.5.0",
7879
"npm-run-all2": "^5.0.0"
7980
},

packages/angular-query-experimental/src/__tests__/inject-infinite-query.test-d.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { TestBed } from '@angular/core/testing'
22
import { afterEach, beforeEach, describe, expectTypeOf, test, vi } from 'vitest'
33
import { provideExperimentalZonelessChangeDetection } from '@angular/core'
4+
import { sleep } from '@tanstack/query-test-utils'
45
import { QueryClient, injectInfiniteQuery, provideTanStackQuery } from '..'
5-
import { infiniteFetcher } from './test-utils'
66
import type { InfiniteData } from '@tanstack/query-core'
77

88
describe('injectInfiniteQuery', () => {
@@ -27,7 +27,8 @@ describe('injectInfiniteQuery', () => {
2727
const query = TestBed.runInInjectionContext(() => {
2828
return injectInfiniteQuery(() => ({
2929
queryKey: ['infiniteQuery'],
30-
queryFn: infiniteFetcher,
30+
queryFn: ({ pageParam }) =>
31+
sleep(0).then(() => 'data on page ' + pageParam),
3132
initialPageParam: 0,
3233
getNextPageParam: () => 12,
3334
}))

packages/angular-query-experimental/src/__tests__/inject-infinite-query.test.ts

+8-4
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ import {
44
Injector,
55
provideExperimentalZonelessChangeDetection,
66
} from '@angular/core'
7+
import { sleep } from '@tanstack/query-test-utils'
78
import { QueryClient, injectInfiniteQuery, provideTanStackQuery } from '..'
8-
import { expectSignals, infiniteFetcher } from './test-utils'
9+
import { expectSignals } from './test-utils'
910

1011
const QUERY_DURATION = 1000
1112

@@ -33,7 +34,8 @@ describe('injectInfiniteQuery', () => {
3334
const query = TestBed.runInInjectionContext(() => {
3435
return injectInfiniteQuery(() => ({
3536
queryKey: ['infiniteQuery'],
36-
queryFn: infiniteFetcher,
37+
queryFn: ({ pageParam }) =>
38+
sleep(0).then(() => 'data on page ' + pageParam),
3739
initialPageParam: 0,
3840
getNextPageParam: () => 12,
3941
}))
@@ -72,7 +74,8 @@ describe('injectInfiniteQuery', () => {
7274
expect(() => {
7375
injectInfiniteQuery(() => ({
7476
queryKey: ['injectionContextError'],
75-
queryFn: infiniteFetcher,
77+
queryFn: ({ pageParam }) =>
78+
sleep(0).then(() => 'data on page ' + pageParam),
7679
initialPageParam: 0,
7780
getNextPageParam: () => 12,
7881
}))
@@ -83,7 +86,8 @@ describe('injectInfiniteQuery', () => {
8386
const query = injectInfiniteQuery(
8487
() => ({
8588
queryKey: ['manualInjector'],
86-
queryFn: infiniteFetcher,
89+
queryFn: ({ pageParam }) =>
90+
sleep(0).then(() => 'data on page ' + pageParam),
8791
initialPageParam: 0,
8892
getNextPageParam: () => 12,
8993
}),

packages/angular-query-experimental/src/__tests__/inject-is-fetching.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ import {
44
Injector,
55
provideExperimentalZonelessChangeDetection,
66
} from '@angular/core'
7+
import { sleep } from '@tanstack/query-test-utils'
78
import {
89
QueryClient,
910
injectIsFetching,
1011
injectQuery,
1112
provideTanStackQuery,
1213
} from '..'
13-
import { delayedFetcher } from './test-utils'
1414

1515
const QUERY_DURATION = 100
1616

@@ -39,7 +39,7 @@ describe('injectIsFetching', () => {
3939
const isFetching = TestBed.runInInjectionContext(() => {
4040
injectQuery(() => ({
4141
queryKey: ['isFetching1'],
42-
queryFn: delayedFetcher(100),
42+
queryFn: () => sleep(100).then(() => 'Some data'),
4343
}))
4444
return injectIsFetching()
4545
})

packages/angular-query-experimental/src/__tests__/inject-is-mutating.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ import {
44
Injector,
55
provideExperimentalZonelessChangeDetection,
66
} from '@angular/core'
7+
import { sleep } from '@tanstack/query-test-utils'
78
import {
89
QueryClient,
910
injectIsMutating,
1011
injectMutation,
1112
provideTanStackQuery,
1213
} from '..'
13-
import { successMutator } from './test-utils'
1414

1515
describe('injectIsMutating', () => {
1616
let queryClient: QueryClient
@@ -36,7 +36,7 @@ describe('injectIsMutating', () => {
3636
const isMutating = injectIsMutating()
3737
const mutation = injectMutation(() => ({
3838
mutationKey: ['isMutating1'],
39-
mutationFn: successMutator<{ par1: string }>,
39+
mutationFn: (params: { par1: string }) => sleep(0).then(() => params),
4040
}))
4141

4242
expect(isMutating()).toBe(0)

packages/angular-query-experimental/src/__tests__/inject-mutation-state.test.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@ import {
88
import { TestBed } from '@angular/core/testing'
99
import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'
1010
import { By } from '@angular/platform-browser'
11+
import { sleep } from '@tanstack/query-test-utils'
1112
import {
1213
QueryClient,
1314
injectMutation,
1415
injectMutationState,
1516
provideTanStackQuery,
1617
} from '..'
17-
import { setFixtureSignalInputs, successMutator } from './test-utils'
18+
import { setFixtureSignalInputs } from './test-utils'
1819

1920
describe('injectMutationState', () => {
2021
let queryClient: QueryClient
@@ -42,7 +43,7 @@ describe('injectMutationState', () => {
4243
const mutation = TestBed.runInInjectionContext(() => {
4344
return injectMutation(() => ({
4445
mutationKey: mutationKey,
45-
mutationFn: (params: string) => successMutator(params),
46+
mutationFn: (params: string) => sleep(0).then(() => params),
4647
}))
4748
})
4849

@@ -68,11 +69,11 @@ describe('injectMutationState', () => {
6869
return [
6970
injectMutation(() => ({
7071
mutationKey: mutationKey1,
71-
mutationFn: (params: string) => successMutator(params),
72+
mutationFn: (params: string) => sleep(0).then(() => params),
7273
})),
7374
injectMutation(() => ({
7475
mutationKey: mutationKey2,
75-
mutationFn: (params: string) => successMutator(params),
76+
mutationFn: (params: string) => sleep(0).then(() => params),
7677
})),
7778
]
7879
})
@@ -103,7 +104,7 @@ describe('injectMutationState', () => {
103104
const mutation = TestBed.runInInjectionContext(() => {
104105
return injectMutation(() => ({
105106
mutationKey: mutationKey,
106-
mutationFn: (params: string) => successMutator(params),
107+
mutationFn: (params: string) => sleep(0).then(() => params),
107108
}))
108109
})
109110

packages/angular-query-experimental/src/__tests__/inject-mutation.test-d.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
import { describe, expectTypeOf, test } from 'vitest'
2+
import { sleep } from '@tanstack/query-test-utils'
23
import { injectMutation } from '..'
3-
import { successMutator } from './test-utils'
44
import type { Signal } from '@angular/core'
55

66
describe('Discriminated union return type', () => {
77
test('data should be possibly undefined by default', () => {
88
const mutation = injectMutation(() => ({
9-
mutationFn: successMutator<string>,
9+
mutationFn: () => sleep(0).then(() => 'string'),
1010
}))
1111

1212
expectTypeOf(mutation.data).toEqualTypeOf<Signal<string | undefined>>()
1313
})
1414

1515
test('data should be defined when mutation is success', () => {
1616
const mutation = injectMutation(() => ({
17-
mutationFn: successMutator<string>,
17+
mutationFn: () => sleep(0).then(() => 'string'),
1818
}))
1919

2020
if (mutation.isSuccess()) {
@@ -24,7 +24,7 @@ describe('Discriminated union return type', () => {
2424

2525
test('error should be null when mutation is success', () => {
2626
const mutation = injectMutation(() => ({
27-
mutationFn: successMutator<string>,
27+
mutationFn: () => sleep(0).then(() => 'string'),
2828
}))
2929

3030
if (mutation.isSuccess()) {
@@ -34,7 +34,7 @@ describe('Discriminated union return type', () => {
3434

3535
test('data should be undefined when mutation is pending', () => {
3636
const mutation = injectMutation(() => ({
37-
mutationFn: successMutator<string>,
37+
mutationFn: () => sleep(0).then(() => 'string'),
3838
}))
3939

4040
if (mutation.isPending()) {
@@ -44,7 +44,7 @@ describe('Discriminated union return type', () => {
4444

4545
test('error should be defined when mutation is error', () => {
4646
const mutation = injectMutation(() => ({
47-
mutationFn: successMutator<string>,
47+
mutationFn: () => sleep(0).then(() => 'string'),
4848
}))
4949

5050
if (mutation.isError()) {
@@ -54,7 +54,7 @@ describe('Discriminated union return type', () => {
5454

5555
test('should narrow variables', () => {
5656
const mutation = injectMutation(() => ({
57-
mutationFn: successMutator<string>,
57+
mutationFn: (_variables: string) => sleep(0).then(() => 'string'),
5858
}))
5959

6060
if (mutation.isIdle()) {

0 commit comments

Comments
 (0)