From b9168c2eded52b9e53f88d6cd4462463e2a315a9 Mon Sep 17 00:00:00 2001 From: Yannick Stachelscheid Date: Fri, 22 Apr 2022 16:54:53 +0200 Subject: [PATCH] feature(useQueries): add test cases for invalid query function return types --- src/reactjs/tests/useQueries.test.tsx | 70 +++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/src/reactjs/tests/useQueries.test.tsx b/src/reactjs/tests/useQueries.test.tsx index 67fc39bf07..7e33c06e30 100644 --- a/src/reactjs/tests/useQueries.test.tsx +++ b/src/reactjs/tests/useQueries.test.tsx @@ -607,6 +607,76 @@ describe('useQueries', () => { // @ts-expect-error (Page component is not rendered) // eslint-disable-next-line function Page() { + // Rejects queryFn that returns/resolved to undefined or void + // @ts-expect-error (queryFn must not return undefined) + useQueries({ queries: [{ queryKey: key1, queryFn: () => undefined }] }) + // @ts-expect-error (queryFn must not return void) + // eslint-disable-next-line @typescript-eslint/no-empty-function + useQueries({ queries: [{ queryKey: key1, queryFn: () => {} }] }) + + useQueries({ + // @ts-expect-error (queryFn must not return explicitly undefined) + queries: [{ queryKey: key1, queryFn: (): undefined => undefined }], + }) + + useQueries({ + // @ts-expect-error (queryFn must not return explicitly void) + queries: [{ queryKey: key1, queryFn: (): void => undefined }], + }) + + useQueries({ + // @ts-expect-error (queryFn must not return explicitly Promise) + queries: [{ queryKey: key1, queryFn: (): Promise => undefined }], + }) + + useQueries({ + queries: [ + // @ts-expect-error (queryFn must not return explicitly Promise) + { queryKey: key1, queryFn: (): Promise => undefined }, + ], + }) + useQueries({ + queries: [ + // @ts-expect-error (queryFn must not return Promise) + { queryKey: key2, queryFn: () => Promise.resolve(undefined) }, + ], + }) + useQueries({ + // @ts-expect-error (queryFn must not return Promise) + queries: Array(50).map((_, i) => ({ + queryKey: ['key', i] as const, + queryFn: () => Promise.resolve(undefined), + })), + }) + + // Rejects queryFn that always throws + useQueries({ + queries: [ + // @ts-expect-error (queryFn must not return undefined) + { + queryKey: key3, + queryFn: async () => { + throw new Error('') + }, + }, + ], + }) + + // Accepts queryFn that *sometimes* throws + useQueries({ + queries: [ + { + queryKey: key3, + queryFn: async () => { + if (Math.random() > 0.1) { + throw new Error('') + } + return 'result' + }, + }, + ], + }) + // Array.map preserves TQueryFnData const result1 = useQueries({ queries: Array(50).map((_, i) => ({