diff --git a/packages/eslint-plugin-query/src/__tests__/no-void-query-fn.test.ts b/packages/eslint-plugin-query/src/__tests__/no-void-query-fn.test.ts index c136a2582c..e26c21de8f 100644 --- a/packages/eslint-plugin-query/src/__tests__/no-void-query-fn.test.ts +++ b/packages/eslint-plugin-query/src/__tests__/no-void-query-fn.test.ts @@ -162,6 +162,59 @@ ruleTester.run('no-void-query-fn', rule, { } `, }, + { + name: 'useInfiniteQuery queryFn returns a value', + code: normalizeIndent` + import { useInfiniteQuery } from '@tanstack/react-query' + + function Component() { + const query = useInfiniteQuery({ + queryKey: ['test'], + queryFn: ({ pageParam }) => ({ data: 'test', page: pageParam }), + initialPageParam: 0, + getNextPageParam: (lastPage) => undefined, + }) + return null + } + `, + }, + { + name: 'useSuspenseQuery queryFn returns a value', + code: normalizeIndent` + import { useSuspenseQuery } from '@tanstack/react-query' + + function Component() { + const query = useSuspenseQuery({ + queryKey: ['test'], + queryFn: () => ({ data: 'test' }), + }) + return null + } + `, + }, + { + name: 'queryOptions queryFn returns a value', + code: normalizeIndent` + import { queryOptions } from '@tanstack/react-query' + + const options = queryOptions({ + queryKey: ['test'], + queryFn: () => ({ data: 'test' }), + }) + `, + }, + { + name: 'fetchQuery queryFn returns a value', + code: normalizeIndent` + import { QueryClient } from '@tanstack/react-query' + + const queryClient = new QueryClient() + queryClient.fetchQuery({ + queryKey: ['test'], + queryFn: () => fetch('/api/test').then((r) => r.json()), + }) + `, + }, ], invalid: [ { @@ -321,5 +374,70 @@ ruleTester.run('no-void-query-fn', rule, { `, errors: [{ messageId: 'noVoidReturn' }], }, + { + name: 'useInfiniteQuery queryFn returns void', + code: normalizeIndent` + import { useInfiniteQuery } from '@tanstack/react-query' + + function Component() { + const query = useInfiniteQuery({ + queryKey: ['test'], + queryFn: async ({ pageParam }) => { + await fetch('/api/test?page=' + pageParam) + }, + initialPageParam: 0, + getNextPageParam: (lastPage) => undefined, + }) + return null + } + `, + errors: [{ messageId: 'noVoidReturn' }], + }, + { + name: 'useSuspenseQuery queryFn returns void', + code: normalizeIndent` + import { useSuspenseQuery } from '@tanstack/react-query' + + function Component() { + const query = useSuspenseQuery({ + queryKey: ['test'], + queryFn: () => { + console.log('fetching') + }, + }) + return null + } + `, + errors: [{ messageId: 'noVoidReturn' }], + }, + { + name: 'queryOptions queryFn returns void', + code: normalizeIndent` + import { queryOptions } from '@tanstack/react-query' + + const options = queryOptions({ + queryKey: ['test'], + queryFn: async () => { + await fetch('/api/test') + }, + }) + `, + errors: [{ messageId: 'noVoidReturn' }], + }, + { + name: 'fetchQuery queryFn returns void', + code: normalizeIndent` + import { QueryClient } from '@tanstack/react-query' + + const queryClient = new QueryClient() + queryClient.fetchQuery({ + queryKey: ['test'], + queryFn: async () => { + await fetch('/api/test') + }, + }) + `, + errors: [{ messageId: 'noVoidReturn' }], + }, ], })