@gravity-ui/data-source 0.8.2 → 0.9.1-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/core/utils/withCatch.d.ts +4 -1
- package/build/cjs/core/utils/withCatch.js +2 -0
- package/build/cjs/core/utils/withCatch.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/impl/infinite/hooks.js +5 -1
- package/build/cjs/react-query/impl/infinite/hooks.js.map +1 -1
- package/build/cjs/react-query/impl/infinite/types.d.ts +1 -0
- package/build/cjs/react-query/impl/infinite/types.js.map +1 -1
- package/build/cjs/react-query/impl/plain/hooks.js +5 -1
- package/build/cjs/react-query/impl/plain/hooks.js.map +1 -1
- package/build/cjs/react-query/impl/plain/types.d.ts +1 -0
- package/build/cjs/react-query/impl/plain/types.js.map +1 -1
- 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/cjs/react-query/types/options.d.ts +5 -0
- package/build/cjs/react-query/types/options.js.map +1 -1
- package/build/cjs/react-query/utils/warn.d.ts +1 -0
- package/build/cjs/react-query/utils/warn.js +15 -0
- package/build/cjs/react-query/utils/warn.js.map +1 -0
- package/build/cjs/react-query/utils/warnDisabledRefetch.d.ts +1 -0
- package/build/cjs/react-query/utils/warnDisabledRefetch.js +27 -0
- package/build/cjs/react-query/utils/warnDisabledRefetch.js.map +1 -0
- package/build/cjs/react-query/utils/wrapRefetch.d.ts +2 -0
- package/build/cjs/react-query/utils/wrapRefetch.js +29 -0
- package/build/cjs/react-query/utils/wrapRefetch.js.map +1 -0
- package/build/esm/core/types/DataSource.d.ts +8 -8
- package/build/esm/core/types/DataSource.js.map +1 -1
- package/build/esm/core/utils/withCatch.d.ts +4 -1
- package/build/esm/core/utils/withCatch.js +2 -0
- package/build/esm/core/utils/withCatch.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/impl/infinite/hooks.js +6 -2
- package/build/esm/react-query/impl/infinite/hooks.js.map +1 -1
- package/build/esm/react-query/impl/infinite/types.d.ts +1 -0
- package/build/esm/react-query/impl/infinite/types.js.map +1 -1
- package/build/esm/react-query/impl/plain/hooks.js +6 -2
- package/build/esm/react-query/impl/plain/hooks.js.map +1 -1
- package/build/esm/react-query/impl/plain/types.d.ts +1 -0
- package/build/esm/react-query/impl/plain/types.js.map +1 -1
- 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/esm/react-query/types/options.d.ts +5 -0
- package/build/esm/react-query/types/options.js.map +1 -1
- package/build/esm/react-query/utils/warn.d.ts +1 -0
- package/build/esm/react-query/utils/warn.js +9 -0
- package/build/esm/react-query/utils/warn.js.map +1 -0
- package/build/esm/react-query/utils/warnDisabledRefetch.d.ts +1 -0
- package/build/esm/react-query/utils/warnDisabledRefetch.js +20 -0
- package/build/esm/react-query/utils/warnDisabledRefetch.js.map +1 -0
- package/build/esm/react-query/utils/wrapRefetch.d.ts +2 -0
- package/build/esm/react-query/utils/wrapRefetch.js +22 -0
- package/build/esm/react-query/utils/wrapRefetch.js.map +1 -0
- 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.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.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,1180 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
|
|
4
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
5
|
-
var _react = _interopRequireDefault(require("react"));
|
|
6
|
-
var _reactQuery = require("@tanstack/react-query");
|
|
7
|
-
var _react2 = require("@testing-library/react");
|
|
8
|
-
var _ClientDataManager = require("../ClientDataManager");
|
|
9
|
-
var _DataSourceProvider = require("../DataSourceProvider");
|
|
10
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
-
describe('subscriptions', function () {
|
|
13
|
-
var dataManager;
|
|
14
|
-
beforeEach(function () {
|
|
15
|
-
dataManager = new _ClientDataManager.ClientDataManager({
|
|
16
|
-
defaultOptions: {
|
|
17
|
-
queries: {
|
|
18
|
-
retry: false
|
|
19
|
-
},
|
|
20
|
-
mutations: {
|
|
21
|
-
retry: false
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
normalizerConfig: {
|
|
25
|
-
devLogging: false
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
afterEach(function () {
|
|
30
|
-
var _dataManager$queryNor;
|
|
31
|
-
(_dataManager$queryNor = dataManager.queryNormalizer) === null || _dataManager$queryNor === void 0 || _dataManager$queryNor.unsubscribe();
|
|
32
|
-
dataManager.queryClient.clear();
|
|
33
|
-
});
|
|
34
|
-
describe('QueryCache subscription', function () {
|
|
35
|
-
it('should add query to normalizer when added to QueryCache', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee2() {
|
|
36
|
-
var normalized;
|
|
37
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
|
|
38
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
39
|
-
case 0:
|
|
40
|
-
expect(dataManager.queryNormalizer).toBeDefined();
|
|
41
|
-
dataManager.queryNormalizer.subscribe();
|
|
42
|
-
|
|
43
|
-
// Add query with normalize: true option
|
|
44
|
-
_context2.next = 4;
|
|
45
|
-
return dataManager.queryClient.fetchQuery({
|
|
46
|
-
queryKey: ['users'],
|
|
47
|
-
queryFn: function () {
|
|
48
|
-
var _queryFn = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
|
|
49
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
50
|
-
while (1) switch (_context.prev = _context.next) {
|
|
51
|
-
case 0:
|
|
52
|
-
return _context.abrupt("return", [{
|
|
53
|
-
id: '1',
|
|
54
|
-
name: 'User 1'
|
|
55
|
-
}]);
|
|
56
|
-
case 1:
|
|
57
|
-
case "end":
|
|
58
|
-
return _context.stop();
|
|
59
|
-
}
|
|
60
|
-
}, _callee);
|
|
61
|
-
}));
|
|
62
|
-
function queryFn() {
|
|
63
|
-
return _queryFn.apply(this, arguments);
|
|
64
|
-
}
|
|
65
|
-
return queryFn;
|
|
66
|
-
}(),
|
|
67
|
-
normalize: true
|
|
68
|
-
});
|
|
69
|
-
case 4:
|
|
70
|
-
normalized = dataManager.queryNormalizer.getNormalizedData();
|
|
71
|
-
expect(normalized.objects['@@1']).toBeDefined();
|
|
72
|
-
case 6:
|
|
73
|
-
case "end":
|
|
74
|
-
return _context2.stop();
|
|
75
|
-
}
|
|
76
|
-
}, _callee2);
|
|
77
|
-
})));
|
|
78
|
-
it('should update query in normalizer on update', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee5() {
|
|
79
|
-
var queryKey, normalizedBefore, objectCountBefore, normalizedAfter;
|
|
80
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee5$(_context5) {
|
|
81
|
-
while (1) switch (_context5.prev = _context5.next) {
|
|
82
|
-
case 0:
|
|
83
|
-
expect(dataManager.queryNormalizer).toBeDefined();
|
|
84
|
-
dataManager.queryNormalizer.subscribe();
|
|
85
|
-
queryKey = ['users']; // Initial data with normalize: true
|
|
86
|
-
_context5.next = 5;
|
|
87
|
-
return dataManager.queryClient.fetchQuery({
|
|
88
|
-
queryKey: queryKey,
|
|
89
|
-
queryFn: function () {
|
|
90
|
-
var _queryFn2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee3() {
|
|
91
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee3$(_context3) {
|
|
92
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
93
|
-
case 0:
|
|
94
|
-
return _context3.abrupt("return", [{
|
|
95
|
-
id: '1',
|
|
96
|
-
name: 'Old'
|
|
97
|
-
}]);
|
|
98
|
-
case 1:
|
|
99
|
-
case "end":
|
|
100
|
-
return _context3.stop();
|
|
101
|
-
}
|
|
102
|
-
}, _callee3);
|
|
103
|
-
}));
|
|
104
|
-
function queryFn() {
|
|
105
|
-
return _queryFn2.apply(this, arguments);
|
|
106
|
-
}
|
|
107
|
-
return queryFn;
|
|
108
|
-
}(),
|
|
109
|
-
normalize: true
|
|
110
|
-
});
|
|
111
|
-
case 5:
|
|
112
|
-
normalizedBefore = dataManager.queryNormalizer.getNormalizedData();
|
|
113
|
-
objectCountBefore = Object.keys(normalizedBefore.objects).length; // Update data
|
|
114
|
-
_context5.next = 9;
|
|
115
|
-
return dataManager.queryClient.fetchQuery({
|
|
116
|
-
queryKey: queryKey,
|
|
117
|
-
queryFn: function () {
|
|
118
|
-
var _queryFn3 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee4() {
|
|
119
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee4$(_context4) {
|
|
120
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
121
|
-
case 0:
|
|
122
|
-
return _context4.abrupt("return", [{
|
|
123
|
-
id: '1',
|
|
124
|
-
name: 'New'
|
|
125
|
-
}]);
|
|
126
|
-
case 1:
|
|
127
|
-
case "end":
|
|
128
|
-
return _context4.stop();
|
|
129
|
-
}
|
|
130
|
-
}, _callee4);
|
|
131
|
-
}));
|
|
132
|
-
function queryFn() {
|
|
133
|
-
return _queryFn3.apply(this, arguments);
|
|
134
|
-
}
|
|
135
|
-
return queryFn;
|
|
136
|
-
}(),
|
|
137
|
-
normalize: true
|
|
138
|
-
});
|
|
139
|
-
case 9:
|
|
140
|
-
// Verify that normalized data was updated
|
|
141
|
-
normalizedAfter = dataManager.queryNormalizer.getNormalizedData();
|
|
142
|
-
expect(Object.keys(normalizedAfter.objects).length).toBe(objectCountBefore);
|
|
143
|
-
expect(normalizedAfter.queries[JSON.stringify(queryKey)]).toBeDefined();
|
|
144
|
-
case 12:
|
|
145
|
-
case "end":
|
|
146
|
-
return _context5.stop();
|
|
147
|
-
}
|
|
148
|
-
}, _callee5);
|
|
149
|
-
})));
|
|
150
|
-
it('should remove query from normalizer when removed from QueryCache', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee7() {
|
|
151
|
-
var queryKey, normalized;
|
|
152
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee7$(_context7) {
|
|
153
|
-
while (1) switch (_context7.prev = _context7.next) {
|
|
154
|
-
case 0:
|
|
155
|
-
expect(dataManager.queryNormalizer).toBeDefined();
|
|
156
|
-
dataManager.queryNormalizer.subscribe();
|
|
157
|
-
queryKey = ['users']; // Add query
|
|
158
|
-
_context7.next = 5;
|
|
159
|
-
return dataManager.queryClient.fetchQuery({
|
|
160
|
-
queryKey: queryKey,
|
|
161
|
-
queryFn: function () {
|
|
162
|
-
var _queryFn4 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee6() {
|
|
163
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee6$(_context6) {
|
|
164
|
-
while (1) switch (_context6.prev = _context6.next) {
|
|
165
|
-
case 0:
|
|
166
|
-
return _context6.abrupt("return", [{
|
|
167
|
-
id: '1',
|
|
168
|
-
name: 'User 1'
|
|
169
|
-
}]);
|
|
170
|
-
case 1:
|
|
171
|
-
case "end":
|
|
172
|
-
return _context6.stop();
|
|
173
|
-
}
|
|
174
|
-
}, _callee6);
|
|
175
|
-
}));
|
|
176
|
-
function queryFn() {
|
|
177
|
-
return _queryFn4.apply(this, arguments);
|
|
178
|
-
}
|
|
179
|
-
return queryFn;
|
|
180
|
-
}(),
|
|
181
|
-
normalize: true
|
|
182
|
-
});
|
|
183
|
-
case 5:
|
|
184
|
-
// Remove query
|
|
185
|
-
dataManager.queryClient.removeQueries({
|
|
186
|
-
queryKey: queryKey
|
|
187
|
-
});
|
|
188
|
-
|
|
189
|
-
// Give time to process event
|
|
190
|
-
_context7.next = 8;
|
|
191
|
-
return new Promise(function (resolve) {
|
|
192
|
-
return setTimeout(resolve, 10);
|
|
193
|
-
});
|
|
194
|
-
case 8:
|
|
195
|
-
normalized = dataManager.queryNormalizer.getNormalizedData(); // Query should be removed from queries
|
|
196
|
-
expect(normalized.queries[JSON.stringify(queryKey)]).toBeUndefined();
|
|
197
|
-
case 10:
|
|
198
|
-
case "end":
|
|
199
|
-
return _context7.stop();
|
|
200
|
-
}
|
|
201
|
-
}, _callee7);
|
|
202
|
-
})));
|
|
203
|
-
it('should support meta configuration for queries', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee8() {
|
|
204
|
-
var normalized;
|
|
205
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee8$(_context8) {
|
|
206
|
-
while (1) switch (_context8.prev = _context8.next) {
|
|
207
|
-
case 0:
|
|
208
|
-
expect(dataManager.queryNormalizer).toBeDefined();
|
|
209
|
-
dataManager.queryNormalizer.subscribe();
|
|
210
|
-
|
|
211
|
-
// Check that we can use meta for configuration
|
|
212
|
-
// Real check for disabling via meta is already tested in integration tests
|
|
213
|
-
normalized = dataManager.queryNormalizer.getNormalizedData();
|
|
214
|
-
expect(normalized).toBeDefined();
|
|
215
|
-
expect(normalized.objects).toBeDefined();
|
|
216
|
-
expect(normalized.queries).toBeDefined();
|
|
217
|
-
case 6:
|
|
218
|
-
case "end":
|
|
219
|
-
return _context8.stop();
|
|
220
|
-
}
|
|
221
|
-
}, _callee8);
|
|
222
|
-
})));
|
|
223
|
-
it('should unsubscribe correctly', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee10() {
|
|
224
|
-
var normalized;
|
|
225
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee10$(_context10) {
|
|
226
|
-
while (1) switch (_context10.prev = _context10.next) {
|
|
227
|
-
case 0:
|
|
228
|
-
expect(dataManager.queryNormalizer).toBeDefined();
|
|
229
|
-
dataManager.queryNormalizer.subscribe();
|
|
230
|
-
dataManager.queryNormalizer.unsubscribe();
|
|
231
|
-
|
|
232
|
-
// After unsubscribing, adding query should not affect normalizer
|
|
233
|
-
_context10.next = 5;
|
|
234
|
-
return dataManager.queryClient.fetchQuery({
|
|
235
|
-
queryKey: ['users'],
|
|
236
|
-
queryFn: function () {
|
|
237
|
-
var _queryFn5 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee9() {
|
|
238
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee9$(_context9) {
|
|
239
|
-
while (1) switch (_context9.prev = _context9.next) {
|
|
240
|
-
case 0:
|
|
241
|
-
return _context9.abrupt("return", [{
|
|
242
|
-
id: '1',
|
|
243
|
-
name: 'User 1'
|
|
244
|
-
}]);
|
|
245
|
-
case 1:
|
|
246
|
-
case "end":
|
|
247
|
-
return _context9.stop();
|
|
248
|
-
}
|
|
249
|
-
}, _callee9);
|
|
250
|
-
}));
|
|
251
|
-
function queryFn() {
|
|
252
|
-
return _queryFn5.apply(this, arguments);
|
|
253
|
-
}
|
|
254
|
-
return queryFn;
|
|
255
|
-
}(),
|
|
256
|
-
normalize: true
|
|
257
|
-
});
|
|
258
|
-
case 5:
|
|
259
|
-
normalized = dataManager.queryNormalizer.getNormalizedData();
|
|
260
|
-
expect(Object.keys(normalized.objects)).toHaveLength(0);
|
|
261
|
-
case 7:
|
|
262
|
-
case "end":
|
|
263
|
-
return _context10.stop();
|
|
264
|
-
}
|
|
265
|
-
}, _callee10);
|
|
266
|
-
})));
|
|
267
|
-
it('should allow multiple unsubscribe calls', function () {
|
|
268
|
-
expect(dataManager.queryNormalizer).toBeDefined();
|
|
269
|
-
dataManager.queryNormalizer.subscribe();
|
|
270
|
-
dataManager.queryNormalizer.unsubscribe();
|
|
271
|
-
|
|
272
|
-
// Repeated call should not throw error
|
|
273
|
-
expect(function () {
|
|
274
|
-
return dataManager.queryNormalizer.unsubscribe();
|
|
275
|
-
}).not.toThrow();
|
|
276
|
-
});
|
|
277
|
-
});
|
|
278
|
-
describe('MutationCache subscription', function () {
|
|
279
|
-
var dataManagerWithOptimistic;
|
|
280
|
-
beforeEach(function () {
|
|
281
|
-
dataManagerWithOptimistic = new _ClientDataManager.ClientDataManager({
|
|
282
|
-
defaultOptions: {
|
|
283
|
-
queries: {
|
|
284
|
-
retry: false
|
|
285
|
-
},
|
|
286
|
-
mutations: {
|
|
287
|
-
retry: false
|
|
288
|
-
}
|
|
289
|
-
},
|
|
290
|
-
normalizerConfig: {
|
|
291
|
-
devLogging: false,
|
|
292
|
-
optimistic: {
|
|
293
|
-
autoCalculateRollback: true
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
});
|
|
297
|
-
});
|
|
298
|
-
afterEach(function () {
|
|
299
|
-
var _dataManagerWithOptim;
|
|
300
|
-
(_dataManagerWithOptim = dataManagerWithOptimistic.queryNormalizer) === null || _dataManagerWithOptim === void 0 || _dataManagerWithOptim.unsubscribe();
|
|
301
|
-
dataManagerWithOptimistic.queryClient.clear();
|
|
302
|
-
});
|
|
303
|
-
it('should update queries on successful mutation', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee13() {
|
|
304
|
-
var queryKey, wrapper, _renderHook, mutationResult, data;
|
|
305
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee13$(_context13) {
|
|
306
|
-
while (1) switch (_context13.prev = _context13.next) {
|
|
307
|
-
case 0:
|
|
308
|
-
expect(dataManagerWithOptimistic.queryNormalizer).toBeDefined();
|
|
309
|
-
dataManagerWithOptimistic.queryNormalizer.subscribe();
|
|
310
|
-
queryKey = ['users']; // Initial data
|
|
311
|
-
_context13.next = 5;
|
|
312
|
-
return dataManagerWithOptimistic.queryClient.fetchQuery({
|
|
313
|
-
queryKey: queryKey,
|
|
314
|
-
queryFn: function () {
|
|
315
|
-
var _queryFn6 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee11() {
|
|
316
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee11$(_context11) {
|
|
317
|
-
while (1) switch (_context11.prev = _context11.next) {
|
|
318
|
-
case 0:
|
|
319
|
-
return _context11.abrupt("return", [{
|
|
320
|
-
id: '1',
|
|
321
|
-
name: 'Old'
|
|
322
|
-
}]);
|
|
323
|
-
case 1:
|
|
324
|
-
case "end":
|
|
325
|
-
return _context11.stop();
|
|
326
|
-
}
|
|
327
|
-
}, _callee11);
|
|
328
|
-
}));
|
|
329
|
-
function queryFn() {
|
|
330
|
-
return _queryFn6.apply(this, arguments);
|
|
331
|
-
}
|
|
332
|
-
return queryFn;
|
|
333
|
-
}(),
|
|
334
|
-
normalize: true
|
|
335
|
-
});
|
|
336
|
-
case 5:
|
|
337
|
-
// Create wrapper for hooks
|
|
338
|
-
wrapper = function wrapper(_ref7) {
|
|
339
|
-
var children = _ref7.children;
|
|
340
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DataSourceProvider.DataSourceProvider, {
|
|
341
|
-
dataManager: dataManagerWithOptimistic,
|
|
342
|
-
children: children
|
|
343
|
-
});
|
|
344
|
-
}; // Mutation via useMutation
|
|
345
|
-
_renderHook = (0, _react2.renderHook)(function () {
|
|
346
|
-
return (0, _reactQuery.useMutation)({
|
|
347
|
-
mutationFn: function () {
|
|
348
|
-
var _mutationFn = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee12() {
|
|
349
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee12$(_context12) {
|
|
350
|
-
while (1) switch (_context12.prev = _context12.next) {
|
|
351
|
-
case 0:
|
|
352
|
-
return _context12.abrupt("return", {
|
|
353
|
-
id: '1',
|
|
354
|
-
name: 'New'
|
|
355
|
-
});
|
|
356
|
-
case 1:
|
|
357
|
-
case "end":
|
|
358
|
-
return _context12.stop();
|
|
359
|
-
}
|
|
360
|
-
}, _callee12);
|
|
361
|
-
}));
|
|
362
|
-
function mutationFn() {
|
|
363
|
-
return _mutationFn.apply(this, arguments);
|
|
364
|
-
}
|
|
365
|
-
return mutationFn;
|
|
366
|
-
}(),
|
|
367
|
-
normalize: true,
|
|
368
|
-
optimistic: true
|
|
369
|
-
});
|
|
370
|
-
}, {
|
|
371
|
-
wrapper: wrapper
|
|
372
|
-
}), mutationResult = _renderHook.result;
|
|
373
|
-
mutationResult.current.mutate(undefined);
|
|
374
|
-
_context13.next = 10;
|
|
375
|
-
return (0, _react2.waitFor)(function () {
|
|
376
|
-
return expect(mutationResult.current.isSuccess).toBe(true);
|
|
377
|
-
});
|
|
378
|
-
case 10:
|
|
379
|
-
data = dataManagerWithOptimistic.queryClient.getQueryData(queryKey);
|
|
380
|
-
expect(data[0].name).toBe('New');
|
|
381
|
-
case 12:
|
|
382
|
-
case "end":
|
|
383
|
-
return _context13.stop();
|
|
384
|
-
}
|
|
385
|
-
}, _callee13);
|
|
386
|
-
})));
|
|
387
|
-
it('should apply optimistic updates', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee16() {
|
|
388
|
-
var queryKey, wrapper, _renderHook2, mutationResult, dataFinal;
|
|
389
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee16$(_context16) {
|
|
390
|
-
while (1) switch (_context16.prev = _context16.next) {
|
|
391
|
-
case 0:
|
|
392
|
-
expect(dataManagerWithOptimistic.queryNormalizer).toBeDefined();
|
|
393
|
-
dataManagerWithOptimistic.queryNormalizer.subscribe();
|
|
394
|
-
queryKey = ['users']; // Initial data
|
|
395
|
-
_context16.next = 5;
|
|
396
|
-
return dataManagerWithOptimistic.queryClient.fetchQuery({
|
|
397
|
-
queryKey: queryKey,
|
|
398
|
-
queryFn: function () {
|
|
399
|
-
var _queryFn7 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee14() {
|
|
400
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee14$(_context14) {
|
|
401
|
-
while (1) switch (_context14.prev = _context14.next) {
|
|
402
|
-
case 0:
|
|
403
|
-
return _context14.abrupt("return", [{
|
|
404
|
-
id: '1',
|
|
405
|
-
name: 'Original'
|
|
406
|
-
}]);
|
|
407
|
-
case 1:
|
|
408
|
-
case "end":
|
|
409
|
-
return _context14.stop();
|
|
410
|
-
}
|
|
411
|
-
}, _callee14);
|
|
412
|
-
}));
|
|
413
|
-
function queryFn() {
|
|
414
|
-
return _queryFn7.apply(this, arguments);
|
|
415
|
-
}
|
|
416
|
-
return queryFn;
|
|
417
|
-
}(),
|
|
418
|
-
normalize: true
|
|
419
|
-
});
|
|
420
|
-
case 5:
|
|
421
|
-
wrapper = function wrapper(_ref9) {
|
|
422
|
-
var children = _ref9.children;
|
|
423
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DataSourceProvider.DataSourceProvider, {
|
|
424
|
-
dataManager: dataManagerWithOptimistic,
|
|
425
|
-
children: children
|
|
426
|
-
});
|
|
427
|
-
}; // Mutation with optimistic data
|
|
428
|
-
_renderHook2 = (0, _react2.renderHook)(function () {
|
|
429
|
-
return (0, _reactQuery.useMutation)({
|
|
430
|
-
mutationFn: function () {
|
|
431
|
-
var _mutationFn2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee15() {
|
|
432
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee15$(_context15) {
|
|
433
|
-
while (1) switch (_context15.prev = _context15.next) {
|
|
434
|
-
case 0:
|
|
435
|
-
_context15.next = 2;
|
|
436
|
-
return new Promise(function (resolve) {
|
|
437
|
-
return setTimeout(resolve, 50);
|
|
438
|
-
});
|
|
439
|
-
case 2:
|
|
440
|
-
return _context15.abrupt("return", {
|
|
441
|
-
id: '1',
|
|
442
|
-
name: 'Final'
|
|
443
|
-
});
|
|
444
|
-
case 3:
|
|
445
|
-
case "end":
|
|
446
|
-
return _context15.stop();
|
|
447
|
-
}
|
|
448
|
-
}, _callee15);
|
|
449
|
-
}));
|
|
450
|
-
function mutationFn() {
|
|
451
|
-
return _mutationFn2.apply(this, arguments);
|
|
452
|
-
}
|
|
453
|
-
return mutationFn;
|
|
454
|
-
}(),
|
|
455
|
-
onMutate: function onMutate() {
|
|
456
|
-
return {
|
|
457
|
-
optimisticData: {
|
|
458
|
-
id: '1',
|
|
459
|
-
name: 'Optimistic'
|
|
460
|
-
}
|
|
461
|
-
};
|
|
462
|
-
},
|
|
463
|
-
normalize: true,
|
|
464
|
-
optimistic: true
|
|
465
|
-
});
|
|
466
|
-
}, {
|
|
467
|
-
wrapper: wrapper
|
|
468
|
-
}), mutationResult = _renderHook2.result;
|
|
469
|
-
mutationResult.current.mutate(undefined);
|
|
470
|
-
|
|
471
|
-
// Check optimistic data
|
|
472
|
-
_context16.next = 10;
|
|
473
|
-
return (0, _react2.waitFor)(function () {
|
|
474
|
-
var data = dataManagerWithOptimistic.queryClient.getQueryData(queryKey);
|
|
475
|
-
expect(data[0].name).toBe('Optimistic');
|
|
476
|
-
});
|
|
477
|
-
case 10:
|
|
478
|
-
_context16.next = 12;
|
|
479
|
-
return (0, _react2.waitFor)(function () {
|
|
480
|
-
return expect(mutationResult.current.isSuccess).toBe(true);
|
|
481
|
-
});
|
|
482
|
-
case 12:
|
|
483
|
-
dataFinal = dataManagerWithOptimistic.queryClient.getQueryData(queryKey);
|
|
484
|
-
expect(dataFinal[0].name).toBe('Final');
|
|
485
|
-
case 14:
|
|
486
|
-
case "end":
|
|
487
|
-
return _context16.stop();
|
|
488
|
-
}
|
|
489
|
-
}, _callee16);
|
|
490
|
-
})));
|
|
491
|
-
it('should automatically calculate rollbackData', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee19() {
|
|
492
|
-
var queryKey, wrapper, _renderHook3, mutationResult, data;
|
|
493
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee19$(_context19) {
|
|
494
|
-
while (1) switch (_context19.prev = _context19.next) {
|
|
495
|
-
case 0:
|
|
496
|
-
expect(dataManagerWithOptimistic.queryNormalizer).toBeDefined();
|
|
497
|
-
dataManagerWithOptimistic.queryNormalizer.subscribe();
|
|
498
|
-
queryKey = ['users']; // Initial data
|
|
499
|
-
_context19.next = 5;
|
|
500
|
-
return dataManagerWithOptimistic.queryClient.fetchQuery({
|
|
501
|
-
queryKey: queryKey,
|
|
502
|
-
queryFn: function () {
|
|
503
|
-
var _queryFn8 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee17() {
|
|
504
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee17$(_context17) {
|
|
505
|
-
while (1) switch (_context17.prev = _context17.next) {
|
|
506
|
-
case 0:
|
|
507
|
-
return _context17.abrupt("return", [{
|
|
508
|
-
id: '1',
|
|
509
|
-
name: 'Original'
|
|
510
|
-
}]);
|
|
511
|
-
case 1:
|
|
512
|
-
case "end":
|
|
513
|
-
return _context17.stop();
|
|
514
|
-
}
|
|
515
|
-
}, _callee17);
|
|
516
|
-
}));
|
|
517
|
-
function queryFn() {
|
|
518
|
-
return _queryFn8.apply(this, arguments);
|
|
519
|
-
}
|
|
520
|
-
return queryFn;
|
|
521
|
-
}(),
|
|
522
|
-
normalize: true
|
|
523
|
-
});
|
|
524
|
-
case 5:
|
|
525
|
-
wrapper = function wrapper(_ref11) {
|
|
526
|
-
var children = _ref11.children;
|
|
527
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DataSourceProvider.DataSourceProvider, {
|
|
528
|
-
dataManager: dataManagerWithOptimistic,
|
|
529
|
-
children: children
|
|
530
|
-
});
|
|
531
|
-
}; // Mutation with optimistic data that will fail
|
|
532
|
-
_renderHook3 = (0, _react2.renderHook)(function () {
|
|
533
|
-
return (0, _reactQuery.useMutation)({
|
|
534
|
-
mutationFn: function () {
|
|
535
|
-
var _mutationFn3 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee18() {
|
|
536
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee18$(_context18) {
|
|
537
|
-
while (1) switch (_context18.prev = _context18.next) {
|
|
538
|
-
case 0:
|
|
539
|
-
_context18.next = 2;
|
|
540
|
-
return new Promise(function (resolve) {
|
|
541
|
-
return setTimeout(resolve, 50);
|
|
542
|
-
});
|
|
543
|
-
case 2:
|
|
544
|
-
throw new Error('Mutation failed');
|
|
545
|
-
case 3:
|
|
546
|
-
case "end":
|
|
547
|
-
return _context18.stop();
|
|
548
|
-
}
|
|
549
|
-
}, _callee18);
|
|
550
|
-
}));
|
|
551
|
-
function mutationFn() {
|
|
552
|
-
return _mutationFn3.apply(this, arguments);
|
|
553
|
-
}
|
|
554
|
-
return mutationFn;
|
|
555
|
-
}(),
|
|
556
|
-
onMutate: function onMutate() {
|
|
557
|
-
return {
|
|
558
|
-
optimisticData: {
|
|
559
|
-
id: '1',
|
|
560
|
-
name: 'Optimistic'
|
|
561
|
-
}
|
|
562
|
-
};
|
|
563
|
-
},
|
|
564
|
-
normalize: true,
|
|
565
|
-
optimistic: true
|
|
566
|
-
});
|
|
567
|
-
}, {
|
|
568
|
-
wrapper: wrapper
|
|
569
|
-
}), mutationResult = _renderHook3.result;
|
|
570
|
-
mutationResult.current.mutate(undefined);
|
|
571
|
-
_context19.next = 10;
|
|
572
|
-
return (0, _react2.waitFor)(function () {
|
|
573
|
-
return expect(mutationResult.current.isError).toBe(true);
|
|
574
|
-
});
|
|
575
|
-
case 10:
|
|
576
|
-
// Data should be rolled back to original
|
|
577
|
-
data = dataManagerWithOptimistic.queryClient.getQueryData(queryKey);
|
|
578
|
-
expect(data[0].name).toBe('Original');
|
|
579
|
-
case 12:
|
|
580
|
-
case "end":
|
|
581
|
-
return _context19.stop();
|
|
582
|
-
}
|
|
583
|
-
}, _callee19);
|
|
584
|
-
})));
|
|
585
|
-
it('should rollback changes on mutation error', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee22() {
|
|
586
|
-
var queryKey, wrapper, _renderHook4, mutationResult, data;
|
|
587
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee22$(_context22) {
|
|
588
|
-
while (1) switch (_context22.prev = _context22.next) {
|
|
589
|
-
case 0:
|
|
590
|
-
expect(dataManagerWithOptimistic.queryNormalizer).toBeDefined();
|
|
591
|
-
dataManagerWithOptimistic.queryNormalizer.subscribe();
|
|
592
|
-
queryKey = ['users']; // Initial data
|
|
593
|
-
_context22.next = 5;
|
|
594
|
-
return dataManagerWithOptimistic.queryClient.fetchQuery({
|
|
595
|
-
queryKey: queryKey,
|
|
596
|
-
queryFn: function () {
|
|
597
|
-
var _queryFn9 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee20() {
|
|
598
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee20$(_context20) {
|
|
599
|
-
while (1) switch (_context20.prev = _context20.next) {
|
|
600
|
-
case 0:
|
|
601
|
-
return _context20.abrupt("return", [{
|
|
602
|
-
id: '1',
|
|
603
|
-
name: 'Original'
|
|
604
|
-
}]);
|
|
605
|
-
case 1:
|
|
606
|
-
case "end":
|
|
607
|
-
return _context20.stop();
|
|
608
|
-
}
|
|
609
|
-
}, _callee20);
|
|
610
|
-
}));
|
|
611
|
-
function queryFn() {
|
|
612
|
-
return _queryFn9.apply(this, arguments);
|
|
613
|
-
}
|
|
614
|
-
return queryFn;
|
|
615
|
-
}(),
|
|
616
|
-
normalize: true
|
|
617
|
-
});
|
|
618
|
-
case 5:
|
|
619
|
-
wrapper = function wrapper(_ref13) {
|
|
620
|
-
var children = _ref13.children;
|
|
621
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DataSourceProvider.DataSourceProvider, {
|
|
622
|
-
dataManager: dataManagerWithOptimistic,
|
|
623
|
-
children: children
|
|
624
|
-
});
|
|
625
|
-
}; // Mutation with error
|
|
626
|
-
_renderHook4 = (0, _react2.renderHook)(function () {
|
|
627
|
-
return (0, _reactQuery.useMutation)({
|
|
628
|
-
mutationFn: function () {
|
|
629
|
-
var _mutationFn4 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee21() {
|
|
630
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee21$(_context21) {
|
|
631
|
-
while (1) switch (_context21.prev = _context21.next) {
|
|
632
|
-
case 0:
|
|
633
|
-
_context21.next = 2;
|
|
634
|
-
return new Promise(function (resolve) {
|
|
635
|
-
return setTimeout(resolve, 50);
|
|
636
|
-
});
|
|
637
|
-
case 2:
|
|
638
|
-
throw new Error('Failed');
|
|
639
|
-
case 3:
|
|
640
|
-
case "end":
|
|
641
|
-
return _context21.stop();
|
|
642
|
-
}
|
|
643
|
-
}, _callee21);
|
|
644
|
-
}));
|
|
645
|
-
function mutationFn() {
|
|
646
|
-
return _mutationFn4.apply(this, arguments);
|
|
647
|
-
}
|
|
648
|
-
return mutationFn;
|
|
649
|
-
}(),
|
|
650
|
-
onMutate: function onMutate() {
|
|
651
|
-
return {
|
|
652
|
-
optimisticData: {
|
|
653
|
-
id: '1',
|
|
654
|
-
name: 'Optimistic'
|
|
655
|
-
}
|
|
656
|
-
};
|
|
657
|
-
},
|
|
658
|
-
normalize: true,
|
|
659
|
-
optimistic: true
|
|
660
|
-
});
|
|
661
|
-
}, {
|
|
662
|
-
wrapper: wrapper
|
|
663
|
-
}), mutationResult = _renderHook4.result;
|
|
664
|
-
mutationResult.current.mutate(undefined);
|
|
665
|
-
_context22.next = 10;
|
|
666
|
-
return (0, _react2.waitFor)(function () {
|
|
667
|
-
return expect(mutationResult.current.isError).toBe(true);
|
|
668
|
-
});
|
|
669
|
-
case 10:
|
|
670
|
-
data = dataManagerWithOptimistic.queryClient.getQueryData(queryKey);
|
|
671
|
-
expect(data[0].name).toBe('Original');
|
|
672
|
-
case 12:
|
|
673
|
-
case "end":
|
|
674
|
-
return _context22.stop();
|
|
675
|
-
}
|
|
676
|
-
}, _callee22);
|
|
677
|
-
})));
|
|
678
|
-
it('should ignore mutations with normalize: false', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee24() {
|
|
679
|
-
var dmNoNormalize, queryKey, wrapper, _renderHook5, mutationResult, data;
|
|
680
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee24$(_context24) {
|
|
681
|
-
while (1) switch (_context24.prev = _context24.next) {
|
|
682
|
-
case 0:
|
|
683
|
-
dmNoNormalize = new _ClientDataManager.ClientDataManager({
|
|
684
|
-
defaultOptions: {
|
|
685
|
-
queries: {
|
|
686
|
-
retry: false
|
|
687
|
-
},
|
|
688
|
-
mutations: {
|
|
689
|
-
retry: false
|
|
690
|
-
}
|
|
691
|
-
},
|
|
692
|
-
normalizerConfig: {
|
|
693
|
-
devLogging: false
|
|
694
|
-
}
|
|
695
|
-
});
|
|
696
|
-
expect(dmNoNormalize.queryNormalizer).toBeDefined();
|
|
697
|
-
queryKey = ['users'];
|
|
698
|
-
dmNoNormalize.queryClient.setQueryData(queryKey, [{
|
|
699
|
-
id: '1',
|
|
700
|
-
name: 'Original'
|
|
701
|
-
}]);
|
|
702
|
-
wrapper = function wrapper(_ref15) {
|
|
703
|
-
var children = _ref15.children;
|
|
704
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DataSourceProvider.DataSourceProvider, {
|
|
705
|
-
dataManager: dmNoNormalize,
|
|
706
|
-
children: children
|
|
707
|
-
});
|
|
708
|
-
}; // Mutation should not update data automatically (no normalize option)
|
|
709
|
-
_renderHook5 = (0, _react2.renderHook)(function () {
|
|
710
|
-
return (0, _reactQuery.useMutation)({
|
|
711
|
-
mutationFn: function () {
|
|
712
|
-
var _mutationFn5 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee23() {
|
|
713
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee23$(_context23) {
|
|
714
|
-
while (1) switch (_context23.prev = _context23.next) {
|
|
715
|
-
case 0:
|
|
716
|
-
return _context23.abrupt("return", {
|
|
717
|
-
id: '1',
|
|
718
|
-
name: 'New'
|
|
719
|
-
});
|
|
720
|
-
case 1:
|
|
721
|
-
case "end":
|
|
722
|
-
return _context23.stop();
|
|
723
|
-
}
|
|
724
|
-
}, _callee23);
|
|
725
|
-
}));
|
|
726
|
-
function mutationFn() {
|
|
727
|
-
return _mutationFn5.apply(this, arguments);
|
|
728
|
-
}
|
|
729
|
-
return mutationFn;
|
|
730
|
-
}()
|
|
731
|
-
});
|
|
732
|
-
}, {
|
|
733
|
-
wrapper: wrapper
|
|
734
|
-
}), mutationResult = _renderHook5.result;
|
|
735
|
-
mutationResult.current.mutate(undefined);
|
|
736
|
-
_context24.next = 9;
|
|
737
|
-
return (0, _react2.waitFor)(function () {
|
|
738
|
-
return expect(mutationResult.current.isSuccess).toBe(true);
|
|
739
|
-
});
|
|
740
|
-
case 9:
|
|
741
|
-
data = dmNoNormalize.queryClient.getQueryData(queryKey);
|
|
742
|
-
expect(data[0].name).toBe('Original');
|
|
743
|
-
// Not changed
|
|
744
|
-
case 11:
|
|
745
|
-
case "end":
|
|
746
|
-
return _context24.stop();
|
|
747
|
-
}
|
|
748
|
-
}, _callee24);
|
|
749
|
-
})));
|
|
750
|
-
it('should support devLogging for optimistic updates', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee27() {
|
|
751
|
-
var dmWithLogging, consoleSpy, queryKey, wrapper, _renderHook6, mutationResult;
|
|
752
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee27$(_context27) {
|
|
753
|
-
while (1) switch (_context27.prev = _context27.next) {
|
|
754
|
-
case 0:
|
|
755
|
-
dmWithLogging = new _ClientDataManager.ClientDataManager({
|
|
756
|
-
defaultOptions: {
|
|
757
|
-
queries: {
|
|
758
|
-
retry: false
|
|
759
|
-
},
|
|
760
|
-
mutations: {
|
|
761
|
-
retry: false
|
|
762
|
-
}
|
|
763
|
-
},
|
|
764
|
-
normalizerConfig: {
|
|
765
|
-
devLogging: false,
|
|
766
|
-
optimistic: {
|
|
767
|
-
autoCalculateRollback: true,
|
|
768
|
-
devLogging: true
|
|
769
|
-
}
|
|
770
|
-
}
|
|
771
|
-
});
|
|
772
|
-
expect(dmWithLogging.queryNormalizer).toBeDefined();
|
|
773
|
-
consoleSpy = jest.spyOn(console, 'log').mockImplementation();
|
|
774
|
-
dmWithLogging.queryNormalizer.subscribe();
|
|
775
|
-
queryKey = ['users'];
|
|
776
|
-
_context27.next = 7;
|
|
777
|
-
return dmWithLogging.queryClient.fetchQuery({
|
|
778
|
-
queryKey: queryKey,
|
|
779
|
-
queryFn: function () {
|
|
780
|
-
var _queryFn10 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee25() {
|
|
781
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee25$(_context25) {
|
|
782
|
-
while (1) switch (_context25.prev = _context25.next) {
|
|
783
|
-
case 0:
|
|
784
|
-
return _context25.abrupt("return", [{
|
|
785
|
-
id: '1',
|
|
786
|
-
name: 'Original'
|
|
787
|
-
}]);
|
|
788
|
-
case 1:
|
|
789
|
-
case "end":
|
|
790
|
-
return _context25.stop();
|
|
791
|
-
}
|
|
792
|
-
}, _callee25);
|
|
793
|
-
}));
|
|
794
|
-
function queryFn() {
|
|
795
|
-
return _queryFn10.apply(this, arguments);
|
|
796
|
-
}
|
|
797
|
-
return queryFn;
|
|
798
|
-
}(),
|
|
799
|
-
normalize: true
|
|
800
|
-
});
|
|
801
|
-
case 7:
|
|
802
|
-
wrapper = function wrapper(_ref17) {
|
|
803
|
-
var children = _ref17.children;
|
|
804
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DataSourceProvider.DataSourceProvider, {
|
|
805
|
-
dataManager: dmWithLogging,
|
|
806
|
-
children: children
|
|
807
|
-
});
|
|
808
|
-
};
|
|
809
|
-
_renderHook6 = (0, _react2.renderHook)(function () {
|
|
810
|
-
return (0, _reactQuery.useMutation)({
|
|
811
|
-
mutationFn: function () {
|
|
812
|
-
var _mutationFn6 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee26() {
|
|
813
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee26$(_context26) {
|
|
814
|
-
while (1) switch (_context26.prev = _context26.next) {
|
|
815
|
-
case 0:
|
|
816
|
-
_context26.next = 2;
|
|
817
|
-
return new Promise(function (resolve) {
|
|
818
|
-
return setTimeout(resolve, 50);
|
|
819
|
-
});
|
|
820
|
-
case 2:
|
|
821
|
-
throw new Error('Failed');
|
|
822
|
-
case 3:
|
|
823
|
-
case "end":
|
|
824
|
-
return _context26.stop();
|
|
825
|
-
}
|
|
826
|
-
}, _callee26);
|
|
827
|
-
}));
|
|
828
|
-
function mutationFn() {
|
|
829
|
-
return _mutationFn6.apply(this, arguments);
|
|
830
|
-
}
|
|
831
|
-
return mutationFn;
|
|
832
|
-
}(),
|
|
833
|
-
onMutate: function onMutate() {
|
|
834
|
-
return {
|
|
835
|
-
optimisticData: {
|
|
836
|
-
id: '1',
|
|
837
|
-
name: 'Optimistic'
|
|
838
|
-
}
|
|
839
|
-
};
|
|
840
|
-
},
|
|
841
|
-
normalize: true,
|
|
842
|
-
optimistic: true
|
|
843
|
-
});
|
|
844
|
-
}, {
|
|
845
|
-
wrapper: wrapper
|
|
846
|
-
}), mutationResult = _renderHook6.result;
|
|
847
|
-
mutationResult.current.mutate(undefined);
|
|
848
|
-
_context27.next = 12;
|
|
849
|
-
return (0, _react2.waitFor)(function () {
|
|
850
|
-
return expect(mutationResult.current.isError).toBe(true);
|
|
851
|
-
});
|
|
852
|
-
case 12:
|
|
853
|
-
// Verify that logging was called
|
|
854
|
-
expect(consoleSpy).toHaveBeenCalledWith('[OptimisticUpdate] Auto-calculated rollbackData:', expect.any(Object));
|
|
855
|
-
expect(consoleSpy).toHaveBeenCalledWith('[OptimisticUpdate] Rolling back changes');
|
|
856
|
-
consoleSpy.mockRestore();
|
|
857
|
-
case 15:
|
|
858
|
-
case "end":
|
|
859
|
-
return _context27.stop();
|
|
860
|
-
}
|
|
861
|
-
}, _callee27);
|
|
862
|
-
})));
|
|
863
|
-
it('should support manual rollbackData', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee30() {
|
|
864
|
-
var dmNoAutoRollback, queryKey, wrapper, _renderHook7, mutationResult, data;
|
|
865
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee30$(_context30) {
|
|
866
|
-
while (1) switch (_context30.prev = _context30.next) {
|
|
867
|
-
case 0:
|
|
868
|
-
dmNoAutoRollback = new _ClientDataManager.ClientDataManager({
|
|
869
|
-
defaultOptions: {
|
|
870
|
-
queries: {
|
|
871
|
-
retry: false
|
|
872
|
-
},
|
|
873
|
-
mutations: {
|
|
874
|
-
retry: false
|
|
875
|
-
}
|
|
876
|
-
},
|
|
877
|
-
normalizerConfig: {
|
|
878
|
-
devLogging: false,
|
|
879
|
-
optimistic: {
|
|
880
|
-
autoCalculateRollback: false
|
|
881
|
-
}
|
|
882
|
-
}
|
|
883
|
-
});
|
|
884
|
-
expect(dmNoAutoRollback.queryNormalizer).toBeDefined();
|
|
885
|
-
dmNoAutoRollback.queryNormalizer.subscribe();
|
|
886
|
-
queryKey = ['users'];
|
|
887
|
-
_context30.next = 6;
|
|
888
|
-
return dmNoAutoRollback.queryClient.fetchQuery({
|
|
889
|
-
queryKey: queryKey,
|
|
890
|
-
queryFn: function () {
|
|
891
|
-
var _queryFn11 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee28() {
|
|
892
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee28$(_context28) {
|
|
893
|
-
while (1) switch (_context28.prev = _context28.next) {
|
|
894
|
-
case 0:
|
|
895
|
-
return _context28.abrupt("return", [{
|
|
896
|
-
id: '1',
|
|
897
|
-
name: 'Original'
|
|
898
|
-
}]);
|
|
899
|
-
case 1:
|
|
900
|
-
case "end":
|
|
901
|
-
return _context28.stop();
|
|
902
|
-
}
|
|
903
|
-
}, _callee28);
|
|
904
|
-
}));
|
|
905
|
-
function queryFn() {
|
|
906
|
-
return _queryFn11.apply(this, arguments);
|
|
907
|
-
}
|
|
908
|
-
return queryFn;
|
|
909
|
-
}(),
|
|
910
|
-
normalize: true
|
|
911
|
-
});
|
|
912
|
-
case 6:
|
|
913
|
-
wrapper = function wrapper(_ref19) {
|
|
914
|
-
var children = _ref19.children;
|
|
915
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DataSourceProvider.DataSourceProvider, {
|
|
916
|
-
dataManager: dmNoAutoRollback,
|
|
917
|
-
children: children
|
|
918
|
-
});
|
|
919
|
-
};
|
|
920
|
-
_renderHook7 = (0, _react2.renderHook)(function () {
|
|
921
|
-
return (0, _reactQuery.useMutation)({
|
|
922
|
-
mutationFn: function () {
|
|
923
|
-
var _mutationFn7 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee29() {
|
|
924
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee29$(_context29) {
|
|
925
|
-
while (1) switch (_context29.prev = _context29.next) {
|
|
926
|
-
case 0:
|
|
927
|
-
_context29.next = 2;
|
|
928
|
-
return new Promise(function (resolve) {
|
|
929
|
-
return setTimeout(resolve, 50);
|
|
930
|
-
});
|
|
931
|
-
case 2:
|
|
932
|
-
throw new Error('Failed');
|
|
933
|
-
case 3:
|
|
934
|
-
case "end":
|
|
935
|
-
return _context29.stop();
|
|
936
|
-
}
|
|
937
|
-
}, _callee29);
|
|
938
|
-
}));
|
|
939
|
-
function mutationFn() {
|
|
940
|
-
return _mutationFn7.apply(this, arguments);
|
|
941
|
-
}
|
|
942
|
-
return mutationFn;
|
|
943
|
-
}(),
|
|
944
|
-
onMutate: function onMutate() {
|
|
945
|
-
return {
|
|
946
|
-
optimisticData: {
|
|
947
|
-
id: '1',
|
|
948
|
-
name: 'Optimistic'
|
|
949
|
-
},
|
|
950
|
-
rollbackData: {
|
|
951
|
-
id: '1',
|
|
952
|
-
name: 'Manual Rollback'
|
|
953
|
-
}
|
|
954
|
-
};
|
|
955
|
-
},
|
|
956
|
-
normalize: true,
|
|
957
|
-
optimistic: true
|
|
958
|
-
});
|
|
959
|
-
}, {
|
|
960
|
-
wrapper: wrapper
|
|
961
|
-
}), mutationResult = _renderHook7.result;
|
|
962
|
-
mutationResult.current.mutate(undefined);
|
|
963
|
-
_context30.next = 11;
|
|
964
|
-
return (0, _react2.waitFor)(function () {
|
|
965
|
-
return expect(mutationResult.current.isError).toBe(true);
|
|
966
|
-
});
|
|
967
|
-
case 11:
|
|
968
|
-
data = dmNoAutoRollback.queryClient.getQueryData(queryKey);
|
|
969
|
-
expect(data[0].name).toBe('Manual Rollback');
|
|
970
|
-
dmNoAutoRollback.queryNormalizer.unsubscribe();
|
|
971
|
-
dmNoAutoRollback.queryClient.clear();
|
|
972
|
-
case 15:
|
|
973
|
-
case "end":
|
|
974
|
-
return _context30.stop();
|
|
975
|
-
}
|
|
976
|
-
}, _callee30);
|
|
977
|
-
})));
|
|
978
|
-
it('should invalidate queries when invalidate option is enabled', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee33() {
|
|
979
|
-
var dmWithInvalidate, queryKey, invalidateSpy, wrapper, _renderHook8, mutationResult;
|
|
980
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee33$(_context33) {
|
|
981
|
-
while (1) switch (_context33.prev = _context33.next) {
|
|
982
|
-
case 0:
|
|
983
|
-
dmWithInvalidate = new _ClientDataManager.ClientDataManager({
|
|
984
|
-
defaultOptions: {
|
|
985
|
-
queries: {
|
|
986
|
-
retry: false
|
|
987
|
-
},
|
|
988
|
-
mutations: {
|
|
989
|
-
retry: false
|
|
990
|
-
}
|
|
991
|
-
},
|
|
992
|
-
normalizerConfig: {
|
|
993
|
-
devLogging: false,
|
|
994
|
-
invalidate: true
|
|
995
|
-
}
|
|
996
|
-
});
|
|
997
|
-
expect(dmWithInvalidate.queryNormalizer).toBeDefined();
|
|
998
|
-
dmWithInvalidate.queryNormalizer.subscribe();
|
|
999
|
-
queryKey = ['users']; // Initial data
|
|
1000
|
-
_context33.next = 6;
|
|
1001
|
-
return dmWithInvalidate.queryClient.fetchQuery({
|
|
1002
|
-
queryKey: queryKey,
|
|
1003
|
-
queryFn: function () {
|
|
1004
|
-
var _queryFn12 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee31() {
|
|
1005
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee31$(_context31) {
|
|
1006
|
-
while (1) switch (_context31.prev = _context31.next) {
|
|
1007
|
-
case 0:
|
|
1008
|
-
return _context31.abrupt("return", [{
|
|
1009
|
-
id: '1',
|
|
1010
|
-
name: 'Original'
|
|
1011
|
-
}]);
|
|
1012
|
-
case 1:
|
|
1013
|
-
case "end":
|
|
1014
|
-
return _context31.stop();
|
|
1015
|
-
}
|
|
1016
|
-
}, _callee31);
|
|
1017
|
-
}));
|
|
1018
|
-
function queryFn() {
|
|
1019
|
-
return _queryFn12.apply(this, arguments);
|
|
1020
|
-
}
|
|
1021
|
-
return queryFn;
|
|
1022
|
-
}()
|
|
1023
|
-
});
|
|
1024
|
-
case 6:
|
|
1025
|
-
// Spy on invalidateQueries
|
|
1026
|
-
invalidateSpy = jest.spyOn(dmWithInvalidate.queryClient, 'invalidateQueries');
|
|
1027
|
-
wrapper = function wrapper(_ref21) {
|
|
1028
|
-
var children = _ref21.children;
|
|
1029
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DataSourceProvider.DataSourceProvider, {
|
|
1030
|
-
dataManager: dmWithInvalidate,
|
|
1031
|
-
children: children
|
|
1032
|
-
});
|
|
1033
|
-
};
|
|
1034
|
-
_renderHook8 = (0, _react2.renderHook)(function () {
|
|
1035
|
-
return (0, _reactQuery.useMutation)({
|
|
1036
|
-
mutationFn: function () {
|
|
1037
|
-
var _mutationFn8 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee32() {
|
|
1038
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee32$(_context32) {
|
|
1039
|
-
while (1) switch (_context32.prev = _context32.next) {
|
|
1040
|
-
case 0:
|
|
1041
|
-
return _context32.abrupt("return", {
|
|
1042
|
-
id: '1',
|
|
1043
|
-
name: 'Updated'
|
|
1044
|
-
});
|
|
1045
|
-
case 1:
|
|
1046
|
-
case "end":
|
|
1047
|
-
return _context32.stop();
|
|
1048
|
-
}
|
|
1049
|
-
}, _callee32);
|
|
1050
|
-
}));
|
|
1051
|
-
function mutationFn() {
|
|
1052
|
-
return _mutationFn8.apply(this, arguments);
|
|
1053
|
-
}
|
|
1054
|
-
return mutationFn;
|
|
1055
|
-
}(),
|
|
1056
|
-
normalize: true
|
|
1057
|
-
});
|
|
1058
|
-
}, {
|
|
1059
|
-
wrapper: wrapper
|
|
1060
|
-
}), mutationResult = _renderHook8.result;
|
|
1061
|
-
mutationResult.current.mutate(undefined);
|
|
1062
|
-
_context33.next = 12;
|
|
1063
|
-
return (0, _react2.waitFor)(function () {
|
|
1064
|
-
return expect(mutationResult.current.isSuccess).toBe(true);
|
|
1065
|
-
});
|
|
1066
|
-
case 12:
|
|
1067
|
-
// Verify that invalidateQueries was called
|
|
1068
|
-
expect(invalidateSpy).toHaveBeenCalled();
|
|
1069
|
-
invalidateSpy.mockRestore();
|
|
1070
|
-
dmWithInvalidate.queryNormalizer.unsubscribe();
|
|
1071
|
-
dmWithInvalidate.queryClient.clear();
|
|
1072
|
-
case 16:
|
|
1073
|
-
case "end":
|
|
1074
|
-
return _context33.stop();
|
|
1075
|
-
}
|
|
1076
|
-
}, _callee33);
|
|
1077
|
-
})));
|
|
1078
|
-
it('should not invalidate queries when invalidate: false is set on mutation', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee36() {
|
|
1079
|
-
var dmWithInvalidate, queryKey, invalidateSpy, wrapper, _renderHook9, mutationResult;
|
|
1080
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee36$(_context36) {
|
|
1081
|
-
while (1) switch (_context36.prev = _context36.next) {
|
|
1082
|
-
case 0:
|
|
1083
|
-
dmWithInvalidate = new _ClientDataManager.ClientDataManager({
|
|
1084
|
-
defaultOptions: {
|
|
1085
|
-
queries: {
|
|
1086
|
-
retry: false
|
|
1087
|
-
},
|
|
1088
|
-
mutations: {
|
|
1089
|
-
retry: false
|
|
1090
|
-
}
|
|
1091
|
-
},
|
|
1092
|
-
normalizerConfig: {
|
|
1093
|
-
devLogging: false,
|
|
1094
|
-
invalidate: true // Globally enabled
|
|
1095
|
-
}
|
|
1096
|
-
});
|
|
1097
|
-
expect(dmWithInvalidate.queryNormalizer).toBeDefined();
|
|
1098
|
-
dmWithInvalidate.queryNormalizer.subscribe();
|
|
1099
|
-
queryKey = ['users'];
|
|
1100
|
-
_context36.next = 6;
|
|
1101
|
-
return dmWithInvalidate.queryClient.fetchQuery({
|
|
1102
|
-
queryKey: queryKey,
|
|
1103
|
-
queryFn: function () {
|
|
1104
|
-
var _queryFn13 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee34() {
|
|
1105
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee34$(_context34) {
|
|
1106
|
-
while (1) switch (_context34.prev = _context34.next) {
|
|
1107
|
-
case 0:
|
|
1108
|
-
return _context34.abrupt("return", [{
|
|
1109
|
-
id: '1',
|
|
1110
|
-
name: 'Original'
|
|
1111
|
-
}]);
|
|
1112
|
-
case 1:
|
|
1113
|
-
case "end":
|
|
1114
|
-
return _context34.stop();
|
|
1115
|
-
}
|
|
1116
|
-
}, _callee34);
|
|
1117
|
-
}));
|
|
1118
|
-
function queryFn() {
|
|
1119
|
-
return _queryFn13.apply(this, arguments);
|
|
1120
|
-
}
|
|
1121
|
-
return queryFn;
|
|
1122
|
-
}()
|
|
1123
|
-
});
|
|
1124
|
-
case 6:
|
|
1125
|
-
invalidateSpy = jest.spyOn(dmWithInvalidate.queryClient, 'invalidateQueries');
|
|
1126
|
-
wrapper = function wrapper(_ref23) {
|
|
1127
|
-
var children = _ref23.children;
|
|
1128
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DataSourceProvider.DataSourceProvider, {
|
|
1129
|
-
dataManager: dmWithInvalidate,
|
|
1130
|
-
children: children
|
|
1131
|
-
});
|
|
1132
|
-
};
|
|
1133
|
-
_renderHook9 = (0, _react2.renderHook)(function () {
|
|
1134
|
-
return (0, _reactQuery.useMutation)({
|
|
1135
|
-
mutationFn: function () {
|
|
1136
|
-
var _mutationFn9 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee35() {
|
|
1137
|
-
return (0, _regeneratorRuntime2.default)().wrap(function _callee35$(_context35) {
|
|
1138
|
-
while (1) switch (_context35.prev = _context35.next) {
|
|
1139
|
-
case 0:
|
|
1140
|
-
return _context35.abrupt("return", {
|
|
1141
|
-
id: '1',
|
|
1142
|
-
name: 'Updated'
|
|
1143
|
-
});
|
|
1144
|
-
case 1:
|
|
1145
|
-
case "end":
|
|
1146
|
-
return _context35.stop();
|
|
1147
|
-
}
|
|
1148
|
-
}, _callee35);
|
|
1149
|
-
}));
|
|
1150
|
-
function mutationFn() {
|
|
1151
|
-
return _mutationFn9.apply(this, arguments);
|
|
1152
|
-
}
|
|
1153
|
-
return mutationFn;
|
|
1154
|
-
}(),
|
|
1155
|
-
normalize: true,
|
|
1156
|
-
invalidate: false // Disable for this mutation
|
|
1157
|
-
});
|
|
1158
|
-
}, {
|
|
1159
|
-
wrapper: wrapper
|
|
1160
|
-
}), mutationResult = _renderHook9.result;
|
|
1161
|
-
mutationResult.current.mutate(undefined);
|
|
1162
|
-
_context36.next = 12;
|
|
1163
|
-
return (0, _react2.waitFor)(function () {
|
|
1164
|
-
return expect(mutationResult.current.isSuccess).toBe(true);
|
|
1165
|
-
});
|
|
1166
|
-
case 12:
|
|
1167
|
-
// Verify that invalidateQueries was NOT called
|
|
1168
|
-
expect(invalidateSpy).not.toHaveBeenCalled();
|
|
1169
|
-
invalidateSpy.mockRestore();
|
|
1170
|
-
dmWithInvalidate.queryNormalizer.unsubscribe();
|
|
1171
|
-
dmWithInvalidate.queryClient.clear();
|
|
1172
|
-
case 16:
|
|
1173
|
-
case "end":
|
|
1174
|
-
return _context36.stop();
|
|
1175
|
-
}
|
|
1176
|
-
}, _callee36);
|
|
1177
|
-
})));
|
|
1178
|
-
});
|
|
1179
|
-
});
|
|
1180
|
-
// #sourceMappingURL=subscriptions.test.js.map
|