@gravity-ui/data-source 0.6.1 → 0.7.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/index.d.ts +2 -1
- package/build/cjs/core/index.js +7 -0
- package/build/cjs/core/index.js.map +1 -1
- package/build/cjs/core/types/DataSource.d.ts +15 -19
- package/build/cjs/core/types/DataSource.js.map +1 -1
- package/build/cjs/core/utils/__tests__/composeFullKey.test.js +34 -0
- package/build/cjs/core/utils/__tests__/composeFullKey.test.js.map +1 -0
- package/build/cjs/core/utils/__tests__/composeKey.test.js +32 -0
- package/build/cjs/core/utils/__tests__/composeKey.test.js.map +1 -0
- package/build/cjs/core/utils/__tests__/getError.test.js +31 -0
- package/build/cjs/core/utils/__tests__/getError.test.js.map +1 -0
- package/build/cjs/core/utils/__tests__/getStatus.test.js +49 -0
- package/build/cjs/core/utils/__tests__/getStatus.test.js.map +1 -0
- package/build/cjs/core/utils/__tests__/hasTag.test.js +31 -0
- package/build/cjs/core/utils/__tests__/hasTag.test.js.map +1 -0
- package/build/cjs/core/utils/__tests__/mergeStatuses.test.js +25 -0
- package/build/cjs/core/utils/__tests__/mergeStatuses.test.js.map +1 -0
- package/build/cjs/core/utils/__tests__/skipContext.test.js +70 -0
- package/build/cjs/core/utils/__tests__/skipContext.test.js.map +1 -0
- package/build/cjs/core/utils/__tests__/withCancellation.test.js +106 -0
- package/build/cjs/core/utils/__tests__/withCancellation.test.js.map +1 -0
- package/build/cjs/core/utils/__tests__/withCatch.test.js +208 -0
- package/build/cjs/core/utils/__tests__/withCatch.test.js.map +1 -0
- package/build/cjs/core/utils/withCatch.d.ts +26 -0
- package/build/cjs/core/utils/withCatch.js +37 -0
- package/build/cjs/core/utils/withCatch.js.map +1 -0
- package/build/cjs/react/__tests__/DataManagerContext.test.js +46 -0
- package/build/cjs/react/__tests__/DataManagerContext.test.js.map +1 -0
- package/build/cjs/react/__tests__/withDataManager.test.js +58 -0
- package/build/cjs/react/__tests__/withDataManager.test.js.map +1 -0
- package/build/cjs/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js +187 -0
- package/build/cjs/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js.map +1 -0
- package/build/cjs/react/components/DataLoader/__tests__/DataLoader.test.js +119 -0
- package/build/cjs/react/components/DataLoader/__tests__/DataLoader.test.js.map +1 -0
- package/build/cjs/react/withDataManager.d.ts +1 -1
- package/build/cjs/react/withDataManager.js +3 -3
- package/build/cjs/react/withDataManager.js.map +1 -1
- package/build/cjs/react-query/constants.d.ts +2 -0
- package/build/cjs/react-query/constants.js +9 -0
- package/build/cjs/react-query/constants.js.map +1 -0
- package/build/cjs/react-query/hooks/__tests__/useQueryContext.test.js +55 -0
- package/build/cjs/react-query/hooks/__tests__/useQueryContext.test.js.map +1 -0
- package/build/cjs/react-query/hooks/__tests__/useQueryData.test.js +97 -0
- package/build/cjs/react-query/hooks/__tests__/useQueryData.test.js.map +1 -0
- package/build/cjs/react-query/hooks/__tests__/useQueryResponses.test.js +77 -0
- package/build/cjs/react-query/hooks/__tests__/useQueryResponses.test.js.map +1 -0
- package/build/cjs/react-query/hooks/__tests__/useRefetchAll.test.js +79 -0
- package/build/cjs/react-query/hooks/__tests__/useRefetchAll.test.js.map +1 -0
- package/build/cjs/react-query/hooks/__tests__/useRefetchErrored.test.js +117 -0
- package/build/cjs/react-query/hooks/__tests__/useRefetchErrored.test.js.map +1 -0
- package/build/cjs/react-query/hooks/__tests__/useRefetchInterval.test.js +156 -0
- package/build/cjs/react-query/hooks/__tests__/useRefetchInterval.test.js.map +1 -0
- package/build/cjs/react-query/hooks/useRefetchInterval.d.ts +1 -1
- package/build/cjs/react-query/impl/infinite/factory.d.ts +1 -1
- package/build/cjs/react-query/impl/infinite/factory.js.map +1 -1
- package/build/cjs/react-query/impl/infinite/types.d.ts +7 -7
- package/build/cjs/react-query/impl/infinite/types.js.map +1 -1
- package/build/cjs/react-query/impl/infinite/utils.js +11 -22
- package/build/cjs/react-query/impl/infinite/utils.js.map +1 -1
- package/build/cjs/react-query/impl/plain/factory.d.ts +1 -1
- package/build/cjs/react-query/impl/plain/factory.js.map +1 -1
- package/build/cjs/react-query/impl/plain/types.d.ts +4 -4
- package/build/cjs/react-query/impl/plain/types.js.map +1 -1
- package/build/cjs/react-query/impl/plain/utils.js +12 -23
- package/build/cjs/react-query/impl/plain/utils.js.map +1 -1
- package/build/cjs/react-query/utils/__tests__/formatNullableValue.test.js +27 -0
- package/build/cjs/react-query/utils/__tests__/formatNullableValue.test.js.map +1 -0
- package/build/cjs/react-query/utils/__tests__/getProgressiveRefetch.test.js +76 -0
- package/build/cjs/react-query/utils/__tests__/getProgressiveRefetch.test.js.map +1 -0
- package/build/cjs/react-query/utils/__tests__/normalizeStatus.test.js +30 -0
- package/build/cjs/react-query/utils/__tests__/normalizeStatus.test.js.map +1 -0
- package/build/cjs/react-query/utils/__tests__/notReachable.test.js +35 -0
- package/build/cjs/react-query/utils/__tests__/notReachable.test.js.map +1 -0
- package/build/cjs/react-query/utils/__tests__/parseNullableValue.test.js +27 -0
- package/build/cjs/react-query/utils/__tests__/parseNullableValue.test.js.map +1 -0
- package/build/cjs/react-query/utils/formatNullableValue.d.ts +2 -0
- package/build/cjs/react-query/utils/formatNullableValue.js +17 -0
- package/build/cjs/react-query/utils/formatNullableValue.js.map +1 -0
- package/build/cjs/react-query/utils/getProgressiveRefetch.d.ts +2 -2
- package/build/cjs/react-query/utils/parseNullableValue.d.ts +2 -0
- package/build/cjs/react-query/utils/parseNullableValue.js +17 -0
- package/build/cjs/react-query/utils/parseNullableValue.js.map +1 -0
- package/build/cjs/setupTests.d.ts +1 -0
- package/build/cjs/setupTests.js +4 -0
- package/build/cjs/setupTests.js.map +1 -0
- package/build/esm/core/index.d.ts +2 -1
- package/build/esm/core/index.js +1 -0
- package/build/esm/core/index.js.map +1 -1
- package/build/esm/core/types/DataSource.d.ts +15 -19
- package/build/esm/core/types/DataSource.js.map +1 -1
- package/build/esm/core/utils/__tests__/composeFullKey.test.js +32 -0
- package/build/esm/core/utils/__tests__/composeFullKey.test.js.map +1 -0
- package/build/esm/core/utils/__tests__/composeKey.test.js +30 -0
- package/build/esm/core/utils/__tests__/composeKey.test.js.map +1 -0
- package/build/esm/core/utils/__tests__/getError.test.js +29 -0
- package/build/esm/core/utils/__tests__/getError.test.js.map +1 -0
- package/build/esm/core/utils/__tests__/getStatus.test.js +47 -0
- package/build/esm/core/utils/__tests__/getStatus.test.js.map +1 -0
- package/build/esm/core/utils/__tests__/hasTag.test.js +29 -0
- package/build/esm/core/utils/__tests__/hasTag.test.js.map +1 -0
- package/build/esm/core/utils/__tests__/mergeStatuses.test.js +23 -0
- package/build/esm/core/utils/__tests__/mergeStatuses.test.js.map +1 -0
- package/build/esm/core/utils/__tests__/skipContext.test.js +67 -0
- package/build/esm/core/utils/__tests__/skipContext.test.js.map +1 -0
- package/build/esm/core/utils/__tests__/withCancellation.test.js +104 -0
- package/build/esm/core/utils/__tests__/withCancellation.test.js.map +1 -0
- package/build/esm/core/utils/__tests__/withCatch.test.js +205 -0
- package/build/esm/core/utils/__tests__/withCatch.test.js.map +1 -0
- package/build/esm/core/utils/withCatch.d.ts +26 -0
- package/build/esm/core/utils/withCatch.js +31 -0
- package/build/esm/core/utils/withCatch.js.map +1 -0
- package/build/esm/react/__tests__/DataManagerContext.test.js +43 -0
- package/build/esm/react/__tests__/DataManagerContext.test.js.map +1 -0
- package/build/esm/react/__tests__/withDataManager.test.js +55 -0
- package/build/esm/react/__tests__/withDataManager.test.js.map +1 -0
- package/build/esm/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js +184 -0
- package/build/esm/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js.map +1 -0
- package/build/esm/react/components/DataLoader/__tests__/DataLoader.test.js +116 -0
- package/build/esm/react/components/DataLoader/__tests__/DataLoader.test.js.map +1 -0
- package/build/esm/react/withDataManager.d.ts +1 -1
- package/build/esm/react/withDataManager.js +3 -3
- package/build/esm/react/withDataManager.js.map +1 -1
- package/build/esm/react-query/constants.d.ts +2 -0
- package/build/esm/react-query/constants.js +3 -0
- package/build/esm/react-query/constants.js.map +1 -0
- package/build/esm/react-query/hooks/__tests__/useQueryContext.test.js +52 -0
- package/build/esm/react-query/hooks/__tests__/useQueryContext.test.js.map +1 -0
- package/build/esm/react-query/hooks/__tests__/useQueryData.test.js +95 -0
- package/build/esm/react-query/hooks/__tests__/useQueryData.test.js.map +1 -0
- package/build/esm/react-query/hooks/__tests__/useQueryResponses.test.js +74 -0
- package/build/esm/react-query/hooks/__tests__/useQueryResponses.test.js.map +1 -0
- package/build/esm/react-query/hooks/__tests__/useRefetchAll.test.js +77 -0
- package/build/esm/react-query/hooks/__tests__/useRefetchAll.test.js.map +1 -0
- package/build/esm/react-query/hooks/__tests__/useRefetchErrored.test.js +115 -0
- package/build/esm/react-query/hooks/__tests__/useRefetchErrored.test.js.map +1 -0
- package/build/esm/react-query/hooks/__tests__/useRefetchInterval.test.js +154 -0
- package/build/esm/react-query/hooks/__tests__/useRefetchInterval.test.js.map +1 -0
- package/build/esm/react-query/hooks/useRefetchInterval.d.ts +1 -1
- package/build/esm/react-query/impl/infinite/factory.d.ts +1 -1
- package/build/esm/react-query/impl/infinite/factory.js.map +1 -1
- package/build/esm/react-query/impl/infinite/types.d.ts +7 -7
- package/build/esm/react-query/impl/infinite/types.js.map +1 -1
- package/build/esm/react-query/impl/infinite/utils.js +9 -20
- package/build/esm/react-query/impl/infinite/utils.js.map +1 -1
- package/build/esm/react-query/impl/plain/factory.d.ts +1 -1
- package/build/esm/react-query/impl/plain/factory.js.map +1 -1
- package/build/esm/react-query/impl/plain/types.d.ts +4 -4
- package/build/esm/react-query/impl/plain/types.js.map +1 -1
- package/build/esm/react-query/impl/plain/utils.js +10 -21
- package/build/esm/react-query/impl/plain/utils.js.map +1 -1
- package/build/esm/react-query/utils/__tests__/formatNullableValue.test.js +25 -0
- package/build/esm/react-query/utils/__tests__/formatNullableValue.test.js.map +1 -0
- package/build/esm/react-query/utils/__tests__/getProgressiveRefetch.test.js +74 -0
- package/build/esm/react-query/utils/__tests__/getProgressiveRefetch.test.js.map +1 -0
- package/build/esm/react-query/utils/__tests__/normalizeStatus.test.js +28 -0
- package/build/esm/react-query/utils/__tests__/normalizeStatus.test.js.map +1 -0
- package/build/esm/react-query/utils/__tests__/notReachable.test.js +33 -0
- package/build/esm/react-query/utils/__tests__/notReachable.test.js.map +1 -0
- package/build/esm/react-query/utils/__tests__/parseNullableValue.test.js +25 -0
- package/build/esm/react-query/utils/__tests__/parseNullableValue.test.js.map +1 -0
- package/build/esm/react-query/utils/formatNullableValue.d.ts +2 -0
- package/build/esm/react-query/utils/formatNullableValue.js +11 -0
- package/build/esm/react-query/utils/formatNullableValue.js.map +1 -0
- package/build/esm/react-query/utils/getProgressiveRefetch.d.ts +2 -2
- package/build/esm/react-query/utils/parseNullableValue.d.ts +2 -0
- package/build/esm/react-query/utils/parseNullableValue.js +11 -0
- package/build/esm/react-query/utils/parseNullableValue.js.map +1 -0
- package/build/esm/setupTests.d.ts +1 -0
- package/build/esm/setupTests.js +2 -0
- package/build/esm/setupTests.js.map +1 -0
- package/package.json +17 -13
- package/build/cjs/react-query/impl/utils.d.ts +0 -4
- package/build/cjs/react-query/impl/utils.js +0 -27
- package/build/cjs/react-query/impl/utils.js.map +0 -1
- package/build/esm/react-query/impl/utils.d.ts +0 -4
- package/build/esm/react-query/impl/utils.js +0 -21
- package/build/esm/react-query/impl/utils.js.map +0 -1
package/build/cjs/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_react2","_DataInfiniteLoader","_jsxRuntime","e","__esModule","default","MockLoadingView","_jsx","children","MockErrorView","_ref","error","action","_jsxs","concat","message","onClick","handler","MockMoreView","_ref2","isLoading","describe","renderDataInfiniteLoader","props","arguments","length","undefined","fetchNextPage","jest","fn","defaultProps","status","hasNextPage","isFetchingNextPage","LoadingView","ErrorView","MoreView","_objectSpread","render","DataInfiniteLoader","it","expect","screen","getByTestId","toBeInTheDocument","queryByTestId","not","Error","getByText","_renderDataInfiniteLo","fireEvent","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":[]}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
4
|
+
var _react = _interopRequireDefault(require("react"));
|
|
5
|
+
var _react2 = require("@testing-library/react");
|
|
6
|
+
var _DataLoader = require("../DataLoader");
|
|
7
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
var MockLoadingView = function MockLoadingView() {
|
|
10
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
11
|
+
"data-testid": "loading-view",
|
|
12
|
+
children: "Loading..."
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
var MockErrorView = function MockErrorView(_ref) {
|
|
16
|
+
var error = _ref.error,
|
|
17
|
+
action = _ref.action;
|
|
18
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
19
|
+
"data-testid": "error-view",
|
|
20
|
+
children: [error ? "Error: ".concat(error.message) : 'No error', action ? /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
|
|
21
|
+
"data-testid": "error-action",
|
|
22
|
+
onClick: action.handler,
|
|
23
|
+
children: action.children || 'Retry'
|
|
24
|
+
}) : null]
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
describe('DataLoader', function () {
|
|
28
|
+
var renderDataLoader = function renderDataLoader() {
|
|
29
|
+
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
30
|
+
var defaultProps = {
|
|
31
|
+
status: 'success',
|
|
32
|
+
error: null,
|
|
33
|
+
LoadingView: MockLoadingView,
|
|
34
|
+
ErrorView: MockErrorView,
|
|
35
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
36
|
+
"data-testid": "content",
|
|
37
|
+
children: "Content"
|
|
38
|
+
})
|
|
39
|
+
};
|
|
40
|
+
return (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DataLoader.DataLoader, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, defaultProps), props)));
|
|
41
|
+
};
|
|
42
|
+
it('should render children when status is success', function () {
|
|
43
|
+
renderDataLoader({
|
|
44
|
+
status: 'success'
|
|
45
|
+
});
|
|
46
|
+
expect(_react2.screen.getByTestId('content')).toBeInTheDocument();
|
|
47
|
+
expect(_react2.screen.queryByTestId('loading-view')).not.toBeInTheDocument();
|
|
48
|
+
expect(_react2.screen.queryByTestId('error-view')).not.toBeInTheDocument();
|
|
49
|
+
});
|
|
50
|
+
it('should render LoadingView when status is loading', function () {
|
|
51
|
+
renderDataLoader({
|
|
52
|
+
status: 'loading'
|
|
53
|
+
});
|
|
54
|
+
expect(_react2.screen.getByTestId('loading-view')).toBeInTheDocument();
|
|
55
|
+
expect(_react2.screen.queryByTestId('content')).not.toBeInTheDocument();
|
|
56
|
+
expect(_react2.screen.queryByTestId('error-view')).not.toBeInTheDocument();
|
|
57
|
+
});
|
|
58
|
+
it('should render ErrorView when status is error', function () {
|
|
59
|
+
var error = new Error('Test error');
|
|
60
|
+
renderDataLoader({
|
|
61
|
+
status: 'error',
|
|
62
|
+
error: error
|
|
63
|
+
});
|
|
64
|
+
expect(_react2.screen.getByTestId('error-view')).toBeInTheDocument();
|
|
65
|
+
expect(_react2.screen.queryByTestId('content')).not.toBeInTheDocument();
|
|
66
|
+
expect(_react2.screen.queryByTestId('loading-view')).not.toBeInTheDocument();
|
|
67
|
+
expect(_react2.screen.getByText(/Test error/)).toBeInTheDocument();
|
|
68
|
+
});
|
|
69
|
+
it('should pass errorAction to ErrorView', function () {
|
|
70
|
+
var error = new Error('Test error');
|
|
71
|
+
var errorAction = jest.fn();
|
|
72
|
+
renderDataLoader({
|
|
73
|
+
status: 'error',
|
|
74
|
+
error: error,
|
|
75
|
+
errorAction: errorAction
|
|
76
|
+
});
|
|
77
|
+
expect(_react2.screen.getByTestId('error-action')).toBeInTheDocument();
|
|
78
|
+
});
|
|
79
|
+
it('should pass errorAction with custom children to ErrorView', function () {
|
|
80
|
+
var error = new Error('Test error');
|
|
81
|
+
var errorAction = {
|
|
82
|
+
handler: jest.fn(),
|
|
83
|
+
children: 'Custom action'
|
|
84
|
+
};
|
|
85
|
+
renderDataLoader({
|
|
86
|
+
status: 'error',
|
|
87
|
+
error: error,
|
|
88
|
+
errorAction: errorAction
|
|
89
|
+
});
|
|
90
|
+
expect(_react2.screen.getByText('Custom action')).toBeInTheDocument();
|
|
91
|
+
});
|
|
92
|
+
it('should pass loadingViewProps to LoadingView', function () {
|
|
93
|
+
var LoadingView = jest.fn(MockLoadingView);
|
|
94
|
+
var loadingViewProps = {
|
|
95
|
+
customProp: 'test'
|
|
96
|
+
};
|
|
97
|
+
renderDataLoader({
|
|
98
|
+
status: 'loading',
|
|
99
|
+
LoadingView: LoadingView,
|
|
100
|
+
loadingViewProps: loadingViewProps
|
|
101
|
+
});
|
|
102
|
+
expect(LoadingView).toHaveBeenCalledWith(expect.objectContaining(loadingViewProps), undefined);
|
|
103
|
+
});
|
|
104
|
+
it('should pass errorViewProps to ErrorView', function () {
|
|
105
|
+
var ErrorView = jest.fn(MockErrorView);
|
|
106
|
+
var errorViewProps = {
|
|
107
|
+
customProp: 'test'
|
|
108
|
+
};
|
|
109
|
+
var error = new Error('Test error');
|
|
110
|
+
renderDataLoader({
|
|
111
|
+
status: 'error',
|
|
112
|
+
error: error,
|
|
113
|
+
ErrorView: ErrorView,
|
|
114
|
+
errorViewProps: errorViewProps
|
|
115
|
+
});
|
|
116
|
+
expect(ErrorView).toHaveBeenCalledWith(expect.objectContaining(errorViewProps), undefined);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
// #sourceMappingURL=DataLoader.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_react2","_DataLoader","_jsxRuntime","e","__esModule","default","MockLoadingView","_jsx","children","MockErrorView","_ref","error","action","_jsxs","concat","message","onClick","handler","describe","renderDataLoader","props","arguments","length","undefined","defaultProps","status","LoadingView","ErrorView","render","DataLoader","_objectSpread","it","expect","screen","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":[]}
|
|
@@ -3,4 +3,4 @@ import type { DataManager } from '../core';
|
|
|
3
3
|
export interface WithDataManagerProps {
|
|
4
4
|
dataManager: DataManager;
|
|
5
5
|
}
|
|
6
|
-
export declare const withDataManager: <T
|
|
6
|
+
export declare const withDataManager: <T>(Component: React.ComponentType<T & WithDataManagerProps>) => React.FC<T>;
|
|
@@ -9,14 +9,14 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
9
9
|
var _DataManagerContext = require("./DataManagerContext");
|
|
10
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
11
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
-
var withDataManager = exports.withDataManager = function withDataManager(
|
|
12
|
+
var withDataManager = exports.withDataManager = function withDataManager(Component) {
|
|
13
13
|
var ComponentWithDataManager = function ComponentWithDataManager(props) {
|
|
14
14
|
var dataManager = (0, _DataManagerContext.useDataManager)();
|
|
15
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
15
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Component, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
|
|
16
16
|
dataManager: dataManager
|
|
17
17
|
}));
|
|
18
18
|
};
|
|
19
|
-
ComponentWithDataManager.displayName = "WithDataManager".concat(
|
|
19
|
+
ComponentWithDataManager.displayName = "WithDataManager".concat(Component.displayName || Component.name || 'Component');
|
|
20
20
|
return ComponentWithDataManager;
|
|
21
21
|
};
|
|
22
22
|
// #sourceMappingURL=withDataManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_DataManagerContext","_jsxRuntime","e","__esModule","default","withDataManager","exports","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_DataManagerContext","_jsxRuntime","e","__esModule","default","withDataManager","exports","Component","ComponentWithDataManager","props","dataManager","useDataManager","_jsx","_objectSpread","displayName","concat","name"],"sources":["withDataManager.tsx"],"sourcesContent":["import React from 'react';\n\nimport type {DataManager} from '../core';\n\nimport {useDataManager} from './DataManagerContext';\n\nexport interface WithDataManagerProps {\n dataManager: DataManager;\n}\n\nexport const withDataManager = <T,>(Component: React.ComponentType<T & WithDataManagerProps>) => {\n const ComponentWithDataManager: React.FC<T> = (props) => {\n const dataManager = useDataManager();\n\n return <Component {...props} dataManager={dataManager} />;\n };\n\n ComponentWithDataManager.displayName = `WithDataManager${\n Component.displayName || Component.name || 'Component'\n }`;\n\n return ComponentWithDataManager;\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,mBAAA,GAAAD,OAAA;AAAoD,IAAAE,WAAA,GAAAF,OAAA;AAAA,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAM7C,IAAMG,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,SAAlBA,eAAeA,CAAQE,SAAwD,EAAK;EAC7F,IAAMC,wBAAqC,GAAG,SAAxCA,wBAAqCA,CAAIC,KAAK,EAAK;IACrD,IAAMC,WAAW,GAAG,IAAAC,kCAAc,EAAC,CAAC;IAEpC,oBAAO,IAAAC,eAAA,EAACL,SAAS,MAAAM,sBAAA,MAAAA,sBAAA,MAAKJ,KAAK;MAAEC,WAAW,EAAEA;IAAY,EAAE,CAAC;EAC7D,CAAC;EAEDF,wBAAwB,CAACM,WAAW,qBAAAC,MAAA,CAChCR,SAAS,CAACO,WAAW,IAAIP,SAAS,CAACS,IAAI,IAAI,WAAW,CACxD;EAEF,OAAOR,wBAAwB;AACnC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.undefinedSymbol = exports.nullSymbol = void 0;
|
|
7
|
+
var undefinedSymbol = exports.undefinedSymbol = Symbol('undefined');
|
|
8
|
+
var nullSymbol = exports.nullSymbol = Symbol('null');
|
|
9
|
+
// #sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["undefinedSymbol","exports","Symbol","nullSymbol"],"sources":["constants.ts"],"sourcesContent":["export const undefinedSymbol = Symbol('undefined');\nexport const nullSymbol = Symbol('null');\n"],"mappings":";;;;;;AAAO,IAAMA,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAGE,MAAM,CAAC,WAAW,CAAC;AAC3C,IAAMC,UAAU,GAAAF,OAAA,CAAAE,UAAA,GAAGD,MAAM,CAAC,MAAM,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
4
|
+
var _reactQuery = require("@tanstack/react-query");
|
|
5
|
+
var _react = require("@testing-library/react");
|
|
6
|
+
var _useQueryContext = require("../useQueryContext");
|
|
7
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
+
jest.mock('@tanstack/react-query', function () {
|
|
9
|
+
var originalModule = jest.requireActual('@tanstack/react-query');
|
|
10
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalModule), {}, {
|
|
11
|
+
useQueryClient: jest.fn()
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
describe('useQueryContext', function () {
|
|
15
|
+
var mockQueryClient = new _reactQuery.QueryClient();
|
|
16
|
+
beforeEach(function () {
|
|
17
|
+
jest.clearAllMocks();
|
|
18
|
+
_reactQuery.useQueryClient.mockReturnValue(mockQueryClient);
|
|
19
|
+
});
|
|
20
|
+
it('should return context with queryClient', function () {
|
|
21
|
+
var _renderHook = (0, _react.renderHook)(function () {
|
|
22
|
+
return (0, _useQueryContext.useQueryContext)();
|
|
23
|
+
}),
|
|
24
|
+
result = _renderHook.result;
|
|
25
|
+
expect(result.current).toEqual({
|
|
26
|
+
queryClient: mockQueryClient
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
it('should memoize the context', function () {
|
|
30
|
+
var _renderHook2 = (0, _react.renderHook)(function () {
|
|
31
|
+
return (0, _useQueryContext.useQueryContext)();
|
|
32
|
+
}),
|
|
33
|
+
result = _renderHook2.result,
|
|
34
|
+
rerender = _renderHook2.rerender;
|
|
35
|
+
var firstResult = result.current;
|
|
36
|
+
rerender();
|
|
37
|
+
expect(result.current).toBe(firstResult);
|
|
38
|
+
});
|
|
39
|
+
it('should update context when queryClient changes', function () {
|
|
40
|
+
var _renderHook3 = (0, _react.renderHook)(function () {
|
|
41
|
+
return (0, _useQueryContext.useQueryContext)();
|
|
42
|
+
}),
|
|
43
|
+
result = _renderHook3.result,
|
|
44
|
+
rerender = _renderHook3.rerender;
|
|
45
|
+
var firstResult = result.current;
|
|
46
|
+
var newMockQueryClient = new _reactQuery.QueryClient();
|
|
47
|
+
_reactQuery.useQueryClient.mockReturnValue(newMockQueryClient);
|
|
48
|
+
rerender();
|
|
49
|
+
expect(result.current).not.toBe(firstResult);
|
|
50
|
+
expect(result.current).toEqual({
|
|
51
|
+
queryClient: newMockQueryClient
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
// #sourceMappingURL=useQueryContext.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactQuery","require","_react","_useQueryContext","_interopRequireDefault","e","__esModule","default","jest","mock","originalModule","requireActual","_objectSpread","useQueryClient","fn","describe","mockQueryClient","QueryClient","beforeEach","clearAllMocks","mockReturnValue","it","_renderHook","renderHook","useQueryContext","result","expect","current","toEqual","queryClient","_renderHook2","rerender","firstResult","toBe","_renderHook3","newMockQueryClient","not"],"sources":["useQueryContext.test.ts"],"sourcesContent":["import {QueryClient, useQueryClient} from '@tanstack/react-query';\nimport {renderHook} from '@testing-library/react';\n\nimport {useQueryContext} from '../useQueryContext';\n\njest.mock('@tanstack/react-query', () => {\n const originalModule = jest.requireActual('@tanstack/react-query');\n return {\n ...originalModule,\n useQueryClient: jest.fn(),\n };\n});\n\ndescribe('useQueryContext', () => {\n const mockQueryClient = new QueryClient();\n\n beforeEach(() => {\n jest.clearAllMocks();\n\n (useQueryClient as jest.Mock).mockReturnValue(mockQueryClient);\n });\n\n it('should return context with queryClient', () => {\n const {result} = renderHook(() => useQueryContext());\n\n expect(result.current).toEqual({queryClient: mockQueryClient});\n });\n\n it('should memoize the context', () => {\n const {result, rerender} = renderHook(() => useQueryContext());\n\n const firstResult = result.current;\n\n rerender();\n\n expect(result.current).toBe(firstResult);\n });\n\n it('should update context when queryClient changes', () => {\n const {result, rerender} = renderHook(() => useQueryContext());\n\n const firstResult = result.current;\n\n const newMockQueryClient = new QueryClient();\n\n (useQueryClient as jest.Mock).mockReturnValue(newMockQueryClient);\n\n rerender();\n\n expect(result.current).not.toBe(firstResult);\n expect(result.current).toEqual({queryClient: newMockQueryClient});\n });\n});\n"],"mappings":";;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,gBAAA,GAAAF,OAAA;AAAkD,SAAAG,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAElDG,IAAI,CAACC,IAAI,CAAC,uBAAuB,EAAE,YAAM;EACrC,IAAMC,cAAc,GAAGF,IAAI,CAACG,aAAa,CAAC,uBAAuB,CAAC;EAClE,WAAAC,sBAAA,MAAAA,sBAAA,MACOF,cAAc;IACjBG,cAAc,EAAEL,IAAI,CAACM,EAAE,CAAC;EAAC;AAEjC,CAAC,CAAC;AAEFC,QAAQ,CAAC,iBAAiB,EAAE,YAAM;EAC9B,IAAMC,eAAe,GAAG,IAAIC,uBAAW,CAAC,CAAC;EAEzCC,UAAU,CAAC,YAAM;IACbV,IAAI,CAACW,aAAa,CAAC,CAAC;IAEnBN,0BAAc,CAAeO,eAAe,CAACJ,eAAe,CAAC;EAClE,CAAC,CAAC;EAEFK,EAAE,CAAC,wCAAwC,EAAE,YAAM;IAC/C,IAAAC,WAAA,GAAiB,IAAAC,iBAAU,EAAC;QAAA,OAAM,IAAAC,gCAAe,EAAC,CAAC;MAAA,EAAC;MAA7CC,MAAM,GAAAH,WAAA,CAANG,MAAM;IAEbC,MAAM,CAACD,MAAM,CAACE,OAAO,CAAC,CAACC,OAAO,CAAC;MAACC,WAAW,EAAEb;IAAe,CAAC,CAAC;EAClE,CAAC,CAAC;EAEFK,EAAE,CAAC,4BAA4B,EAAE,YAAM;IACnC,IAAAS,YAAA,GAA2B,IAAAP,iBAAU,EAAC;QAAA,OAAM,IAAAC,gCAAe,EAAC,CAAC;MAAA,EAAC;MAAvDC,MAAM,GAAAK,YAAA,CAANL,MAAM;MAAEM,QAAQ,GAAAD,YAAA,CAARC,QAAQ;IAEvB,IAAMC,WAAW,GAAGP,MAAM,CAACE,OAAO;IAElCI,QAAQ,CAAC,CAAC;IAEVL,MAAM,CAACD,MAAM,CAACE,OAAO,CAAC,CAACM,IAAI,CAACD,WAAW,CAAC;EAC5C,CAAC,CAAC;EAEFX,EAAE,CAAC,gDAAgD,EAAE,YAAM;IACvD,IAAAa,YAAA,GAA2B,IAAAX,iBAAU,EAAC;QAAA,OAAM,IAAAC,gCAAe,EAAC,CAAC;MAAA,EAAC;MAAvDC,MAAM,GAAAS,YAAA,CAANT,MAAM;MAAEM,QAAQ,GAAAG,YAAA,CAARH,QAAQ;IAEvB,IAAMC,WAAW,GAAGP,MAAM,CAACE,OAAO;IAElC,IAAMQ,kBAAkB,GAAG,IAAIlB,uBAAW,CAAC,CAAC;IAE3CJ,0BAAc,CAAeO,eAAe,CAACe,kBAAkB,CAAC;IAEjEJ,QAAQ,CAAC,CAAC;IAEVL,MAAM,CAACD,MAAM,CAACE,OAAO,CAAC,CAACS,GAAG,CAACH,IAAI,CAACD,WAAW,CAAC;IAC5CN,MAAM,CAACD,MAAM,CAACE,OAAO,CAAC,CAACC,OAAO,CAAC;MAACC,WAAW,EAAEM;IAAkB,CAAC,CAAC;EACrE,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _reactQuery = require("@tanstack/react-query");
|
|
4
|
+
var _react = require("@testing-library/react");
|
|
5
|
+
var _hooks = require("../../impl/infinite/hooks");
|
|
6
|
+
var _hooks2 = require("../../impl/plain/hooks");
|
|
7
|
+
var _notReachable = require("../../utils/notReachable");
|
|
8
|
+
var _useQueryContext = require("../useQueryContext");
|
|
9
|
+
var _useQueryData = require("../useQueryData");
|
|
10
|
+
jest.mock('../useQueryContext');
|
|
11
|
+
jest.mock('../../impl/plain/hooks');
|
|
12
|
+
jest.mock('../../impl/infinite/hooks');
|
|
13
|
+
jest.mock('../../utils/notReachable');
|
|
14
|
+
describe('useQueryData', function () {
|
|
15
|
+
var mockQueryClient = new _reactQuery.QueryClient();
|
|
16
|
+
var mockContext = {
|
|
17
|
+
queryClient: mockQueryClient
|
|
18
|
+
};
|
|
19
|
+
var mockPlainState = {
|
|
20
|
+
status: 'success',
|
|
21
|
+
data: 'plain data'
|
|
22
|
+
};
|
|
23
|
+
var mockInfiniteState = {
|
|
24
|
+
status: 'success',
|
|
25
|
+
data: ['infinite data']
|
|
26
|
+
};
|
|
27
|
+
beforeEach(function () {
|
|
28
|
+
jest.clearAllMocks();
|
|
29
|
+
_useQueryContext.useQueryContext.mockReturnValue(mockContext);
|
|
30
|
+
_hooks2.usePlainQueryData.mockReturnValue(mockPlainState);
|
|
31
|
+
_hooks.useInfiniteQueryData.mockReturnValue(mockInfiniteState);
|
|
32
|
+
_notReachable.notReachable.mockReturnValue('not reachable');
|
|
33
|
+
});
|
|
34
|
+
it('should call usePlainQueryData for plain data source', function () {
|
|
35
|
+
var dataSource = {
|
|
36
|
+
type: 'plain',
|
|
37
|
+
name: 'test',
|
|
38
|
+
fetch: jest.fn()
|
|
39
|
+
};
|
|
40
|
+
var params = {
|
|
41
|
+
id: 1
|
|
42
|
+
};
|
|
43
|
+
var options = {
|
|
44
|
+
refetchInterval: 1000
|
|
45
|
+
};
|
|
46
|
+
var _renderHook = (0, _react.renderHook)(function () {
|
|
47
|
+
return (0, _useQueryData.useQueryData)(dataSource, params, options);
|
|
48
|
+
}),
|
|
49
|
+
result = _renderHook.result;
|
|
50
|
+
expect(_useQueryContext.useQueryContext).toHaveBeenCalled();
|
|
51
|
+
expect(_hooks2.usePlainQueryData).toHaveBeenCalledWith(mockContext, dataSource, params, options);
|
|
52
|
+
expect(_hooks.useInfiniteQueryData).not.toHaveBeenCalled();
|
|
53
|
+
expect(result.current).toBe(mockPlainState);
|
|
54
|
+
});
|
|
55
|
+
it('should call useInfiniteQueryData for infinite data source', function () {
|
|
56
|
+
var dataSource = {
|
|
57
|
+
type: 'infinite',
|
|
58
|
+
name: 'test',
|
|
59
|
+
fetch: jest.fn(),
|
|
60
|
+
next: jest.fn()
|
|
61
|
+
};
|
|
62
|
+
var params = {
|
|
63
|
+
id: 1
|
|
64
|
+
};
|
|
65
|
+
var options = {
|
|
66
|
+
refetchInterval: 1000
|
|
67
|
+
};
|
|
68
|
+
var _renderHook2 = (0, _react.renderHook)(function () {
|
|
69
|
+
return (0, _useQueryData.useQueryData)(dataSource, params, options);
|
|
70
|
+
}),
|
|
71
|
+
result = _renderHook2.result;
|
|
72
|
+
expect(_useQueryContext.useQueryContext).toHaveBeenCalled();
|
|
73
|
+
expect(_hooks.useInfiniteQueryData).toHaveBeenCalledWith(mockContext, dataSource, params, options);
|
|
74
|
+
expect(_hooks2.usePlainQueryData).not.toHaveBeenCalled();
|
|
75
|
+
expect(result.current).toBe(mockInfiniteState);
|
|
76
|
+
});
|
|
77
|
+
it('should call notReachable for unknown data source type', function () {
|
|
78
|
+
var dataSource = {
|
|
79
|
+
type: 'unknown',
|
|
80
|
+
name: 'test',
|
|
81
|
+
fetch: jest.fn()
|
|
82
|
+
};
|
|
83
|
+
var params = {
|
|
84
|
+
id: 1
|
|
85
|
+
};
|
|
86
|
+
_notReachable.notReachable.mockImplementation(function () {
|
|
87
|
+
return 'not reachable';
|
|
88
|
+
});
|
|
89
|
+
(0, _react.renderHook)(function () {
|
|
90
|
+
return (0, _useQueryData.useQueryData)(dataSource, params);
|
|
91
|
+
});
|
|
92
|
+
expect(_hooks2.usePlainQueryData).not.toHaveBeenCalled();
|
|
93
|
+
expect(_hooks.useInfiniteQueryData).not.toHaveBeenCalled();
|
|
94
|
+
expect(_notReachable.notReachable).toHaveBeenCalledWith('unknown', expect.any(String));
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
// #sourceMappingURL=useQueryData.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactQuery","require","_react","_hooks","_hooks2","_notReachable","_useQueryContext","_useQueryData","jest","mock","describe","mockQueryClient","QueryClient","mockContext","queryClient","mockPlainState","status","data","mockInfiniteState","beforeEach","clearAllMocks","useQueryContext","mockReturnValue","usePlainQueryData","useInfiniteQueryData","notReachable","it","dataSource","type","name","fetch","fn","params","id","options","refetchInterval","_renderHook","renderHook","useQueryData","result","expect","toHaveBeenCalled","toHaveBeenCalledWith","not","current","toBe","next","_renderHook2","mockImplementation","any","String"],"sources":["useQueryData.test.ts"],"sourcesContent":["import {QueryClient} from '@tanstack/react-query';\nimport {renderHook} from '@testing-library/react';\n\nimport {useInfiniteQueryData} from '../../impl/infinite/hooks';\nimport type {AnyInfiniteQueryDataSource} from '../../impl/infinite/types';\nimport {usePlainQueryData} from '../../impl/plain/hooks';\nimport type {AnyPlainQueryDataSource} from '../../impl/plain/types';\nimport type {AnyQueryDataSource} from '../../types/base';\nimport {notReachable} from '../../utils/notReachable';\nimport {useQueryContext} from '../useQueryContext';\nimport {useQueryData} from '../useQueryData';\n\njest.mock('../useQueryContext');\njest.mock('../../impl/plain/hooks');\njest.mock('../../impl/infinite/hooks');\njest.mock('../../utils/notReachable');\n\ndescribe('useQueryData', () => {\n const mockQueryClient = new QueryClient();\n const mockContext = {queryClient: mockQueryClient};\n const mockPlainState = {status: 'success', data: 'plain data'};\n const mockInfiniteState = {status: 'success', data: ['infinite data']};\n\n beforeEach(() => {\n jest.clearAllMocks();\n\n (useQueryContext as jest.Mock).mockReturnValue(mockContext);\n (usePlainQueryData as jest.Mock).mockReturnValue(mockPlainState);\n (useInfiniteQueryData as jest.Mock).mockReturnValue(mockInfiniteState);\n (notReachable as unknown as jest.Mock).mockReturnValue('not reachable');\n });\n\n it('should call usePlainQueryData for plain data source', () => {\n const dataSource: AnyPlainQueryDataSource = {\n type: 'plain',\n name: 'test',\n fetch: jest.fn(),\n };\n const params = {id: 1};\n const options = {refetchInterval: 1000};\n\n const {result} = renderHook(() => useQueryData(dataSource, params, options));\n\n expect(useQueryContext).toHaveBeenCalled();\n expect(usePlainQueryData).toHaveBeenCalledWith(mockContext, dataSource, params, options);\n expect(useInfiniteQueryData).not.toHaveBeenCalled();\n expect(result.current).toBe(mockPlainState);\n });\n\n it('should call useInfiniteQueryData for infinite data source', () => {\n const dataSource: AnyInfiniteQueryDataSource = {\n type: 'infinite',\n name: 'test',\n fetch: jest.fn(),\n next: jest.fn(),\n };\n const params = {id: 1};\n const options = {refetchInterval: 1000};\n\n const {result} = renderHook(() => useQueryData(dataSource, params, options));\n\n expect(useQueryContext).toHaveBeenCalled();\n expect(useInfiniteQueryData).toHaveBeenCalledWith(mockContext, dataSource, params, options);\n expect(usePlainQueryData).not.toHaveBeenCalled();\n expect(result.current).toBe(mockInfiniteState);\n });\n\n it('should call notReachable for unknown data source type', () => {\n const dataSource = {\n type: 'unknown',\n name: 'test',\n fetch: jest.fn(),\n } as unknown as AnyQueryDataSource;\n const params = {id: 1};\n\n (notReachable as unknown as jest.Mock).mockImplementation(() => {\n return 'not reachable';\n });\n\n renderHook(() => useQueryData(dataSource, params));\n\n expect(usePlainQueryData).not.toHaveBeenCalled();\n expect(useInfiniteQueryData).not.toHaveBeenCalled();\n expect(notReachable).toHaveBeenCalledWith('unknown', expect.any(String));\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
4
|
+
var _react = require("@testing-library/react");
|
|
5
|
+
var _core = require("../../../core");
|
|
6
|
+
var _useQueryResponses = require("../useQueryResponses");
|
|
7
|
+
var _useRefetchAll = require("../useRefetchAll");
|
|
8
|
+
var _useRefetchErrored = require("../useRefetchErrored");
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
jest.mock('../useRefetchAll');
|
|
11
|
+
jest.mock('../useRefetchErrored');
|
|
12
|
+
jest.mock('../../../core', function () {
|
|
13
|
+
var originalModule = jest.requireActual('../../../core');
|
|
14
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalModule), {}, {
|
|
15
|
+
getStatus: jest.fn(),
|
|
16
|
+
getError: jest.fn()
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
describe('useQueryResponses', function () {
|
|
20
|
+
var mockRefetchAll = jest.fn();
|
|
21
|
+
var mockRefetchErrored = jest.fn();
|
|
22
|
+
beforeEach(function () {
|
|
23
|
+
jest.clearAllMocks();
|
|
24
|
+
_useRefetchAll.useRefetchAll.mockReturnValue(mockRefetchAll);
|
|
25
|
+
_useRefetchErrored.useRefetchErrored.mockReturnValue(mockRefetchErrored);
|
|
26
|
+
_core.getStatus.mockReturnValue('success');
|
|
27
|
+
_core.getError.mockReturnValue(null);
|
|
28
|
+
});
|
|
29
|
+
it('should return combined status, error, and refetch functions', function () {
|
|
30
|
+
var responses = [{
|
|
31
|
+
status: 'loading',
|
|
32
|
+
error: null,
|
|
33
|
+
refetch: jest.fn()
|
|
34
|
+
}, {
|
|
35
|
+
status: 'success',
|
|
36
|
+
error: null,
|
|
37
|
+
refetch: jest.fn()
|
|
38
|
+
}, {
|
|
39
|
+
status: 'error',
|
|
40
|
+
error: {
|
|
41
|
+
message: 'Error'
|
|
42
|
+
},
|
|
43
|
+
refetch: jest.fn()
|
|
44
|
+
}];
|
|
45
|
+
var _renderHook = (0, _react.renderHook)(function () {
|
|
46
|
+
return (0, _useQueryResponses.useQueryResponses)(responses);
|
|
47
|
+
}),
|
|
48
|
+
result = _renderHook.result;
|
|
49
|
+
expect(_core.getStatus).toHaveBeenCalledWith(responses);
|
|
50
|
+
expect(_core.getError).toHaveBeenCalledWith(responses);
|
|
51
|
+
expect(_useRefetchAll.useRefetchAll).toHaveBeenCalledWith(responses);
|
|
52
|
+
expect(_useRefetchErrored.useRefetchErrored).toHaveBeenCalledWith(responses);
|
|
53
|
+
expect(result.current).toEqual({
|
|
54
|
+
status: 'success',
|
|
55
|
+
error: null,
|
|
56
|
+
refetch: mockRefetchAll,
|
|
57
|
+
refetchErrored: mockRefetchErrored
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
it('should handle empty responses array', function () {
|
|
61
|
+
var _renderHook2 = (0, _react.renderHook)(function () {
|
|
62
|
+
return (0, _useQueryResponses.useQueryResponses)([]);
|
|
63
|
+
}),
|
|
64
|
+
result = _renderHook2.result;
|
|
65
|
+
expect(_core.getStatus).toHaveBeenCalledWith([]);
|
|
66
|
+
expect(_core.getError).toHaveBeenCalledWith([]);
|
|
67
|
+
expect(_useRefetchAll.useRefetchAll).toHaveBeenCalledWith([]);
|
|
68
|
+
expect(_useRefetchErrored.useRefetchErrored).toHaveBeenCalledWith([]);
|
|
69
|
+
expect(result.current).toEqual({
|
|
70
|
+
status: 'success',
|
|
71
|
+
error: null,
|
|
72
|
+
refetch: mockRefetchAll,
|
|
73
|
+
refetchErrored: mockRefetchErrored
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
// #sourceMappingURL=useQueryResponses.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_core","_useQueryResponses","_useRefetchAll","_useRefetchErrored","_interopRequireDefault","e","__esModule","default","jest","mock","originalModule","requireActual","_objectSpread","getStatus","fn","getError","describe","mockRefetchAll","mockRefetchErrored","beforeEach","clearAllMocks","useRefetchAll","mockReturnValue","useRefetchErrored","it","responses","status","error","refetch","message","_renderHook","renderHook","useQueryResponses","result","expect","toHaveBeenCalledWith","current","toEqual","refetchErrored","_renderHook2"],"sources":["useQueryResponses.test.ts"],"sourcesContent":["import {renderHook} from '@testing-library/react';\n\nimport {getError, getStatus} from '../../../core';\nimport type {DataLoaderStatus} from '../../../core/types/DataLoaderStatus';\nimport {useQueryResponses} from '../useQueryResponses';\nimport {useRefetchAll} from '../useRefetchAll';\nimport {useRefetchErrored} from '../useRefetchErrored';\n\njest.mock('../useRefetchAll');\njest.mock('../useRefetchErrored');\njest.mock('../../../core', () => {\n const originalModule = jest.requireActual('../../../core');\n return {\n ...originalModule,\n getStatus: jest.fn(),\n getError: jest.fn(),\n };\n});\n\ndescribe('useQueryResponses', () => {\n const mockRefetchAll = jest.fn();\n const mockRefetchErrored = jest.fn();\n\n beforeEach(() => {\n jest.clearAllMocks();\n\n (useRefetchAll as jest.Mock).mockReturnValue(mockRefetchAll);\n (useRefetchErrored as jest.Mock).mockReturnValue(mockRefetchErrored);\n (getStatus as jest.Mock).mockReturnValue('success');\n (getError as jest.Mock).mockReturnValue(null);\n });\n\n it('should return combined status, error, and refetch functions', () => {\n const responses = [\n {status: 'loading' as DataLoaderStatus, error: null, refetch: jest.fn()},\n {status: 'success' as DataLoaderStatus, error: null, refetch: jest.fn()},\n {status: 'error' as DataLoaderStatus, error: {message: 'Error'}, refetch: jest.fn()},\n ];\n\n const {result} = renderHook(() => useQueryResponses(responses));\n\n expect(getStatus).toHaveBeenCalledWith(responses);\n expect(getError).toHaveBeenCalledWith(responses);\n expect(useRefetchAll).toHaveBeenCalledWith(responses);\n expect(useRefetchErrored).toHaveBeenCalledWith(responses);\n expect(result.current).toEqual({\n status: 'success',\n error: null,\n refetch: mockRefetchAll,\n refetchErrored: mockRefetchErrored,\n });\n });\n\n it('should handle empty responses array', () => {\n const {result} = renderHook(() => useQueryResponses([]));\n\n expect(getStatus).toHaveBeenCalledWith([]);\n expect(getError).toHaveBeenCalledWith([]);\n expect(useRefetchAll).toHaveBeenCalledWith([]);\n expect(useRefetchErrored).toHaveBeenCalledWith([]);\n expect(result.current).toEqual({\n status: 'success',\n error: null,\n refetch: mockRefetchAll,\n refetchErrored: mockRefetchErrored,\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _react = require("@testing-library/react");
|
|
4
|
+
var _useRefetchAll = require("../useRefetchAll");
|
|
5
|
+
describe('useRefetchAll', function () {
|
|
6
|
+
it('should return a function that calls refetch on all states', function () {
|
|
7
|
+
var refetch1 = jest.fn();
|
|
8
|
+
var refetch2 = jest.fn();
|
|
9
|
+
var refetch3 = jest.fn();
|
|
10
|
+
var states = [{
|
|
11
|
+
refetch: refetch1
|
|
12
|
+
}, {
|
|
13
|
+
refetch: refetch2
|
|
14
|
+
}, {
|
|
15
|
+
refetch: refetch3
|
|
16
|
+
}];
|
|
17
|
+
var _renderHook = (0, _react.renderHook)(function () {
|
|
18
|
+
return (0, _useRefetchAll.useRefetchAll)(states);
|
|
19
|
+
}),
|
|
20
|
+
result = _renderHook.result;
|
|
21
|
+
expect(result.current).toEqual(expect.any(Function));
|
|
22
|
+
(0, _react.act)(function () {
|
|
23
|
+
result.current();
|
|
24
|
+
});
|
|
25
|
+
expect(refetch1).toHaveBeenCalledTimes(1);
|
|
26
|
+
expect(refetch2).toHaveBeenCalledTimes(1);
|
|
27
|
+
expect(refetch3).toHaveBeenCalledTimes(1);
|
|
28
|
+
});
|
|
29
|
+
it('should handle empty states array', function () {
|
|
30
|
+
var _renderHook2 = (0, _react.renderHook)(function () {
|
|
31
|
+
return (0, _useRefetchAll.useRefetchAll)([]);
|
|
32
|
+
}),
|
|
33
|
+
result = _renderHook2.result;
|
|
34
|
+
(0, _react.act)(function () {
|
|
35
|
+
result.current();
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
it('should memoize the refetch function when dependencies do not change', function () {
|
|
39
|
+
var refetch1 = jest.fn();
|
|
40
|
+
var refetch2 = jest.fn();
|
|
41
|
+
var states = [{
|
|
42
|
+
refetch: refetch1
|
|
43
|
+
}, {
|
|
44
|
+
refetch: refetch2
|
|
45
|
+
}];
|
|
46
|
+
var _renderHook3 = (0, _react.renderHook)(function () {
|
|
47
|
+
return (0, _useRefetchAll.useRefetchAll)(states);
|
|
48
|
+
}),
|
|
49
|
+
result = _renderHook3.result,
|
|
50
|
+
rerender = _renderHook3.rerender;
|
|
51
|
+
var firstRefetchAll = result.current;
|
|
52
|
+
rerender();
|
|
53
|
+
expect(result.current).toBe(firstRefetchAll);
|
|
54
|
+
});
|
|
55
|
+
it('should create a new refetch function when dependencies change', function () {
|
|
56
|
+
var refetch1 = jest.fn();
|
|
57
|
+
var refetch2 = jest.fn();
|
|
58
|
+
var refetch3 = jest.fn();
|
|
59
|
+
var states = [{
|
|
60
|
+
refetch: refetch1
|
|
61
|
+
}, {
|
|
62
|
+
refetch: refetch2
|
|
63
|
+
}];
|
|
64
|
+
var _renderHook4 = (0, _react.renderHook)(function () {
|
|
65
|
+
return (0, _useRefetchAll.useRefetchAll)(states);
|
|
66
|
+
}),
|
|
67
|
+
result = _renderHook4.result,
|
|
68
|
+
rerender = _renderHook4.rerender;
|
|
69
|
+
var firstRefetchAll = result.current;
|
|
70
|
+
states = [{
|
|
71
|
+
refetch: refetch1
|
|
72
|
+
}, {
|
|
73
|
+
refetch: refetch3
|
|
74
|
+
}];
|
|
75
|
+
rerender();
|
|
76
|
+
expect(result.current).not.toBe(firstRefetchAll);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
// #sourceMappingURL=useRefetchAll.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_useRefetchAll","describe","it","refetch1","jest","fn","refetch2","refetch3","states","refetch","_renderHook","renderHook","useRefetchAll","result","expect","current","toEqual","any","Function","act","toHaveBeenCalledTimes","_renderHook2","_renderHook3","rerender","firstRefetchAll","toBe","_renderHook4","not"],"sources":["useRefetchAll.test.ts"],"sourcesContent":["import {act, renderHook} from '@testing-library/react';\n\nimport {useRefetchAll} from '../useRefetchAll';\n\ndescribe('useRefetchAll', () => {\n it('should return a function that calls refetch on all states', () => {\n const refetch1 = jest.fn();\n const refetch2 = jest.fn();\n const refetch3 = jest.fn();\n\n const states = [{refetch: refetch1}, {refetch: refetch2}, {refetch: refetch3}];\n\n const {result} = renderHook(() => useRefetchAll(states));\n\n expect(result.current).toEqual(expect.any(Function));\n\n act(() => {\n result.current();\n });\n\n expect(refetch1).toHaveBeenCalledTimes(1);\n expect(refetch2).toHaveBeenCalledTimes(1);\n expect(refetch3).toHaveBeenCalledTimes(1);\n });\n\n it('should handle empty states array', () => {\n const {result} = renderHook(() => useRefetchAll([]));\n\n act(() => {\n result.current();\n });\n });\n\n it('should memoize the refetch function when dependencies do not change', () => {\n const refetch1 = jest.fn();\n const refetch2 = jest.fn();\n\n const states = [{refetch: refetch1}, {refetch: refetch2}];\n\n const {result, rerender} = renderHook(() => useRefetchAll(states));\n\n const firstRefetchAll = result.current;\n\n rerender();\n\n expect(result.current).toBe(firstRefetchAll);\n });\n\n it('should create a new refetch function when dependencies change', () => {\n const refetch1 = jest.fn();\n const refetch2 = jest.fn();\n const refetch3 = jest.fn();\n\n let states = [{refetch: refetch1}, {refetch: refetch2}];\n\n const {result, rerender} = renderHook(() => useRefetchAll(states));\n\n const firstRefetchAll = result.current;\n\n states = [{refetch: refetch1}, {refetch: refetch3}];\n\n rerender();\n\n expect(result.current).not.toBe(firstRefetchAll);\n });\n});\n"],"mappings":"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","ignoreList":[]}
|