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