diff --git a/Changelog.md b/Changelog.md
index e5c0d8b9cd..38c642d6d2 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -13,6 +13,9 @@
- The result of a mutation is now made available to the wrapped component,
when using the `graphql` HOC.
[@andycarrell](https://github.com/andycarrell) in [#3008](https://github.com/apollographql/react-apollo/pull/3008)
+- Check equality of stringified variables in the `MockLink` to improve
+ debugging experience used by `MockedProvider`.
+ [@evans](https://github.com/evans) in [#3078](https://github.com/apollographql/react-apollo/pull/3078)
### Bug Fixes
diff --git a/package-lock.json b/package-lock.json
index 3db54b89b4..9ffa393d77 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -942,6 +942,12 @@
"integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
"dev": true
},
+ "@types/fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@types/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha512-mky/O83TXmGY39P1H9YbUpjV6l6voRYlufqfFCvel8l1phuy8HRjdWc1rrPuN53ITBJlbyMSV6z3niOySO5pgQ==",
+ "dev": true
+ },
"@types/graphql": {
"version": "14.2.0",
"resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-14.2.0.tgz",
@@ -3261,7 +3267,7 @@
},
"minimist": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"dev": true
},
@@ -3705,7 +3711,7 @@
},
"es6-promisify": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
+ "resolved": "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
"integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
"dev": true,
"requires": {
@@ -4182,8 +4188,7 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"aproba": {
"version": "1.2.0",
@@ -4204,14 +4209,12 @@
"balanced-match": {
"version": "1.0.0",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -4226,20 +4229,17 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"core-util-is": {
"version": "1.0.2",
@@ -4356,8 +4356,7 @@
"inherits": {
"version": "2.0.3",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"ini": {
"version": "1.3.5",
@@ -4369,7 +4368,6 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@@ -4384,7 +4382,6 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -4392,14 +4389,12 @@
"minimist": {
"version": "0.0.8",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"minipass": {
"version": "2.3.5",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@@ -4418,7 +4413,6 @@
"version": "0.5.1",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"minimist": "0.0.8"
}
@@ -4499,8 +4493,7 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"object-assign": {
"version": "4.1.1",
@@ -4512,7 +4505,6 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"wrappy": "1"
}
@@ -4598,8 +4590,7 @@
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"safer-buffer": {
"version": "2.1.2",
@@ -4635,7 +4626,6 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -4655,7 +4645,6 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@@ -4699,14 +4688,12 @@
"wrappy": {
"version": "1.0.2",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"yallist": {
"version": "3.0.3",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
}
}
},
@@ -10487,7 +10474,7 @@
},
"minimist": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"dev": true
},
diff --git a/package.json b/package.json
index 25c03530be..d1f2ecb200 100644
--- a/package.json
+++ b/package.json
@@ -109,6 +109,7 @@
"devDependencies": {
"@types/enzyme": "3.9.3",
"@types/enzyme-adapter-react-16": "1.0.5",
+ "@types/fast-json-stable-stringify": "^2.0.0",
"@types/graphql": "14.2.0",
"@types/hoist-non-react-statics": "3.3.1",
"@types/invariant": "2.2.29",
@@ -165,6 +166,7 @@
},
"dependencies": {
"apollo-utilities": "^1.3.0",
+ "fast-json-stable-stringify": "^2.0.0",
"hoist-non-react-statics": "^3.3.0",
"lodash.isequal": "^4.5.0",
"prop-types": "^15.7.2",
diff --git a/src/test-links.ts b/src/test-links.ts
index d7e48b2b94..ec1148b210 100644
--- a/src/test-links.ts
+++ b/src/test-links.ts
@@ -6,6 +6,7 @@ import {
Observable,
// Observer,
} from 'apollo-link';
+import stringify from 'fast-json-stable-stringify';
import { print } from 'graphql/language/printer';
import {
@@ -67,7 +68,7 @@ export class MockLink extends ApolloLink {
const response = (this.mockedResponsesByKey[key] || []).find((res, index) => {
const requestVariables = operation.variables || {};
const mockedResponseVariables = res.request.variables || {};
- if (!isEqual(requestVariables, mockedResponseVariables)) {
+ if (!isEqual(stringify(requestVariables), stringify(mockedResponseVariables))) {
return false;
}
responseIndex = index;