diff --git a/packages/angular-query-devtools-experimental/src/__tests__/inject-devtools-panel.test.ts b/packages/angular-query-devtools-experimental/src/__tests__/inject-devtools-panel.test.ts index e2d2f7751f..ff2f6224cb 100644 --- a/packages/angular-query-devtools-experimental/src/__tests__/inject-devtools-panel.test.ts +++ b/packages/angular-query-devtools-experimental/src/__tests__/inject-devtools-panel.test.ts @@ -8,7 +8,7 @@ import { QueryClient, provideTanStackQuery, } from '@tanstack/angular-query-experimental' -import { beforeEach, describe, expect, vi } from 'vitest' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { injectDevtoolsPanel } from '../inject-devtools-panel' const mockDevtoolsPanelInstance = { diff --git a/packages/angular-query-devtools-experimental/tsconfig.json b/packages/angular-query-devtools-experimental/tsconfig.json index 5982d4bf3e..330cf1d759 100644 --- a/packages/angular-query-devtools-experimental/tsconfig.json +++ b/packages/angular-query-devtools-experimental/tsconfig.json @@ -8,8 +8,7 @@ "noPropertyAccessFromIndexSignature": true, "noFallthroughCasesInSwitch": true, "useDefineForClassFields": false, - "target": "ES2022", - "types": ["vitest/globals"] + "target": "ES2022" }, "include": ["src", "*.config.js", "*.config.ts", "package.json"], "references": [ diff --git a/packages/angular-query-experimental/src/__tests__/inject-infinite-query.test-d.ts b/packages/angular-query-experimental/src/__tests__/inject-infinite-query.test-d.ts index 4d4e28e6a8..047da657e2 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-infinite-query.test-d.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-infinite-query.test-d.ts @@ -1,5 +1,5 @@ import { TestBed } from '@angular/core/testing' -import { afterEach } from 'vitest' +import { afterEach, beforeEach, describe, expectTypeOf, test, vi } from 'vitest' import { provideExperimentalZonelessChangeDetection } from '@angular/core' import { QueryClient, injectInfiniteQuery, provideTanStackQuery } from '..' import { infiniteFetcher } from './test-utils' diff --git a/packages/angular-query-experimental/src/__tests__/inject-infinite-query.test.ts b/packages/angular-query-experimental/src/__tests__/inject-infinite-query.test.ts index c91c004294..6c7c8d1d51 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-infinite-query.test.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-infinite-query.test.ts @@ -1,5 +1,5 @@ import { TestBed } from '@angular/core/testing' -import { afterEach } from 'vitest' +import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest' import { Injector, provideExperimentalZonelessChangeDetection, diff --git a/packages/angular-query-experimental/src/__tests__/inject-is-fetching.test.ts b/packages/angular-query-experimental/src/__tests__/inject-is-fetching.test.ts index fbbe9a6f00..1e42ddc124 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-is-fetching.test.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-is-fetching.test.ts @@ -1,5 +1,5 @@ import { TestBed } from '@angular/core/testing' -import { beforeEach, describe, expect } from 'vitest' +import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest' import { Injector, provideExperimentalZonelessChangeDetection, diff --git a/packages/angular-query-experimental/src/__tests__/inject-is-mutating.test.ts b/packages/angular-query-experimental/src/__tests__/inject-is-mutating.test.ts index ccfa8e4640..73a3ce5f24 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-is-mutating.test.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-is-mutating.test.ts @@ -1,4 +1,4 @@ -import { beforeEach, describe } from 'vitest' +import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest' import { TestBed } from '@angular/core/testing' import { Injector, diff --git a/packages/angular-query-experimental/src/__tests__/inject-mutation-state.test-d.ts b/packages/angular-query-experimental/src/__tests__/inject-mutation-state.test-d.ts index 338c464a9b..0fbd5d8f65 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-mutation-state.test-d.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-mutation-state.test-d.ts @@ -1,4 +1,4 @@ -import { describe, expectTypeOf } from 'vitest' +import { describe, expectTypeOf, it } from 'vitest' import { injectMutationState } from '..' import type { MutationState, MutationStatus } from '..' diff --git a/packages/angular-query-experimental/src/__tests__/inject-mutation-state.test.ts b/packages/angular-query-experimental/src/__tests__/inject-mutation-state.test.ts index e7ae9dec8a..44e6eeab90 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-mutation-state.test.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-mutation-state.test.ts @@ -6,7 +6,7 @@ import { signal, } from '@angular/core' import { TestBed } from '@angular/core/testing' -import { describe, expect, test, vi } from 'vitest' +import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest' import { By } from '@angular/platform-browser' import { QueryClient, diff --git a/packages/angular-query-experimental/src/__tests__/inject-mutation.test-d.ts b/packages/angular-query-experimental/src/__tests__/inject-mutation.test-d.ts index 2cfac635ed..b3aa0a96dc 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-mutation.test-d.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-mutation.test-d.ts @@ -1,4 +1,4 @@ -import { describe, expectTypeOf } from 'vitest' +import { describe, expectTypeOf, test } from 'vitest' import { injectMutation } from '..' import { successMutator } from './test-utils' import type { Signal } from '@angular/core' diff --git a/packages/angular-query-experimental/src/__tests__/inject-mutation.test.ts b/packages/angular-query-experimental/src/__tests__/inject-mutation.test.ts index a15daa54db..f595095c81 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-mutation.test.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-mutation.test.ts @@ -6,7 +6,7 @@ import { signal, } from '@angular/core' import { TestBed } from '@angular/core/testing' -import { describe, expect, vi } from 'vitest' +import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest' import { By } from '@angular/platform-browser' import { QueryClient, injectMutation, provideTanStackQuery } from '..' import { diff --git a/packages/angular-query-experimental/src/__tests__/inject-query.test-d.ts b/packages/angular-query-experimental/src/__tests__/inject-query.test-d.ts index 406789dc42..ded20a5803 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-query.test-d.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-query.test-d.ts @@ -1,4 +1,4 @@ -import { describe, expectTypeOf, it } from 'vitest' +import { describe, expectTypeOf, it, test } from 'vitest' import { injectQuery, queryOptions } from '..' import { simpleFetcher } from './test-utils' import type { Signal } from '@angular/core' diff --git a/packages/angular-query-experimental/src/__tests__/inject-query.test.ts b/packages/angular-query-experimental/src/__tests__/inject-query.test.ts index 51d20eface..2f7d5f4f45 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-query.test.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-query.test.ts @@ -8,7 +8,15 @@ import { signal, } from '@angular/core' import { TestBed } from '@angular/core/testing' -import { afterEach, describe, expect, vi } from 'vitest' +import { + afterEach, + beforeEach, + describe, + expect, + expectTypeOf, + test, + vi, +} from 'vitest' import { QueryCache, QueryClient, injectQuery, provideTanStackQuery } from '..' import { delayedFetcher, diff --git a/packages/angular-query-experimental/src/__tests__/mutation-options.test-d.ts b/packages/angular-query-experimental/src/__tests__/mutation-options.test-d.ts index 97f4b0d946..e3412fe75f 100644 --- a/packages/angular-query-experimental/src/__tests__/mutation-options.test-d.ts +++ b/packages/angular-query-experimental/src/__tests__/mutation-options.test-d.ts @@ -1,12 +1,28 @@ +import { assertType, describe, expectTypeOf, test } from 'vitest' import { mutationOptions } from '../mutation-options' describe('mutationOptions', () => { test('should not allow excess properties', () => { - expectTypeOf(mutationOptions).parameter(0).not.toHaveProperty('onMutates') + assertType>([ + { + mutationFn: () => Promise.resolve(5), + mutationKey: ['key'], + // @ts-expect-error this is a good error, because onMutates does not exist! + onMutates: 1000, + }, + ]) + assertType>([ + { + mutationFn: () => Promise.resolve(5), + mutationKey: ['key'], + // @ts-expect-error this is a good error, because onMutates does not exist! + onMutates: 1000, + }, + ]) }) test('should infer types for callbacks', () => { - return mutationOptions({ + mutationOptions({ mutationFn: () => Promise.resolve(5), mutationKey: ['key'], onSuccess: (data) => { diff --git a/packages/angular-query-experimental/src/__tests__/providers.test.ts b/packages/angular-query-experimental/src/__tests__/providers.test.ts index 266aa40a35..a4d9b9da3f 100644 --- a/packages/angular-query-experimental/src/__tests__/providers.test.ts +++ b/packages/angular-query-experimental/src/__tests__/providers.test.ts @@ -1,4 +1,4 @@ -import { beforeEach, describe, expect, test, vi } from 'vitest' +import { afterEach, beforeEach, describe, expect, it, test, vi } from 'vitest' import { QueryClient } from '@tanstack/query-core' import { TestBed } from '@angular/core/testing' import { diff --git a/packages/angular-query-experimental/src/__tests__/query-options.test-d.ts b/packages/angular-query-experimental/src/__tests__/query-options.test-d.ts index 18cd986adf..350ab3dda2 100644 --- a/packages/angular-query-experimental/src/__tests__/query-options.test-d.ts +++ b/packages/angular-query-experimental/src/__tests__/query-options.test-d.ts @@ -1,4 +1,4 @@ -import { assertType, describe, expectTypeOf } from 'vitest' +import { assertType, describe, expectTypeOf, test } from 'vitest' import { QueryClient, dataTagSymbol, injectQuery, queryOptions } from '..' import type { Signal } from '@angular/core' diff --git a/packages/angular-query-experimental/src/__tests__/signal-proxy.test.ts b/packages/angular-query-experimental/src/__tests__/signal-proxy.test.ts index f784554e90..d06aef6723 100644 --- a/packages/angular-query-experimental/src/__tests__/signal-proxy.test.ts +++ b/packages/angular-query-experimental/src/__tests__/signal-proxy.test.ts @@ -1,5 +1,5 @@ import { isSignal, signal } from '@angular/core' -import { describe } from 'vitest' +import { describe, expect, test } from 'vitest' import { signalProxy } from '../signal-proxy' describe('signalProxy', () => { diff --git a/packages/angular-query-experimental/src/__tests__/test-utils.ts b/packages/angular-query-experimental/src/__tests__/test-utils.ts index bb3f5bae83..9fdd01f943 100644 --- a/packages/angular-query-experimental/src/__tests__/test-utils.ts +++ b/packages/angular-query-experimental/src/__tests__/test-utils.ts @@ -1,5 +1,6 @@ import { isSignal, untracked } from '@angular/core' import { SIGNAL, signalSetFn } from '@angular/core/primitives/signals' +import { expect } from 'vitest' import type { InputSignal, Signal } from '@angular/core' import type { ComponentFixture } from '@angular/core/testing' diff --git a/packages/angular-query-experimental/tsconfig.json b/packages/angular-query-experimental/tsconfig.json index 67e70b897c..fa57271ae7 100644 --- a/packages/angular-query-experimental/tsconfig.json +++ b/packages/angular-query-experimental/tsconfig.json @@ -8,8 +8,7 @@ "noPropertyAccessFromIndexSignature": true, "noFallthroughCasesInSwitch": true, "useDefineForClassFields": false, - "target": "ES2022", - "types": ["vitest/globals"] + "target": "ES2022" }, "include": ["src", "*.config.js", "*.config.ts", "package.json"], "references": [{ "path": "../query-core" }, { "path": "../query-devtools" }] diff --git a/packages/angular-query-persist-client/tsconfig.json b/packages/angular-query-persist-client/tsconfig.json index 1c0f8de7c8..85cdab026b 100644 --- a/packages/angular-query-persist-client/tsconfig.json +++ b/packages/angular-query-persist-client/tsconfig.json @@ -9,8 +9,7 @@ "noPropertyAccessFromIndexSignature": true, "noFallthroughCasesInSwitch": true, "useDefineForClassFields": false, - "target": "ES2022", - "types": ["vitest/globals"] + "target": "ES2022" }, "include": ["src", "*.config.js", "*.config.ts", "package.json"], "references": [ diff --git a/packages/query-async-storage-persister/eslint.config.js b/packages/query-async-storage-persister/eslint.config.js index 7ccaf50177..df75435c7e 100644 --- a/packages/query-async-storage-persister/eslint.config.js +++ b/packages/query-async-storage-persister/eslint.config.js @@ -1,15 +1,5 @@ // @ts-check -import vitest from '@vitest/eslint-plugin' import rootConfig from './root.eslint.config.js' -export default [ - ...rootConfig, - { - plugins: { vitest }, - rules: { - ...vitest.configs.recommended.rules, - 'vitest/expect-expect': 'warn', - }, - }, -] +export default [...rootConfig] diff --git a/packages/query-broadcast-client-experimental/eslint.config.js b/packages/query-broadcast-client-experimental/eslint.config.js index 7ccaf50177..df75435c7e 100644 --- a/packages/query-broadcast-client-experimental/eslint.config.js +++ b/packages/query-broadcast-client-experimental/eslint.config.js @@ -1,15 +1,5 @@ // @ts-check -import vitest from '@vitest/eslint-plugin' import rootConfig from './root.eslint.config.js' -export default [ - ...rootConfig, - { - plugins: { vitest }, - rules: { - ...vitest.configs.recommended.rules, - 'vitest/expect-expect': 'warn', - }, - }, -] +export default [...rootConfig] diff --git a/packages/query-codemods/eslint.config.js b/packages/query-codemods/eslint.config.js index c48269cff1..19a16c3c1e 100644 --- a/packages/query-codemods/eslint.config.js +++ b/packages/query-codemods/eslint.config.js @@ -16,11 +16,4 @@ export default [ 'sort-imports': 'off', }, }, - { - plugins: { vitest }, - rules: { - ...vitest.configs.recommended.rules, - 'vitest/expect-expect': 'warn', - }, - }, ] diff --git a/packages/query-core/eslint.config.js b/packages/query-core/eslint.config.js index 7ccaf50177..df75435c7e 100644 --- a/packages/query-core/eslint.config.js +++ b/packages/query-core/eslint.config.js @@ -1,15 +1,5 @@ // @ts-check -import vitest from '@vitest/eslint-plugin' import rootConfig from './root.eslint.config.js' -export default [ - ...rootConfig, - { - plugins: { vitest }, - rules: { - ...vitest.configs.recommended.rules, - 'vitest/expect-expect': 'warn', - }, - }, -] +export default [...rootConfig] diff --git a/packages/query-core/src/__tests__/notifyManager.test.tsx b/packages/query-core/src/__tests__/notifyManager.test.tsx index 20a3103eca..deb070f2c5 100644 --- a/packages/query-core/src/__tests__/notifyManager.test.tsx +++ b/packages/query-core/src/__tests__/notifyManager.test.tsx @@ -1,4 +1,13 @@ -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { + afterEach, + assertType, + beforeEach, + describe, + expect, + expectTypeOf, + it, + vi, +} from 'vitest' import { createNotifyManager } from '../notifyManager' import { sleep } from './utils' @@ -81,10 +90,13 @@ describe('notifyManager', () => { // now someFn expect to be called with args [a: string, b: number] const someFn = notifyManagerTest.batchCalls(fn) - someFn('im happy', 4) - - // @ts-expect-error - someFn('im not happy', false) + expectTypeOf(someFn).parameters.toEqualTypeOf>() + assertType>(['im happy', 4]) + assertType>([ + 'im not happy', + // @ts-expect-error + false, + ]) }) it('should use custom batch notify function', async () => { diff --git a/packages/query-core/src/__tests__/queryClient.test-d.tsx b/packages/query-core/src/__tests__/queryClient.test-d.tsx index c9d953a973..8a3be1a9e2 100644 --- a/packages/query-core/src/__tests__/queryClient.test-d.tsx +++ b/packages/query-core/src/__tests__/queryClient.test-d.tsx @@ -1,4 +1,4 @@ -import { describe, expectTypeOf, it } from 'vitest' +import { assertType, describe, expectTypeOf, it } from 'vitest' import { QueryClient } from '../queryClient' import type { MutationFilters, QueryFilters, Updater } from '../utils' import type { Mutation } from '../mutation' @@ -42,10 +42,10 @@ describe('getQueryData', () => { }) it('should only allow Arrays to be passed', () => { - const queryKey = 'key' - const queryClient = new QueryClient() - // @ts-expect-error TS2345: Argument of type 'string' is not assignable to parameter of type 'QueryKey' - return queryClient.getQueryData(queryKey) + assertType>([ + // @ts-expect-error TS2345: Argument of type 'string' is not assignable to parameter of type 'QueryKey' + { queryKey: 'key' }, + ]) }) }) @@ -171,22 +171,26 @@ describe('fetchInfiniteQuery', () => { }) it('should not allow passing getNextPageParam without pages', () => { - new QueryClient().fetchInfiniteQuery({ - queryKey: ['key'], - queryFn: () => Promise.resolve('string'), - initialPageParam: 1, - getNextPageParam: () => 1, - }) + assertType>([ + { + queryKey: ['key'], + queryFn: () => Promise.resolve('string'), + initialPageParam: 1, + getNextPageParam: () => 1, + }, + ]) }) it('should not allow passing pages without getNextPageParam', () => { - // @ts-expect-error Property 'getNextPageParam' is missing - return new QueryClient().fetchInfiniteQuery({ - queryKey: ['key'], - queryFn: () => Promise.resolve('string'), - initialPageParam: 1, - pages: 5, - }) + assertType>([ + // @ts-expect-error Property 'getNextPageParam' is missing + { + queryKey: ['key'], + queryFn: () => Promise.resolve('string'), + initialPageParam: 1, + pages: 5, + }, + ]) }) }) @@ -506,26 +510,17 @@ describe('fully typed usage', () => { describe('invalidateQueries', () => { it('shows type error when queryKey is a wrong type in invalidateQueries', () => { - const queryClient = new QueryClient() - - queryClient.invalidateQueries() - - queryClient.invalidateQueries({ - queryKey: ['1'], - }) - - queryClient.invalidateQueries({ + assertType>([]) + assertType>([ + { queryKey: ['1'] }, + ]) + assertType>([ // @ts-expect-error - queryKey: '1', - }) - - queryClient.invalidateQueries({ - // @ts-expect-error - queryKey: {}, - }) + { queryKey: '1' }, + ]) }) it('needs queryKey to be an array (#8684)', () => { - new QueryClient().invalidateQueries({ + assertType>({ // @ts-expect-error key is not an array queryKey: { foo: true }, }) diff --git a/packages/query-persist-client-core/eslint.config.js b/packages/query-persist-client-core/eslint.config.js index 7ccaf50177..df75435c7e 100644 --- a/packages/query-persist-client-core/eslint.config.js +++ b/packages/query-persist-client-core/eslint.config.js @@ -1,15 +1,5 @@ // @ts-check -import vitest from '@vitest/eslint-plugin' import rootConfig from './root.eslint.config.js' -export default [ - ...rootConfig, - { - plugins: { vitest }, - rules: { - ...vitest.configs.recommended.rules, - 'vitest/expect-expect': 'warn', - }, - }, -] +export default [...rootConfig] diff --git a/packages/query-sync-storage-persister/eslint.config.js b/packages/query-sync-storage-persister/eslint.config.js index 7ccaf50177..df75435c7e 100644 --- a/packages/query-sync-storage-persister/eslint.config.js +++ b/packages/query-sync-storage-persister/eslint.config.js @@ -1,15 +1,5 @@ // @ts-check -import vitest from '@vitest/eslint-plugin' import rootConfig from './root.eslint.config.js' -export default [ - ...rootConfig, - { - plugins: { vitest }, - rules: { - ...vitest.configs.recommended.rules, - 'vitest/expect-expect': 'warn', - }, - }, -] +export default [...rootConfig]