|
1 | 1 | // externals
|
| 2 | +import { DocumentNode, GraphQLError } from "graphql"; |
| 3 | +import gql from "graphql-tag"; |
| 4 | +import { assign } from "lodash"; |
2 | 5 | import { from } from "rxjs";
|
3 | 6 | import { map } from "rxjs/operators";
|
4 |
| -import { assign } from "lodash"; |
5 |
| -import gql from "graphql-tag"; |
6 |
| -import { DocumentNode, GraphQLError } from "graphql"; |
7 | 7 | import { setVerbosity } from "ts-invariant";
|
8 | 8 |
|
9 |
| -import { |
10 |
| - Observable, |
11 |
| - Observer, |
12 |
| -} from "../../../utilities/observables/Observable"; |
13 |
| -import { ApolloLink, GraphQLRequest, FetchResult } from "../../../link/core"; |
14 | 9 | import { InMemoryCache, InMemoryCacheConfig } from "../../../cache";
|
15 | 10 | import {
|
16 | 11 | ApolloReducerConfig,
|
17 | 12 | NormalizedCacheObject,
|
18 | 13 | } from "../../../cache/inmemory/types";
|
| 14 | +import { ApolloLink, FetchResult, GraphQLRequest } from "../../../link/core"; |
| 15 | +import { |
| 16 | + Observable, |
| 17 | + Observer, |
| 18 | +} from "../../../utilities/observables/Observable"; |
19 | 19 |
|
20 | 20 | // mocks
|
21 |
| -import mockQueryManager from "../../../testing/core/mocking/mockQueryManager"; |
22 |
| -import mockWatchQuery from "../../../testing/core/mocking/mockWatchQuery"; |
23 | 21 | import {
|
24 | 22 | MockApolloLink,
|
25 | 23 | mockSingleLink,
|
26 | 24 | } from "../../../testing/core/mocking/mockLink";
|
| 25 | +import mockQueryManager from "../../../testing/core/mocking/mockQueryManager"; |
| 26 | +import mockWatchQuery from "../../../testing/core/mocking/mockWatchQuery"; |
27 | 27 |
|
28 | 28 | // core
|
29 |
| -import { ApolloQueryResult } from "../../types"; |
30 |
| -import { NetworkStatus } from "../../networkStatus"; |
31 | 29 | import { ObservableQuery } from "../../ObservableQuery";
|
| 30 | +import { QueryManager } from "../../QueryManager"; |
| 31 | +import { NetworkStatus } from "../../networkStatus"; |
| 32 | +import { ApolloQueryResult } from "../../types"; |
32 | 33 | import {
|
33 | 34 | MutationBaseOptions,
|
34 | 35 | MutationOptions,
|
35 | 36 | WatchQueryOptions,
|
36 | 37 | } from "../../watchQueryOptions";
|
37 |
| -import { QueryManager } from "../../QueryManager"; |
38 | 38 |
|
39 | 39 | import { ApolloError } from "../../../errors";
|
40 | 40 |
|
41 | 41 | // testing utils
|
42 | 42 | import { waitFor } from "@testing-library/react";
|
43 |
| -import wrap from "../../../testing/core/wrap"; |
| 43 | +import { ApolloClient } from "../../../core"; |
| 44 | +import { itAsync, subscribeAndCount } from "../../../testing/core"; |
44 | 45 | import observableToPromise, {
|
45 | 46 | observableToPromiseAndSubscription,
|
46 | 47 | } from "../../../testing/core/observableToPromise";
|
47 |
| -import { itAsync, subscribeAndCount } from "../../../testing/core"; |
48 |
| -import { ApolloClient } from "../../../core"; |
49 |
| -import { mockFetchQuery } from "../ObservableQuery"; |
| 48 | +import wrap from "../../../testing/core/wrap"; |
50 | 49 | import { Concast, print } from "../../../utilities";
|
| 50 | +import { mockFetchQuery } from "../ObservableQuery"; |
51 | 51 |
|
52 | 52 | interface MockedMutation {
|
53 | 53 | reject: (reason: any) => any;
|
@@ -4878,6 +4878,44 @@ describe("QueryManager", () => {
|
4878 | 4878 | });
|
4879 | 4879 | });
|
4880 | 4880 |
|
| 4881 | + itAsync( |
| 4882 | + "will not update inactive query on `resetStore`", |
| 4883 | + (resolve, reject) => { |
| 4884 | + const testQuery = gql` |
| 4885 | + query { |
| 4886 | + author { |
| 4887 | + firstName |
| 4888 | + lastName |
| 4889 | + } |
| 4890 | + } |
| 4891 | + `; |
| 4892 | + const link = new (class extends ApolloLink { |
| 4893 | + public request() { |
| 4894 | + reject(new Error("Query was not supposed to be called")); |
| 4895 | + return null; |
| 4896 | + } |
| 4897 | + })(); |
| 4898 | + |
| 4899 | + const queryManager = new QueryManager({ |
| 4900 | + link, |
| 4901 | + cache: new InMemoryCache({ addTypename: false }), |
| 4902 | + }); |
| 4903 | + const oq = queryManager.watchQuery({ |
| 4904 | + query: testQuery, |
| 4905 | + fetchPolicy: "cache-and-network", |
| 4906 | + }); |
| 4907 | + // Recreate state where an observable query is dirty but has no observers in the query manager |
| 4908 | + // @ts-expect-error -- Accessing private field for testing |
| 4909 | + oq.queryInfo.dirty = true; |
| 4910 | + |
| 4911 | + resetStore(queryManager).then((q) => { |
| 4912 | + expect(q).toHaveLength(0); |
| 4913 | + expect(oq.hasObservers()).toBe(false); |
| 4914 | + resolve(); |
| 4915 | + }); |
| 4916 | + } |
| 4917 | + ); |
| 4918 | + |
4881 | 4919 | itAsync(
|
4882 | 4920 | "will be true when partial data may be returned",
|
4883 | 4921 | (resolve, reject) => {
|
|
0 commit comments