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;