@gravity-ui/data-source 0.9.0 → 0.10.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/core/types/DataSource.d.ts +8 -8
- package/build/cjs/core/types/DataSource.js.map +1 -1
- package/build/cjs/react/components/AsyncBoundary/AsyncBoundary.d.ts +3 -0
- package/build/cjs/react/components/AsyncBoundary/AsyncBoundary.js +35 -0
- package/build/cjs/react/components/AsyncBoundary/AsyncBoundary.js.map +1 -0
- package/build/cjs/react/components/AsyncBoundary/index.d.ts +3 -0
- package/build/cjs/react/components/AsyncBoundary/index.js +20 -0
- package/build/cjs/react/components/AsyncBoundary/index.js.map +1 -0
- package/build/cjs/react/components/AsyncBoundary/types.d.ts +13 -0
- package/build/cjs/react/components/AsyncBoundary/types.js +6 -0
- package/build/cjs/react/components/AsyncBoundary/types.js.map +1 -0
- package/build/cjs/react/components/AsyncBoundary/withAsyncBoundary.d.ts +3 -0
- package/build/cjs/react/components/AsyncBoundary/withAsyncBoundary.js +26 -0
- package/build/cjs/react/components/AsyncBoundary/withAsyncBoundary.js.map +1 -0
- package/build/cjs/react/components/EmptyView/EmptyView.d.ts +2 -0
- package/build/cjs/react/components/EmptyView/EmptyView.js +10 -0
- package/build/cjs/react/components/EmptyView/EmptyView.js.map +1 -0
- package/build/cjs/react/components/EmptyView/index.d.ts +1 -0
- package/build/cjs/react/components/EmptyView/index.js +13 -0
- package/build/cjs/react/components/EmptyView/index.js.map +1 -0
- package/build/cjs/react/components/types.d.ts +1 -1
- package/build/cjs/react/components/types.js.map +1 -1
- package/build/cjs/react/index.d.ts +5 -3
- package/build/cjs/react/index.js +27 -3
- package/build/cjs/react/index.js.map +1 -1
- package/build/cjs/react-query/components/QueryAsyncBoundary/QueryAsyncBoundary.d.ts +3 -0
- package/build/cjs/react-query/components/QueryAsyncBoundary/QueryAsyncBoundary.js +23 -0
- package/build/cjs/react-query/components/QueryAsyncBoundary/QueryAsyncBoundary.js.map +1 -0
- package/build/cjs/react-query/components/QueryAsyncBoundary/index.d.ts +3 -0
- package/build/cjs/react-query/components/QueryAsyncBoundary/index.js +20 -0
- package/build/cjs/react-query/components/QueryAsyncBoundary/index.js.map +1 -0
- package/build/cjs/react-query/components/QueryAsyncBoundary/types.d.ts +8 -0
- package/build/cjs/react-query/components/QueryAsyncBoundary/types.js +6 -0
- package/build/cjs/react-query/components/QueryAsyncBoundary/types.js.map +1 -0
- package/build/cjs/react-query/components/QueryAsyncBoundary/withQueryAsyncBoundary.d.ts +3 -0
- package/build/cjs/react-query/components/QueryAsyncBoundary/withQueryAsyncBoundary.js +26 -0
- package/build/cjs/react-query/components/QueryAsyncBoundary/withQueryAsyncBoundary.js.map +1 -0
- package/build/cjs/react-query/hooks/useSuspenseQueryData.d.ts +9 -0
- package/build/cjs/react-query/hooks/useSuspenseQueryData.js +22 -0
- package/build/cjs/react-query/hooks/useSuspenseQueryData.js.map +1 -0
- package/build/cjs/react-query/index.d.ts +2 -0
- package/build/cjs/react-query/index.js +35 -0
- package/build/cjs/react-query/index.js.map +1 -1
- package/build/esm/core/types/DataSource.d.ts +8 -8
- package/build/esm/core/types/DataSource.js.map +1 -1
- package/build/esm/react/components/AsyncBoundary/AsyncBoundary.d.ts +3 -0
- package/build/esm/react/components/AsyncBoundary/AsyncBoundary.js +28 -0
- package/build/esm/react/components/AsyncBoundary/AsyncBoundary.js.map +1 -0
- package/build/esm/react/components/AsyncBoundary/index.d.ts +3 -0
- package/build/esm/react/components/AsyncBoundary/index.js +3 -0
- package/build/esm/react/components/AsyncBoundary/index.js.map +1 -0
- package/build/esm/react/components/AsyncBoundary/types.d.ts +13 -0
- package/build/esm/react/components/AsyncBoundary/types.js +2 -0
- package/build/esm/react/components/AsyncBoundary/types.js.map +1 -0
- package/build/esm/react/components/AsyncBoundary/withAsyncBoundary.d.ts +3 -0
- package/build/esm/react/components/AsyncBoundary/withAsyncBoundary.js +19 -0
- package/build/esm/react/components/AsyncBoundary/withAsyncBoundary.js.map +1 -0
- package/build/esm/react/components/EmptyView/EmptyView.d.ts +2 -0
- package/build/esm/react/components/EmptyView/EmptyView.js +4 -0
- package/build/esm/react/components/EmptyView/EmptyView.js.map +1 -0
- package/build/esm/react/components/EmptyView/index.d.ts +1 -0
- package/build/esm/react/components/EmptyView/index.js +2 -0
- package/build/esm/react/components/EmptyView/index.js.map +1 -0
- package/build/esm/react/components/types.d.ts +1 -1
- package/build/esm/react/components/types.js.map +1 -1
- package/build/esm/react/index.d.ts +5 -3
- package/build/esm/react/index.js +4 -2
- package/build/esm/react/index.js.map +1 -1
- package/build/esm/react-query/components/QueryAsyncBoundary/QueryAsyncBoundary.d.ts +3 -0
- package/build/esm/react-query/components/QueryAsyncBoundary/QueryAsyncBoundary.js +16 -0
- package/build/esm/react-query/components/QueryAsyncBoundary/QueryAsyncBoundary.js.map +1 -0
- package/build/esm/react-query/components/QueryAsyncBoundary/index.d.ts +3 -0
- package/build/esm/react-query/components/QueryAsyncBoundary/index.js +3 -0
- package/build/esm/react-query/components/QueryAsyncBoundary/index.js.map +1 -0
- package/build/esm/react-query/components/QueryAsyncBoundary/types.d.ts +8 -0
- package/build/esm/react-query/components/QueryAsyncBoundary/types.js +2 -0
- package/build/esm/react-query/components/QueryAsyncBoundary/types.js.map +1 -0
- package/build/esm/react-query/components/QueryAsyncBoundary/withQueryAsyncBoundary.d.ts +3 -0
- package/build/esm/react-query/components/QueryAsyncBoundary/withQueryAsyncBoundary.js +19 -0
- package/build/esm/react-query/components/QueryAsyncBoundary/withQueryAsyncBoundary.js.map +1 -0
- package/build/esm/react-query/hooks/useSuspenseQueryData.d.ts +9 -0
- package/build/esm/react-query/hooks/useSuspenseQueryData.js +15 -0
- package/build/esm/react-query/hooks/useSuspenseQueryData.js.map +1 -0
- package/build/esm/react-query/index.d.ts +2 -0
- package/build/esm/react-query/index.js +2 -0
- package/build/esm/react-query/index.js.map +1 -1
- package/build/plugin/esbuild.d.mts +7 -0
- package/build/plugin/esbuild.mjs +6 -0
- package/build/plugin/factory-2tSt4Rte.mjs +513 -0
- package/build/plugin/index-mY40Sgl5.d.mts +24 -0
- package/build/plugin/index.d.mts +7 -0
- package/build/plugin/index.mjs +6 -0
- package/build/plugin/rollup.d.mts +6 -0
- package/build/plugin/rollup.mjs +6 -0
- package/build/plugin/rspack.d.mts +7 -0
- package/build/plugin/rspack.mjs +6 -0
- package/build/plugin/typings/client.d.ts +11 -0
- package/build/plugin/vite.d.mts +6 -0
- package/build/plugin/vite.mjs +6 -0
- package/build/plugin/webpack.d.mts +7 -0
- package/build/plugin/webpack.mjs +6 -0
- package/package.json +54 -5
- package/build/cjs/core/utils/__tests__/composeFullKey.test.js +0 -34
- package/build/cjs/core/utils/__tests__/composeFullKey.test.js.map +0 -1
- package/build/cjs/core/utils/__tests__/composeKey.test.js +0 -32
- package/build/cjs/core/utils/__tests__/composeKey.test.js.map +0 -1
- package/build/cjs/core/utils/__tests__/getError.test.js +0 -31
- package/build/cjs/core/utils/__tests__/getError.test.js.map +0 -1
- package/build/cjs/core/utils/__tests__/getStatus.test.js +0 -49
- package/build/cjs/core/utils/__tests__/getStatus.test.js.map +0 -1
- package/build/cjs/core/utils/__tests__/hasTag.test.js +0 -31
- package/build/cjs/core/utils/__tests__/hasTag.test.js.map +0 -1
- package/build/cjs/core/utils/__tests__/mergeStatuses.test.js +0 -25
- package/build/cjs/core/utils/__tests__/mergeStatuses.test.js.map +0 -1
- package/build/cjs/core/utils/__tests__/skipContext.test.js +0 -70
- package/build/cjs/core/utils/__tests__/skipContext.test.js.map +0 -1
- package/build/cjs/core/utils/__tests__/withCancellation.test.js +0 -106
- package/build/cjs/core/utils/__tests__/withCancellation.test.js.map +0 -1
- package/build/cjs/core/utils/__tests__/withCatch.test.js +0 -208
- package/build/cjs/core/utils/__tests__/withCatch.test.js.map +0 -1
- package/build/cjs/react/__tests__/DataManagerContext.test.js +0 -47
- package/build/cjs/react/__tests__/DataManagerContext.test.js.map +0 -1
- package/build/cjs/react/__tests__/withDataManager.test.js +0 -61
- package/build/cjs/react/__tests__/withDataManager.test.js.map +0 -1
- package/build/cjs/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js +0 -187
- package/build/cjs/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js.map +0 -1
- package/build/cjs/react/components/DataLoader/__tests__/DataLoader.test.js +0 -119
- package/build/cjs/react/components/DataLoader/__tests__/DataLoader.test.js.map +0 -1
- package/build/cjs/react-query/__tests__/createQueryNormalizer.test.js +0 -177
- package/build/cjs/react-query/__tests__/createQueryNormalizer.test.js.map +0 -1
- package/build/cjs/react-query/__tests__/normalizationEdgeCases.test.js +0 -100
- package/build/cjs/react-query/__tests__/normalizationEdgeCases.test.js.map +0 -1
- package/build/cjs/react-query/__tests__/subscriptions.test.js +0 -1180
- package/build/cjs/react-query/__tests__/subscriptions.test.js.map +0 -1
- package/build/cjs/react-query/__tests__/threeLevelIntegration.test.js +0 -659
- package/build/cjs/react-query/__tests__/threeLevelIntegration.test.js.map +0 -1
- package/build/cjs/react-query/__tests__/updateQueriesFromMutationData.test.js +0 -229
- package/build/cjs/react-query/__tests__/updateQueriesFromMutationData.test.js.map +0 -1
- package/build/cjs/react-query/hooks/__tests__/useQueryContext.test.js +0 -55
- package/build/cjs/react-query/hooks/__tests__/useQueryContext.test.js.map +0 -1
- package/build/cjs/react-query/hooks/__tests__/useQueryData.refetch.test.js +0 -230
- package/build/cjs/react-query/hooks/__tests__/useQueryData.refetch.test.js.map +0 -1
- package/build/cjs/react-query/hooks/__tests__/useQueryData.test.js +0 -97
- package/build/cjs/react-query/hooks/__tests__/useQueryData.test.js.map +0 -1
- package/build/cjs/react-query/hooks/__tests__/useQueryResponses.test.js +0 -77
- package/build/cjs/react-query/hooks/__tests__/useQueryResponses.test.js.map +0 -1
- package/build/cjs/react-query/hooks/__tests__/useRefetchAll.test.js +0 -79
- package/build/cjs/react-query/hooks/__tests__/useRefetchAll.test.js.map +0 -1
- package/build/cjs/react-query/hooks/__tests__/useRefetchErrored.test.js +0 -117
- package/build/cjs/react-query/hooks/__tests__/useRefetchErrored.test.js.map +0 -1
- package/build/cjs/react-query/hooks/__tests__/useRefetchInterval.test.js +0 -156
- package/build/cjs/react-query/hooks/__tests__/useRefetchInterval.test.js.map +0 -1
- package/build/cjs/react-query/utils/__tests__/checkMutationObjectsKeys.test.js +0 -295
- package/build/cjs/react-query/utils/__tests__/checkMutationObjectsKeys.test.js.map +0 -1
- package/build/cjs/react-query/utils/__tests__/formatNullableValue.test.js +0 -27
- package/build/cjs/react-query/utils/__tests__/formatNullableValue.test.js.map +0 -1
- package/build/cjs/react-query/utils/__tests__/getProgressiveRefetch.test.js +0 -76
- package/build/cjs/react-query/utils/__tests__/getProgressiveRefetch.test.js.map +0 -1
- package/build/cjs/react-query/utils/__tests__/normalizeStatus.test.js +0 -30
- package/build/cjs/react-query/utils/__tests__/normalizeStatus.test.js.map +0 -1
- package/build/cjs/react-query/utils/__tests__/notReachable.test.js +0 -35
- package/build/cjs/react-query/utils/__tests__/notReachable.test.js.map +0 -1
- package/build/cjs/react-query/utils/__tests__/parseNullableValue.test.js +0 -27
- package/build/cjs/react-query/utils/__tests__/parseNullableValue.test.js.map +0 -1
- package/build/cjs/setupTests.d.ts +0 -1
- package/build/cjs/setupTests.js +0 -4
- package/build/cjs/setupTests.js.map +0 -1
- package/build/esm/core/utils/__tests__/composeFullKey.test.js +0 -32
- package/build/esm/core/utils/__tests__/composeFullKey.test.js.map +0 -1
- package/build/esm/core/utils/__tests__/composeKey.test.js +0 -30
- package/build/esm/core/utils/__tests__/composeKey.test.js.map +0 -1
- package/build/esm/core/utils/__tests__/getError.test.js +0 -29
- package/build/esm/core/utils/__tests__/getError.test.js.map +0 -1
- package/build/esm/core/utils/__tests__/getStatus.test.js +0 -47
- package/build/esm/core/utils/__tests__/getStatus.test.js.map +0 -1
- package/build/esm/core/utils/__tests__/hasTag.test.js +0 -29
- package/build/esm/core/utils/__tests__/hasTag.test.js.map +0 -1
- package/build/esm/core/utils/__tests__/mergeStatuses.test.js +0 -23
- package/build/esm/core/utils/__tests__/mergeStatuses.test.js.map +0 -1
- package/build/esm/core/utils/__tests__/skipContext.test.js +0 -67
- package/build/esm/core/utils/__tests__/skipContext.test.js.map +0 -1
- package/build/esm/core/utils/__tests__/withCancellation.test.js +0 -104
- package/build/esm/core/utils/__tests__/withCancellation.test.js.map +0 -1
- package/build/esm/core/utils/__tests__/withCatch.test.js +0 -205
- package/build/esm/core/utils/__tests__/withCatch.test.js.map +0 -1
- package/build/esm/react/__tests__/DataManagerContext.test.js +0 -44
- package/build/esm/react/__tests__/DataManagerContext.test.js.map +0 -1
- package/build/esm/react/__tests__/withDataManager.test.js +0 -58
- package/build/esm/react/__tests__/withDataManager.test.js.map +0 -1
- package/build/esm/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js +0 -184
- package/build/esm/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js.map +0 -1
- package/build/esm/react/components/DataLoader/__tests__/DataLoader.test.js +0 -116
- package/build/esm/react/components/DataLoader/__tests__/DataLoader.test.js.map +0 -1
- package/build/esm/react-query/__tests__/createQueryNormalizer.test.js +0 -174
- package/build/esm/react-query/__tests__/createQueryNormalizer.test.js.map +0 -1
- package/build/esm/react-query/__tests__/normalizationEdgeCases.test.js +0 -98
- package/build/esm/react-query/__tests__/normalizationEdgeCases.test.js.map +0 -1
- package/build/esm/react-query/__tests__/subscriptions.test.js +0 -1176
- package/build/esm/react-query/__tests__/subscriptions.test.js.map +0 -1
- package/build/esm/react-query/__tests__/threeLevelIntegration.test.js +0 -656
- package/build/esm/react-query/__tests__/threeLevelIntegration.test.js.map +0 -1
- package/build/esm/react-query/__tests__/updateQueriesFromMutationData.test.js +0 -227
- package/build/esm/react-query/__tests__/updateQueriesFromMutationData.test.js.map +0 -1
- package/build/esm/react-query/hooks/__tests__/useQueryContext.test.js +0 -52
- package/build/esm/react-query/hooks/__tests__/useQueryContext.test.js.map +0 -1
- package/build/esm/react-query/hooks/__tests__/useQueryData.refetch.test.js +0 -227
- package/build/esm/react-query/hooks/__tests__/useQueryData.refetch.test.js.map +0 -1
- package/build/esm/react-query/hooks/__tests__/useQueryData.test.js +0 -95
- package/build/esm/react-query/hooks/__tests__/useQueryData.test.js.map +0 -1
- package/build/esm/react-query/hooks/__tests__/useQueryResponses.test.js +0 -74
- package/build/esm/react-query/hooks/__tests__/useQueryResponses.test.js.map +0 -1
- package/build/esm/react-query/hooks/__tests__/useRefetchAll.test.js +0 -77
- package/build/esm/react-query/hooks/__tests__/useRefetchAll.test.js.map +0 -1
- package/build/esm/react-query/hooks/__tests__/useRefetchErrored.test.js +0 -115
- package/build/esm/react-query/hooks/__tests__/useRefetchErrored.test.js.map +0 -1
- package/build/esm/react-query/hooks/__tests__/useRefetchInterval.test.js +0 -154
- package/build/esm/react-query/hooks/__tests__/useRefetchInterval.test.js.map +0 -1
- package/build/esm/react-query/utils/__tests__/checkMutationObjectsKeys.test.js +0 -292
- package/build/esm/react-query/utils/__tests__/checkMutationObjectsKeys.test.js.map +0 -1
- package/build/esm/react-query/utils/__tests__/formatNullableValue.test.js +0 -25
- package/build/esm/react-query/utils/__tests__/formatNullableValue.test.js.map +0 -1
- package/build/esm/react-query/utils/__tests__/getProgressiveRefetch.test.js +0 -74
- package/build/esm/react-query/utils/__tests__/getProgressiveRefetch.test.js.map +0 -1
- package/build/esm/react-query/utils/__tests__/normalizeStatus.test.js +0 -28
- package/build/esm/react-query/utils/__tests__/normalizeStatus.test.js.map +0 -1
- package/build/esm/react-query/utils/__tests__/notReachable.test.js +0 -33
- package/build/esm/react-query/utils/__tests__/notReachable.test.js.map +0 -1
- package/build/esm/react-query/utils/__tests__/parseNullableValue.test.js +0 -25
- package/build/esm/react-query/utils/__tests__/parseNullableValue.test.js.map +0 -1
- package/build/esm/setupTests.d.ts +0 -1
- package/build/esm/setupTests.js +0 -2
- package/build/esm/setupTests.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["withCatch","describe","it","_asyncToGenerator","_regeneratorRuntime","mark","_callee","mockFetch","mockErrorHandler","safeFetch","result","wrap","_callee$","_context","prev","next","jest","fn","mockResolvedValue","data","mockReturnValue","error","sent","expect","toHaveBeenCalledWith","not","toHaveBeenCalled","toEqual","stop","_callee2","_callee2$","_context2","Error","mockRejectedValue","_callee3","_callee3$","_context3","_callee4","_callee4$","_context4","complex","_callee5","_callee5$","_context5","_callee6","userName","_callee6$","_context6","id","name","toBe","_callee7","errorCode","_callee7$","_context7","code","message","_typeof"],"sources":["withCatch.test.ts"],"sourcesContent":["import {withCatch} from '../withCatch';\n\ndescribe('withCatch', () => {\n it('should return the result of the fetch function when it succeeds', async () => {\n const mockFetch = jest.fn().mockResolvedValue({data: 'success'});\n const mockErrorHandler = jest.fn().mockReturnValue({error: 'handled'});\n\n const safeFetch = withCatch(mockFetch, mockErrorHandler);\n const result = await safeFetch('arg1', 42);\n\n expect(mockFetch).toHaveBeenCalledWith('arg1', 42);\n expect(mockErrorHandler).not.toHaveBeenCalled();\n expect(result).toEqual({data: 'success'});\n });\n\n it('should call the error handler when the fetch function fails', async () => {\n const error = new Error('fetch failed');\n const mockFetch = jest.fn().mockRejectedValue(error);\n const mockErrorHandler = jest.fn().mockReturnValue({error: 'handled'});\n\n const safeFetch = withCatch(mockFetch, mockErrorHandler);\n const result = await safeFetch('arg1', 42);\n\n expect(mockFetch).toHaveBeenCalledWith('arg1', 42);\n expect(mockErrorHandler).toHaveBeenCalledWith(error);\n expect(result).toEqual({error: 'handled'});\n });\n\n it('should work with functions that take no parameters', async () => {\n const mockFetch = jest.fn().mockResolvedValue({data: 'success'});\n const mockErrorHandler = jest.fn().mockReturnValue({error: 'handled'});\n\n const safeFetch = withCatch(mockFetch, mockErrorHandler);\n const result = await safeFetch();\n\n expect(mockFetch).toHaveBeenCalledWith();\n expect(mockErrorHandler).not.toHaveBeenCalled();\n expect(result).toEqual({data: 'success'});\n });\n\n it('should work with functions that take multiple parameters', async () => {\n const mockFetch = jest.fn().mockResolvedValue({data: 'success'});\n const mockErrorHandler = jest.fn().mockReturnValue({error: 'handled'});\n\n const safeFetch = withCatch(mockFetch, mockErrorHandler);\n const result = await safeFetch('arg1', 42, true, {complex: 'object'});\n\n expect(mockFetch).toHaveBeenCalledWith('arg1', 42, true, {complex: 'object'});\n expect(mockErrorHandler).not.toHaveBeenCalled();\n expect(result).toEqual({data: 'success'});\n });\n\n it('should handle error handlers that return promises', async () => {\n const error = new Error('fetch failed');\n const mockFetch = jest.fn().mockRejectedValue(error);\n const mockErrorHandler = jest.fn().mockResolvedValue({error: 'async handled'});\n\n const safeFetch = withCatch(mockFetch, mockErrorHandler);\n const result = await safeFetch('arg1');\n\n expect(mockFetch).toHaveBeenCalledWith('arg1');\n expect(mockErrorHandler).toHaveBeenCalledWith(error);\n expect(result).toEqual({error: 'async handled'});\n });\n\n it('should preserve the type of the fetch function return value', async () => {\n interface User {\n id: number;\n name: string;\n }\n\n const mockFetch = jest.fn().mockResolvedValue({\n id: 1,\n name: 'John Doe',\n } as User);\n\n const mockErrorHandler = jest.fn().mockReturnValue(null);\n\n const safeFetch = withCatch<[string], User, null>(mockFetch, mockErrorHandler);\n const result = await safeFetch('user1');\n\n expect(result).toEqual({id: 1, name: 'John Doe'});\n // TypeScript should recognize result as User | null\n if (result !== null) {\n // This should compile without errors\n const userName = result.name;\n expect(userName).toBe('John Doe');\n }\n });\n\n it('should preserve the type of the error handler return value', async () => {\n interface ErrorResponse {\n code: number;\n message: string;\n }\n\n const error = new Error('fetch failed');\n const mockFetch = jest.fn<Promise<unknown>, [string]>().mockRejectedValue(error);\n\n const mockErrorHandler = jest.fn().mockReturnValue({\n code: 500,\n message: 'Internal Server Error',\n } as ErrorResponse);\n\n const safeFetch = withCatch<[string], unknown, ErrorResponse>(mockFetch, mockErrorHandler);\n const result = await safeFetch('user1');\n\n expect(mockErrorHandler).toHaveBeenCalledWith(error);\n\n // TypeScript should recognize result as unknown | ErrorResponse\n if (typeof result === 'object' && result !== null && 'code' in result) {\n // This should compile without errors\n const errorCode = (result as ErrorResponse).code;\n expect(errorCode).toBe(500);\n }\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { renderHook } from '@testing-library/react';
|
|
3
|
-
import { DataManagerContext, useDataManager } from '../DataManagerContext';
|
|
4
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
-
describe('useDataManager', function () {
|
|
6
|
-
it('should return dataManager from context', function () {
|
|
7
|
-
var mockDataManager = {
|
|
8
|
-
normalizer: undefined,
|
|
9
|
-
optimisticUpdate: jest.fn(),
|
|
10
|
-
invalidateData: jest.fn(),
|
|
11
|
-
invalidateTag: jest.fn(),
|
|
12
|
-
invalidateTags: jest.fn(),
|
|
13
|
-
invalidateSource: jest.fn(),
|
|
14
|
-
resetSource: jest.fn(),
|
|
15
|
-
invalidateParams: jest.fn(),
|
|
16
|
-
resetParams: jest.fn(),
|
|
17
|
-
invalidateSourceTags: jest.fn()
|
|
18
|
-
};
|
|
19
|
-
var wrapper = function wrapper(_ref) {
|
|
20
|
-
var children = _ref.children;
|
|
21
|
-
return /*#__PURE__*/_jsx(DataManagerContext.Provider, {
|
|
22
|
-
value: mockDataManager,
|
|
23
|
-
children: children
|
|
24
|
-
});
|
|
25
|
-
};
|
|
26
|
-
var _renderHook = renderHook(function () {
|
|
27
|
-
return useDataManager();
|
|
28
|
-
}, {
|
|
29
|
-
wrapper: wrapper
|
|
30
|
-
}),
|
|
31
|
-
result = _renderHook.result;
|
|
32
|
-
expect(result.current).toBe(mockDataManager);
|
|
33
|
-
});
|
|
34
|
-
it('should throw an error when dataManager is not provided', function () {
|
|
35
|
-
var consoleSpy = jest.spyOn(console, 'error').mockImplementation();
|
|
36
|
-
expect(function () {
|
|
37
|
-
renderHook(function () {
|
|
38
|
-
return useDataManager();
|
|
39
|
-
});
|
|
40
|
-
}).toThrow('DataManager is not provided by context. Use DataManagerContext.Provider to do it');
|
|
41
|
-
consoleSpy.mockRestore();
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
// #sourceMappingURL=DataManagerContext.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","renderHook","DataManagerContext","useDataManager","jsx","_jsx","describe","it","mockDataManager","normalizer","undefined","optimisticUpdate","jest","fn","invalidateData","invalidateTag","invalidateTags","invalidateSource","resetSource","invalidateParams","resetParams","invalidateSourceTags","wrapper","_ref","children","Provider","value","_renderHook","result","expect","current","toBe","consoleSpy","spyOn","console","mockImplementation","toThrow","mockRestore"],"sources":["DataManagerContext.test.tsx"],"sourcesContent":["import React from 'react';\n\nimport {renderHook} from '@testing-library/react';\n\nimport type {DataManager} from '../../core';\nimport {DataManagerContext, useDataManager} from '../DataManagerContext';\n\ndescribe('useDataManager', () => {\n it('should return dataManager from context', () => {\n const mockDataManager: DataManager = {\n normalizer: undefined,\n optimisticUpdate: jest.fn(),\n invalidateData: jest.fn(),\n invalidateTag: jest.fn(),\n invalidateTags: jest.fn(),\n invalidateSource: jest.fn(),\n resetSource: jest.fn(),\n invalidateParams: jest.fn(),\n resetParams: jest.fn(),\n invalidateSourceTags: jest.fn(),\n };\n\n const wrapper: React.FC<{children: React.ReactNode}> = ({children}) => (\n <DataManagerContext.Provider value={mockDataManager}>\n {children}\n </DataManagerContext.Provider>\n );\n\n const {result} = renderHook(() => useDataManager(), {wrapper});\n\n expect(result.current).toBe(mockDataManager);\n });\n\n it('should throw an error when dataManager is not provided', () => {\n const consoleSpy = jest.spyOn(console, 'error').mockImplementation();\n\n expect(() => {\n renderHook(() => useDataManager());\n }).toThrow(\n 'DataManager is not provided by context. Use DataManagerContext.Provider to do it',\n );\n\n consoleSpy.mockRestore();\n });\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAAQC,UAAU,QAAO,wBAAwB;AAGjD,SAAQC,kBAAkB,EAAEC,cAAc,QAAO,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEzEC,QAAQ,CAAC,gBAAgB,EAAE,YAAM;EAC7BC,EAAE,CAAC,wCAAwC,EAAE,YAAM;IAC/C,IAAMC,eAA4B,GAAG;MACjCC,UAAU,EAAEC,SAAS;MACrBC,gBAAgB,EAAEC,IAAI,CAACC,EAAE,CAAC,CAAC;MAC3BC,cAAc,EAAEF,IAAI,CAACC,EAAE,CAAC,CAAC;MACzBE,aAAa,EAAEH,IAAI,CAACC,EAAE,CAAC,CAAC;MACxBG,cAAc,EAAEJ,IAAI,CAACC,EAAE,CAAC,CAAC;MACzBI,gBAAgB,EAAEL,IAAI,CAACC,EAAE,CAAC,CAAC;MAC3BK,WAAW,EAAEN,IAAI,CAACC,EAAE,CAAC,CAAC;MACtBM,gBAAgB,EAAEP,IAAI,CAACC,EAAE,CAAC,CAAC;MAC3BO,WAAW,EAAER,IAAI,CAACC,EAAE,CAAC,CAAC;MACtBQ,oBAAoB,EAAET,IAAI,CAACC,EAAE,CAAC;IAClC,CAAC;IAED,IAAMS,OAA8C,GAAG,SAAjDA,OAA8CA,CAAAC,IAAA;MAAA,IAAKC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;MAAA,oBAC7DnB,IAAA,CAACH,kBAAkB,CAACuB,QAAQ;QAACC,KAAK,EAAElB,eAAgB;QAAAgB,QAAA,EAC/CA;MAAQ,CACgB,CAAC;IAAA,CACjC;IAED,IAAAG,WAAA,GAAiB1B,UAAU,CAAC;QAAA,OAAME,cAAc,CAAC,CAAC;MAAA,GAAE;QAACmB,OAAO,EAAPA;MAAO,CAAC,CAAC;MAAvDM,MAAM,GAAAD,WAAA,CAANC,MAAM;IAEbC,MAAM,CAACD,MAAM,CAACE,OAAO,CAAC,CAACC,IAAI,CAACvB,eAAe,CAAC;EAChD,CAAC,CAAC;EAEFD,EAAE,CAAC,wDAAwD,EAAE,YAAM;IAC/D,IAAMyB,UAAU,GAAGpB,IAAI,CAACqB,KAAK,CAACC,OAAO,EAAE,OAAO,CAAC,CAACC,kBAAkB,CAAC,CAAC;IAEpEN,MAAM,CAAC,YAAM;MACT5B,UAAU,CAAC;QAAA,OAAME,cAAc,CAAC,CAAC;MAAA,EAAC;IACtC,CAAC,CAAC,CAACiC,OAAO,CACN,kFACJ,CAAC;IAEDJ,UAAU,CAACK,WAAW,CAAC,CAAC;EAC5B,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { render, screen } from '@testing-library/react';
|
|
4
|
-
import { useDataManager } from '../DataManagerContext';
|
|
5
|
-
import { withDataManager } from '../withDataManager';
|
|
6
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
-
jest.mock('../DataManagerContext', function () {
|
|
8
|
-
var originalModule = jest.requireActual('../DataManagerContext');
|
|
9
|
-
return _objectSpread(_objectSpread({}, originalModule), {}, {
|
|
10
|
-
useDataManager: jest.fn()
|
|
11
|
-
});
|
|
12
|
-
});
|
|
13
|
-
describe('withDataManager', function () {
|
|
14
|
-
var mockDataManager = {
|
|
15
|
-
normalizer: undefined,
|
|
16
|
-
optimisticUpdate: jest.fn(),
|
|
17
|
-
invalidateData: jest.fn(),
|
|
18
|
-
invalidateTag: jest.fn(),
|
|
19
|
-
invalidateTags: jest.fn(),
|
|
20
|
-
invalidateSource: jest.fn(),
|
|
21
|
-
resetSource: jest.fn(),
|
|
22
|
-
invalidateParams: jest.fn(),
|
|
23
|
-
resetParams: jest.fn(),
|
|
24
|
-
invalidateSourceTags: jest.fn()
|
|
25
|
-
};
|
|
26
|
-
beforeEach(function () {
|
|
27
|
-
jest.clearAllMocks();
|
|
28
|
-
useDataManager.mockReturnValue(mockDataManager);
|
|
29
|
-
});
|
|
30
|
-
it('should pass dataManager to wrapped component', function () {
|
|
31
|
-
var TestComponent = function TestComponent(_ref) {
|
|
32
|
-
var dataManager = _ref.dataManager;
|
|
33
|
-
return /*#__PURE__*/_jsx("div", {
|
|
34
|
-
"data-testid": "test-component",
|
|
35
|
-
children: dataManager ? 'DataManager provided' : 'No DataManager'
|
|
36
|
-
});
|
|
37
|
-
};
|
|
38
|
-
var WrappedComponent = withDataManager(TestComponent);
|
|
39
|
-
render(/*#__PURE__*/_jsx(WrappedComponent, {}));
|
|
40
|
-
expect(screen.getByTestId('test-component')).toHaveTextContent('DataManager provided');
|
|
41
|
-
});
|
|
42
|
-
it('should pass through additional props', function () {
|
|
43
|
-
var TestComponent = function TestComponent(_ref2) {
|
|
44
|
-
var dataManager = _ref2.dataManager,
|
|
45
|
-
testProp = _ref2.testProp;
|
|
46
|
-
return /*#__PURE__*/_jsx("div", {
|
|
47
|
-
"data-testid": "test-component",
|
|
48
|
-
children: dataManager ? "DataManager provided, testProp: ".concat(testProp) : 'No DataManager'
|
|
49
|
-
});
|
|
50
|
-
};
|
|
51
|
-
var WrappedComponent = withDataManager(TestComponent);
|
|
52
|
-
render(/*#__PURE__*/_jsx(WrappedComponent, {
|
|
53
|
-
testProp: "test value"
|
|
54
|
-
}));
|
|
55
|
-
expect(screen.getByTestId('test-component')).toHaveTextContent('DataManager provided, testProp: test value');
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
// #sourceMappingURL=withDataManager.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","render","screen","useDataManager","withDataManager","jsx","_jsx","jest","mock","originalModule","requireActual","_objectSpread","fn","describe","mockDataManager","normalizer","undefined","optimisticUpdate","invalidateData","invalidateTag","invalidateTags","invalidateSource","resetSource","invalidateParams","resetParams","invalidateSourceTags","beforeEach","clearAllMocks","mockReturnValue","it","TestComponent","_ref","dataManager","children","WrappedComponent","expect","getByTestId","toHaveTextContent","_ref2","testProp","concat"],"sources":["withDataManager.test.tsx"],"sourcesContent":["import React from 'react';\n\nimport {render, screen} from '@testing-library/react';\n\nimport type {DataManager} from '../../core';\nimport {useDataManager} from '../DataManagerContext';\nimport type {WithDataManagerProps} from '../withDataManager';\nimport {withDataManager} from '../withDataManager';\n\njest.mock('../DataManagerContext', () => {\n const originalModule = jest.requireActual('../DataManagerContext');\n return {\n ...originalModule,\n useDataManager: jest.fn(),\n };\n});\n\ndescribe('withDataManager', () => {\n const mockDataManager: DataManager = {\n normalizer: undefined,\n optimisticUpdate: jest.fn(),\n invalidateData: jest.fn(),\n invalidateTag: jest.fn(),\n invalidateTags: jest.fn(),\n invalidateSource: jest.fn(),\n resetSource: jest.fn(),\n invalidateParams: jest.fn(),\n resetParams: jest.fn(),\n invalidateSourceTags: jest.fn(),\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n\n (useDataManager as jest.Mock).mockReturnValue(mockDataManager);\n });\n\n it('should pass dataManager to wrapped component', () => {\n const TestComponent: React.FC<WithDataManagerProps> = ({dataManager}) => (\n <div data-testid=\"test-component\">\n {dataManager ? 'DataManager provided' : 'No DataManager'}\n </div>\n );\n const WrappedComponent = withDataManager(TestComponent);\n\n render(<WrappedComponent />);\n\n expect(screen.getByTestId('test-component')).toHaveTextContent('DataManager provided');\n });\n\n it('should pass through additional props', () => {\n const TestComponent: React.FC<WithDataManagerProps & {testProp: string}> = ({\n dataManager,\n testProp,\n }) => (\n <div data-testid=\"test-component\">\n {dataManager ? `DataManager provided, testProp: ${testProp}` : 'No DataManager'}\n </div>\n );\n const WrappedComponent = withDataManager(TestComponent);\n\n render(<WrappedComponent testProp=\"test value\" />);\n\n expect(screen.getByTestId('test-component')).toHaveTextContent(\n 'DataManager provided, testProp: test value',\n );\n });\n});\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAAQC,MAAM,EAAEC,MAAM,QAAO,wBAAwB;AAGrD,SAAQC,cAAc,QAAO,uBAAuB;AAEpD,SAAQC,eAAe,QAAO,oBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEnDC,IAAI,CAACC,IAAI,CAAC,uBAAuB,EAAE,YAAM;EACrC,IAAMC,cAAc,GAAGF,IAAI,CAACG,aAAa,CAAC,uBAAuB,CAAC;EAClE,OAAAC,aAAA,CAAAA,aAAA,KACOF,cAAc;IACjBN,cAAc,EAAEI,IAAI,CAACK,EAAE,CAAC;EAAC;AAEjC,CAAC,CAAC;AAEFC,QAAQ,CAAC,iBAAiB,EAAE,YAAM;EAC9B,IAAMC,eAA4B,GAAG;IACjCC,UAAU,EAAEC,SAAS;IACrBC,gBAAgB,EAAEV,IAAI,CAACK,EAAE,CAAC,CAAC;IAC3BM,cAAc,EAAEX,IAAI,CAACK,EAAE,CAAC,CAAC;IACzBO,aAAa,EAAEZ,IAAI,CAACK,EAAE,CAAC,CAAC;IACxBQ,cAAc,EAAEb,IAAI,CAACK,EAAE,CAAC,CAAC;IACzBS,gBAAgB,EAAEd,IAAI,CAACK,EAAE,CAAC,CAAC;IAC3BU,WAAW,EAAEf,IAAI,CAACK,EAAE,CAAC,CAAC;IACtBW,gBAAgB,EAAEhB,IAAI,CAACK,EAAE,CAAC,CAAC;IAC3BY,WAAW,EAAEjB,IAAI,CAACK,EAAE,CAAC,CAAC;IACtBa,oBAAoB,EAAElB,IAAI,CAACK,EAAE,CAAC;EAClC,CAAC;EAEDc,UAAU,CAAC,YAAM;IACbnB,IAAI,CAACoB,aAAa,CAAC,CAAC;IAEnBxB,cAAc,CAAeyB,eAAe,CAACd,eAAe,CAAC;EAClE,CAAC,CAAC;EAEFe,EAAE,CAAC,8CAA8C,EAAE,YAAM;IACrD,IAAMC,aAA6C,GAAG,SAAhDA,aAA6CA,CAAAC,IAAA;MAAA,IAAKC,WAAW,GAAAD,IAAA,CAAXC,WAAW;MAAA,oBAC/D1B,IAAA;QAAK,eAAY,gBAAgB;QAAA2B,QAAA,EAC5BD,WAAW,GAAG,sBAAsB,GAAG;MAAgB,CACvD,CAAC;IAAA,CACT;IACD,IAAME,gBAAgB,GAAG9B,eAAe,CAAC0B,aAAa,CAAC;IAEvD7B,MAAM,cAACK,IAAA,CAAC4B,gBAAgB,IAAE,CAAC,CAAC;IAE5BC,MAAM,CAACjC,MAAM,CAACkC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAACC,iBAAiB,CAAC,sBAAsB,CAAC;EAC1F,CAAC,CAAC;EAEFR,EAAE,CAAC,sCAAsC,EAAE,YAAM;IAC7C,IAAMC,aAAkE,GAAG,SAArEA,aAAkEA,CAAAQ,KAAA;MAAA,IACpEN,WAAW,GAAAM,KAAA,CAAXN,WAAW;QACXO,QAAQ,GAAAD,KAAA,CAARC,QAAQ;MAAA,oBAERjC,IAAA;QAAK,eAAY,gBAAgB;QAAA2B,QAAA,EAC5BD,WAAW,sCAAAQ,MAAA,CAAsCD,QAAQ,IAAK;MAAgB,CAC9E,CAAC;IAAA,CACT;IACD,IAAML,gBAAgB,GAAG9B,eAAe,CAAC0B,aAAa,CAAC;IAEvD7B,MAAM,cAACK,IAAA,CAAC4B,gBAAgB;MAACK,QAAQ,EAAC;IAAY,CAAE,CAAC,CAAC;IAElDJ,MAAM,CAACjC,MAAM,CAACkC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAACC,iBAAiB,CAC1D,4CACJ,CAAC;EACL,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { fireEvent, render, screen } from '@testing-library/react';
|
|
4
|
-
import { DataInfiniteLoader } from '../DataInfiniteLoader';
|
|
5
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
-
var MockLoadingView = function MockLoadingView() {
|
|
7
|
-
return /*#__PURE__*/_jsx("div", {
|
|
8
|
-
"data-testid": "loading-view",
|
|
9
|
-
children: "Loading..."
|
|
10
|
-
});
|
|
11
|
-
};
|
|
12
|
-
var MockErrorView = function MockErrorView(_ref) {
|
|
13
|
-
var error = _ref.error,
|
|
14
|
-
action = _ref.action;
|
|
15
|
-
return /*#__PURE__*/_jsxs("div", {
|
|
16
|
-
"data-testid": "error-view",
|
|
17
|
-
children: [error ? "Error: ".concat(error.message) : 'No error', action ? /*#__PURE__*/_jsx("button", {
|
|
18
|
-
"data-testid": "error-action",
|
|
19
|
-
onClick: action.handler,
|
|
20
|
-
children: action.children || 'Retry'
|
|
21
|
-
}) : null]
|
|
22
|
-
});
|
|
23
|
-
};
|
|
24
|
-
var MockMoreView = function MockMoreView(_ref2) {
|
|
25
|
-
var isLoading = _ref2.isLoading,
|
|
26
|
-
onClick = _ref2.onClick;
|
|
27
|
-
return /*#__PURE__*/_jsx("div", {
|
|
28
|
-
"data-testid": "more-view",
|
|
29
|
-
children: isLoading ? /*#__PURE__*/_jsx("span", {
|
|
30
|
-
"data-testid": "more-view-loading",
|
|
31
|
-
children: "Loading more..."
|
|
32
|
-
}) : /*#__PURE__*/_jsx("button", {
|
|
33
|
-
"data-testid": "more-view-button",
|
|
34
|
-
onClick: onClick,
|
|
35
|
-
children: "Load more"
|
|
36
|
-
})
|
|
37
|
-
});
|
|
38
|
-
};
|
|
39
|
-
describe('DataInfiniteLoader', function () {
|
|
40
|
-
var renderDataInfiniteLoader = function renderDataInfiniteLoader() {
|
|
41
|
-
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
42
|
-
var fetchNextPage = jest.fn();
|
|
43
|
-
var defaultProps = {
|
|
44
|
-
status: 'success',
|
|
45
|
-
error: null,
|
|
46
|
-
hasNextPage: true,
|
|
47
|
-
fetchNextPage: fetchNextPage,
|
|
48
|
-
isFetchingNextPage: false,
|
|
49
|
-
LoadingView: MockLoadingView,
|
|
50
|
-
ErrorView: MockErrorView,
|
|
51
|
-
MoreView: MockMoreView,
|
|
52
|
-
children: /*#__PURE__*/_jsx("div", {
|
|
53
|
-
"data-testid": "content",
|
|
54
|
-
children: "Content"
|
|
55
|
-
})
|
|
56
|
-
};
|
|
57
|
-
return _objectSpread(_objectSpread({}, render(/*#__PURE__*/_jsx(DataInfiniteLoader, _objectSpread(_objectSpread({}, defaultProps), props)))), {}, {
|
|
58
|
-
fetchNextPage: fetchNextPage
|
|
59
|
-
});
|
|
60
|
-
};
|
|
61
|
-
it('should render children and MoreView when status is success and hasNextPage is true', function () {
|
|
62
|
-
renderDataInfiniteLoader({
|
|
63
|
-
status: 'success',
|
|
64
|
-
hasNextPage: true
|
|
65
|
-
});
|
|
66
|
-
expect(screen.getByTestId('content')).toBeInTheDocument();
|
|
67
|
-
expect(screen.getByTestId('more-view')).toBeInTheDocument();
|
|
68
|
-
expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();
|
|
69
|
-
expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();
|
|
70
|
-
});
|
|
71
|
-
it('should render only children when status is success and hasNextPage is false', function () {
|
|
72
|
-
renderDataInfiniteLoader({
|
|
73
|
-
status: 'success',
|
|
74
|
-
hasNextPage: false
|
|
75
|
-
});
|
|
76
|
-
expect(screen.getByTestId('content')).toBeInTheDocument();
|
|
77
|
-
expect(screen.queryByTestId('more-view')).not.toBeInTheDocument();
|
|
78
|
-
expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();
|
|
79
|
-
expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();
|
|
80
|
-
});
|
|
81
|
-
it('should render LoadingView when status is loading', function () {
|
|
82
|
-
renderDataInfiniteLoader({
|
|
83
|
-
status: 'loading'
|
|
84
|
-
});
|
|
85
|
-
expect(screen.getByTestId('loading-view')).toBeInTheDocument();
|
|
86
|
-
expect(screen.queryByTestId('content')).not.toBeInTheDocument();
|
|
87
|
-
expect(screen.queryByTestId('more-view')).not.toBeInTheDocument();
|
|
88
|
-
expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();
|
|
89
|
-
});
|
|
90
|
-
it('should render ErrorView when status is error', function () {
|
|
91
|
-
var error = new Error('Test error');
|
|
92
|
-
renderDataInfiniteLoader({
|
|
93
|
-
status: 'error',
|
|
94
|
-
error: error
|
|
95
|
-
});
|
|
96
|
-
expect(screen.getByTestId('error-view')).toBeInTheDocument();
|
|
97
|
-
expect(screen.queryByTestId('content')).not.toBeInTheDocument();
|
|
98
|
-
expect(screen.queryByTestId('more-view')).not.toBeInTheDocument();
|
|
99
|
-
expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();
|
|
100
|
-
expect(screen.getByText(/Test error/)).toBeInTheDocument();
|
|
101
|
-
});
|
|
102
|
-
it('should call fetchNextPage when clicking on load more button', function () {
|
|
103
|
-
var _renderDataInfiniteLo = renderDataInfiniteLoader({
|
|
104
|
-
status: 'success',
|
|
105
|
-
hasNextPage: true,
|
|
106
|
-
isFetchingNextPage: false
|
|
107
|
-
}),
|
|
108
|
-
fetchNextPage = _renderDataInfiniteLo.fetchNextPage;
|
|
109
|
-
fireEvent.click(screen.getByTestId('more-view-button'));
|
|
110
|
-
expect(fetchNextPage).toHaveBeenCalledTimes(1);
|
|
111
|
-
});
|
|
112
|
-
it('should show loading state in MoreView when isFetchingNextPage is true', function () {
|
|
113
|
-
renderDataInfiniteLoader({
|
|
114
|
-
status: 'success',
|
|
115
|
-
hasNextPage: true,
|
|
116
|
-
isFetchingNextPage: true
|
|
117
|
-
});
|
|
118
|
-
expect(screen.getByTestId('more-view-loading')).toBeInTheDocument();
|
|
119
|
-
expect(screen.queryByTestId('more-view-button')).not.toBeInTheDocument();
|
|
120
|
-
});
|
|
121
|
-
it('should pass errorAction to ErrorView', function () {
|
|
122
|
-
var error = new Error('Test error');
|
|
123
|
-
var errorAction = jest.fn();
|
|
124
|
-
renderDataInfiniteLoader({
|
|
125
|
-
status: 'error',
|
|
126
|
-
error: error,
|
|
127
|
-
errorAction: errorAction
|
|
128
|
-
});
|
|
129
|
-
expect(screen.getByTestId('error-action')).toBeInTheDocument();
|
|
130
|
-
});
|
|
131
|
-
it('should pass errorAction with custom children to ErrorView', function () {
|
|
132
|
-
var error = new Error('Test error');
|
|
133
|
-
var errorAction = {
|
|
134
|
-
handler: jest.fn(),
|
|
135
|
-
children: 'Custom action'
|
|
136
|
-
};
|
|
137
|
-
renderDataInfiniteLoader({
|
|
138
|
-
status: 'error',
|
|
139
|
-
error: error,
|
|
140
|
-
errorAction: errorAction
|
|
141
|
-
});
|
|
142
|
-
expect(screen.getByText('Custom action')).toBeInTheDocument();
|
|
143
|
-
});
|
|
144
|
-
it('should pass loadingViewProps to LoadingView', function () {
|
|
145
|
-
var LoadingView = jest.fn(MockLoadingView);
|
|
146
|
-
var loadingViewProps = {
|
|
147
|
-
customProp: 'test'
|
|
148
|
-
};
|
|
149
|
-
renderDataInfiniteLoader({
|
|
150
|
-
status: 'loading',
|
|
151
|
-
LoadingView: LoadingView,
|
|
152
|
-
loadingViewProps: loadingViewProps
|
|
153
|
-
});
|
|
154
|
-
expect(LoadingView).toHaveBeenCalledWith(expect.objectContaining(loadingViewProps), undefined);
|
|
155
|
-
});
|
|
156
|
-
it('should pass errorViewProps to ErrorView', function () {
|
|
157
|
-
var ErrorView = jest.fn(MockErrorView);
|
|
158
|
-
var errorViewProps = {
|
|
159
|
-
customProp: 'test'
|
|
160
|
-
};
|
|
161
|
-
var error = new Error('Test error');
|
|
162
|
-
renderDataInfiniteLoader({
|
|
163
|
-
status: 'error',
|
|
164
|
-
error: error,
|
|
165
|
-
ErrorView: ErrorView,
|
|
166
|
-
errorViewProps: errorViewProps
|
|
167
|
-
});
|
|
168
|
-
expect(ErrorView).toHaveBeenCalledWith(expect.objectContaining(errorViewProps), undefined);
|
|
169
|
-
});
|
|
170
|
-
it('should pass moreViewProps to MoreView', function () {
|
|
171
|
-
var MoreView = jest.fn(MockMoreView);
|
|
172
|
-
var moreViewProps = {
|
|
173
|
-
customProp: 'test'
|
|
174
|
-
};
|
|
175
|
-
renderDataInfiniteLoader({
|
|
176
|
-
status: 'success',
|
|
177
|
-
hasNextPage: true,
|
|
178
|
-
MoreView: MoreView,
|
|
179
|
-
moreViewProps: moreViewProps
|
|
180
|
-
});
|
|
181
|
-
expect(MoreView).toHaveBeenCalledWith(expect.objectContaining(moreViewProps), undefined);
|
|
182
|
-
});
|
|
183
|
-
});
|
|
184
|
-
// #sourceMappingURL=DataInfiniteLoader.test.js.map
|
package/build/esm/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","fireEvent","render","screen","DataInfiniteLoader","jsx","_jsx","jsxs","_jsxs","MockLoadingView","children","MockErrorView","_ref","error","action","concat","message","onClick","handler","MockMoreView","_ref2","isLoading","describe","renderDataInfiniteLoader","props","arguments","length","undefined","fetchNextPage","jest","fn","defaultProps","status","hasNextPage","isFetchingNextPage","LoadingView","ErrorView","MoreView","_objectSpread","it","expect","getByTestId","toBeInTheDocument","queryByTestId","not","Error","getByText","_renderDataInfiniteLo","click","toHaveBeenCalledTimes","errorAction","loadingViewProps","customProp","toHaveBeenCalledWith","objectContaining","errorViewProps","moreViewProps"],"sources":["DataInfiniteLoader.test.tsx"],"sourcesContent":["import React from 'react';\n\nimport {fireEvent, render, screen} from '@testing-library/react';\n\nimport type {ErrorViewProps} from '../../types';\nimport {DataInfiniteLoader} from '../DataInfiniteLoader';\nimport type {DataInfiniteLoaderProps, MoreViewProps} from '../types';\n\nconst MockLoadingView = () => <div data-testid=\"loading-view\">Loading...</div>;\nconst MockErrorView: React.FC<ErrorViewProps<Error>> = ({error, action}) => (\n <div data-testid=\"error-view\">\n {error ? `Error: ${error.message}` : 'No error'}\n {action ? (\n <button data-testid=\"error-action\" onClick={action.handler}>\n {action.children || 'Retry'}\n </button>\n ) : null}\n </div>\n);\nconst MockMoreView: React.FC<MoreViewProps> = ({isLoading, onClick}) => (\n <div data-testid=\"more-view\">\n {isLoading ? (\n <span data-testid=\"more-view-loading\">Loading more...</span>\n ) : (\n <button data-testid=\"more-view-button\" onClick={onClick}>\n Load more\n </button>\n )}\n </div>\n);\n\ndescribe('DataInfiniteLoader', () => {\n const renderDataInfiniteLoader = (props: Partial<DataInfiniteLoaderProps<Error>> = {}) => {\n const fetchNextPage = jest.fn();\n const defaultProps: DataInfiniteLoaderProps<Error> = {\n status: 'success',\n error: null,\n hasNextPage: true,\n fetchNextPage,\n isFetchingNextPage: false,\n LoadingView: MockLoadingView,\n ErrorView: MockErrorView,\n MoreView: MockMoreView,\n children: <div data-testid=\"content\">Content</div>,\n };\n\n return {\n ...render(<DataInfiniteLoader {...defaultProps} {...props} />),\n fetchNextPage,\n };\n };\n\n it('should render children and MoreView when status is success and hasNextPage is true', () => {\n renderDataInfiniteLoader({status: 'success', hasNextPage: true});\n expect(screen.getByTestId('content')).toBeInTheDocument();\n expect(screen.getByTestId('more-view')).toBeInTheDocument();\n expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();\n expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();\n });\n\n it('should render only children when status is success and hasNextPage is false', () => {\n renderDataInfiniteLoader({status: 'success', hasNextPage: false});\n expect(screen.getByTestId('content')).toBeInTheDocument();\n expect(screen.queryByTestId('more-view')).not.toBeInTheDocument();\n expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();\n expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();\n });\n\n it('should render LoadingView when status is loading', () => {\n renderDataInfiniteLoader({status: 'loading'});\n expect(screen.getByTestId('loading-view')).toBeInTheDocument();\n expect(screen.queryByTestId('content')).not.toBeInTheDocument();\n expect(screen.queryByTestId('more-view')).not.toBeInTheDocument();\n expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();\n });\n\n it('should render ErrorView when status is error', () => {\n const error = new Error('Test error');\n renderDataInfiniteLoader({status: 'error', error});\n expect(screen.getByTestId('error-view')).toBeInTheDocument();\n expect(screen.queryByTestId('content')).not.toBeInTheDocument();\n expect(screen.queryByTestId('more-view')).not.toBeInTheDocument();\n expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();\n expect(screen.getByText(/Test error/)).toBeInTheDocument();\n });\n\n it('should call fetchNextPage when clicking on load more button', () => {\n const {fetchNextPage} = renderDataInfiniteLoader({\n status: 'success',\n hasNextPage: true,\n isFetchingNextPage: false,\n });\n fireEvent.click(screen.getByTestId('more-view-button'));\n expect(fetchNextPage).toHaveBeenCalledTimes(1);\n });\n\n it('should show loading state in MoreView when isFetchingNextPage is true', () => {\n renderDataInfiniteLoader({\n status: 'success',\n hasNextPage: true,\n isFetchingNextPage: true,\n });\n expect(screen.getByTestId('more-view-loading')).toBeInTheDocument();\n expect(screen.queryByTestId('more-view-button')).not.toBeInTheDocument();\n });\n\n it('should pass errorAction to ErrorView', () => {\n const error = new Error('Test error');\n const errorAction = jest.fn();\n renderDataInfiniteLoader({\n status: 'error',\n error,\n errorAction,\n });\n expect(screen.getByTestId('error-action')).toBeInTheDocument();\n });\n\n it('should pass errorAction with custom children to ErrorView', () => {\n const error = new Error('Test error');\n const errorAction = {\n handler: jest.fn(),\n children: 'Custom action',\n };\n renderDataInfiniteLoader({\n status: 'error',\n error,\n errorAction,\n });\n expect(screen.getByText('Custom action')).toBeInTheDocument();\n });\n\n it('should pass loadingViewProps to LoadingView', () => {\n const LoadingView = jest.fn(MockLoadingView);\n const loadingViewProps = {customProp: 'test'};\n renderDataInfiniteLoader({\n status: 'loading',\n LoadingView,\n loadingViewProps,\n });\n expect(LoadingView).toHaveBeenCalledWith(\n expect.objectContaining(loadingViewProps),\n undefined,\n );\n });\n\n it('should pass errorViewProps to ErrorView', () => {\n const ErrorView = jest.fn(MockErrorView);\n const errorViewProps = {customProp: 'test'};\n const error = new Error('Test error');\n renderDataInfiniteLoader({\n status: 'error',\n error,\n ErrorView,\n errorViewProps,\n });\n expect(ErrorView).toHaveBeenCalledWith(expect.objectContaining(errorViewProps), undefined);\n });\n\n it('should pass moreViewProps to MoreView', () => {\n const MoreView = jest.fn(MockMoreView);\n const moreViewProps = {customProp: 'test'};\n renderDataInfiniteLoader({\n status: 'success',\n hasNextPage: true,\n MoreView,\n moreViewProps,\n });\n expect(MoreView).toHaveBeenCalledWith(expect.objectContaining(moreViewProps), undefined);\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { render, screen } from '@testing-library/react';
|
|
4
|
-
import { DataLoader } from '../DataLoader';
|
|
5
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
-
var MockLoadingView = function MockLoadingView() {
|
|
7
|
-
return /*#__PURE__*/_jsx("div", {
|
|
8
|
-
"data-testid": "loading-view",
|
|
9
|
-
children: "Loading..."
|
|
10
|
-
});
|
|
11
|
-
};
|
|
12
|
-
var MockErrorView = function MockErrorView(_ref) {
|
|
13
|
-
var error = _ref.error,
|
|
14
|
-
action = _ref.action;
|
|
15
|
-
return /*#__PURE__*/_jsxs("div", {
|
|
16
|
-
"data-testid": "error-view",
|
|
17
|
-
children: [error ? "Error: ".concat(error.message) : 'No error', action ? /*#__PURE__*/_jsx("button", {
|
|
18
|
-
"data-testid": "error-action",
|
|
19
|
-
onClick: action.handler,
|
|
20
|
-
children: action.children || 'Retry'
|
|
21
|
-
}) : null]
|
|
22
|
-
});
|
|
23
|
-
};
|
|
24
|
-
describe('DataLoader', function () {
|
|
25
|
-
var renderDataLoader = function renderDataLoader() {
|
|
26
|
-
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
27
|
-
var defaultProps = {
|
|
28
|
-
status: 'success',
|
|
29
|
-
error: null,
|
|
30
|
-
LoadingView: MockLoadingView,
|
|
31
|
-
ErrorView: MockErrorView,
|
|
32
|
-
children: /*#__PURE__*/_jsx("div", {
|
|
33
|
-
"data-testid": "content",
|
|
34
|
-
children: "Content"
|
|
35
|
-
})
|
|
36
|
-
};
|
|
37
|
-
return render(/*#__PURE__*/_jsx(DataLoader, _objectSpread(_objectSpread({}, defaultProps), props)));
|
|
38
|
-
};
|
|
39
|
-
it('should render children when status is success', function () {
|
|
40
|
-
renderDataLoader({
|
|
41
|
-
status: 'success'
|
|
42
|
-
});
|
|
43
|
-
expect(screen.getByTestId('content')).toBeInTheDocument();
|
|
44
|
-
expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();
|
|
45
|
-
expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();
|
|
46
|
-
});
|
|
47
|
-
it('should render LoadingView when status is loading', function () {
|
|
48
|
-
renderDataLoader({
|
|
49
|
-
status: 'loading'
|
|
50
|
-
});
|
|
51
|
-
expect(screen.getByTestId('loading-view')).toBeInTheDocument();
|
|
52
|
-
expect(screen.queryByTestId('content')).not.toBeInTheDocument();
|
|
53
|
-
expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();
|
|
54
|
-
});
|
|
55
|
-
it('should render ErrorView when status is error', function () {
|
|
56
|
-
var error = new Error('Test error');
|
|
57
|
-
renderDataLoader({
|
|
58
|
-
status: 'error',
|
|
59
|
-
error: error
|
|
60
|
-
});
|
|
61
|
-
expect(screen.getByTestId('error-view')).toBeInTheDocument();
|
|
62
|
-
expect(screen.queryByTestId('content')).not.toBeInTheDocument();
|
|
63
|
-
expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();
|
|
64
|
-
expect(screen.getByText(/Test error/)).toBeInTheDocument();
|
|
65
|
-
});
|
|
66
|
-
it('should pass errorAction to ErrorView', function () {
|
|
67
|
-
var error = new Error('Test error');
|
|
68
|
-
var errorAction = jest.fn();
|
|
69
|
-
renderDataLoader({
|
|
70
|
-
status: 'error',
|
|
71
|
-
error: error,
|
|
72
|
-
errorAction: errorAction
|
|
73
|
-
});
|
|
74
|
-
expect(screen.getByTestId('error-action')).toBeInTheDocument();
|
|
75
|
-
});
|
|
76
|
-
it('should pass errorAction with custom children to ErrorView', function () {
|
|
77
|
-
var error = new Error('Test error');
|
|
78
|
-
var errorAction = {
|
|
79
|
-
handler: jest.fn(),
|
|
80
|
-
children: 'Custom action'
|
|
81
|
-
};
|
|
82
|
-
renderDataLoader({
|
|
83
|
-
status: 'error',
|
|
84
|
-
error: error,
|
|
85
|
-
errorAction: errorAction
|
|
86
|
-
});
|
|
87
|
-
expect(screen.getByText('Custom action')).toBeInTheDocument();
|
|
88
|
-
});
|
|
89
|
-
it('should pass loadingViewProps to LoadingView', function () {
|
|
90
|
-
var LoadingView = jest.fn(MockLoadingView);
|
|
91
|
-
var loadingViewProps = {
|
|
92
|
-
customProp: 'test'
|
|
93
|
-
};
|
|
94
|
-
renderDataLoader({
|
|
95
|
-
status: 'loading',
|
|
96
|
-
LoadingView: LoadingView,
|
|
97
|
-
loadingViewProps: loadingViewProps
|
|
98
|
-
});
|
|
99
|
-
expect(LoadingView).toHaveBeenCalledWith(expect.objectContaining(loadingViewProps), undefined);
|
|
100
|
-
});
|
|
101
|
-
it('should pass errorViewProps to ErrorView', function () {
|
|
102
|
-
var ErrorView = jest.fn(MockErrorView);
|
|
103
|
-
var errorViewProps = {
|
|
104
|
-
customProp: 'test'
|
|
105
|
-
};
|
|
106
|
-
var error = new Error('Test error');
|
|
107
|
-
renderDataLoader({
|
|
108
|
-
status: 'error',
|
|
109
|
-
error: error,
|
|
110
|
-
ErrorView: ErrorView,
|
|
111
|
-
errorViewProps: errorViewProps
|
|
112
|
-
});
|
|
113
|
-
expect(ErrorView).toHaveBeenCalledWith(expect.objectContaining(errorViewProps), undefined);
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
// #sourceMappingURL=DataLoader.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","render","screen","DataLoader","jsx","_jsx","jsxs","_jsxs","MockLoadingView","children","MockErrorView","_ref","error","action","concat","message","onClick","handler","describe","renderDataLoader","props","arguments","length","undefined","defaultProps","status","LoadingView","ErrorView","_objectSpread","it","expect","getByTestId","toBeInTheDocument","queryByTestId","not","Error","getByText","errorAction","jest","fn","loadingViewProps","customProp","toHaveBeenCalledWith","objectContaining","errorViewProps"],"sources":["DataLoader.test.tsx"],"sourcesContent":["import React from 'react';\n\nimport {render, screen} from '@testing-library/react';\n\nimport type {ErrorViewProps} from '../../types';\nimport {DataLoader} from '../DataLoader';\nimport type {DataLoaderProps} from '../types';\n\nconst MockLoadingView = () => <div data-testid=\"loading-view\">Loading...</div>;\nconst MockErrorView: React.FC<ErrorViewProps<Error>> = ({error, action}) => (\n <div data-testid=\"error-view\">\n {error ? `Error: ${error.message}` : 'No error'}\n {action ? (\n <button data-testid=\"error-action\" onClick={action.handler}>\n {action.children || 'Retry'}\n </button>\n ) : null}\n </div>\n);\n\ndescribe('DataLoader', () => {\n const renderDataLoader = (props: Partial<DataLoaderProps<Error>> = {}) => {\n const defaultProps: DataLoaderProps<Error> = {\n status: 'success',\n error: null,\n LoadingView: MockLoadingView,\n ErrorView: MockErrorView,\n children: <div data-testid=\"content\">Content</div>,\n };\n\n return render(<DataLoader {...defaultProps} {...props} />);\n };\n\n it('should render children when status is success', () => {\n renderDataLoader({status: 'success'});\n expect(screen.getByTestId('content')).toBeInTheDocument();\n expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();\n expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();\n });\n\n it('should render LoadingView when status is loading', () => {\n renderDataLoader({status: 'loading'});\n expect(screen.getByTestId('loading-view')).toBeInTheDocument();\n expect(screen.queryByTestId('content')).not.toBeInTheDocument();\n expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();\n });\n\n it('should render ErrorView when status is error', () => {\n const error = new Error('Test error');\n renderDataLoader({status: 'error', error});\n expect(screen.getByTestId('error-view')).toBeInTheDocument();\n expect(screen.queryByTestId('content')).not.toBeInTheDocument();\n expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();\n expect(screen.getByText(/Test error/)).toBeInTheDocument();\n });\n\n it('should pass errorAction to ErrorView', () => {\n const error = new Error('Test error');\n const errorAction = jest.fn();\n renderDataLoader({\n status: 'error',\n error,\n errorAction,\n });\n expect(screen.getByTestId('error-action')).toBeInTheDocument();\n });\n\n it('should pass errorAction with custom children to ErrorView', () => {\n const error = new Error('Test error');\n const errorAction = {\n handler: jest.fn(),\n children: 'Custom action',\n };\n renderDataLoader({\n status: 'error',\n error,\n errorAction,\n });\n expect(screen.getByText('Custom action')).toBeInTheDocument();\n });\n\n it('should pass loadingViewProps to LoadingView', () => {\n const LoadingView = jest.fn(MockLoadingView);\n const loadingViewProps = {customProp: 'test'};\n renderDataLoader({\n status: 'loading',\n LoadingView,\n loadingViewProps,\n });\n expect(LoadingView).toHaveBeenCalledWith(\n expect.objectContaining(loadingViewProps),\n undefined,\n );\n });\n\n it('should pass errorViewProps to ErrorView', () => {\n const ErrorView = jest.fn(MockErrorView);\n const errorViewProps = {customProp: 'test'};\n const error = new Error('Test error');\n renderDataLoader({\n status: 'error',\n error,\n ErrorView,\n errorViewProps,\n });\n expect(ErrorView).toHaveBeenCalledWith(expect.objectContaining(errorViewProps), undefined);\n });\n});\n"],"mappings":"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","ignoreList":[]}
|