From f0b534996eea2670c1653e817266579e00d05db0 Mon Sep 17 00:00:00 2001 From: Callum Macrae Date: Wed, 5 Jul 2017 10:39:16 +0100 Subject: [PATCH] Fix bug where `isObjectEqual` throws exception with null values. Fixes #1566. --- src/util/route.js | 6 ++++++ test/unit/specs/route.spec.js | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/util/route.js b/src/util/route.js index 9fee9c099..9cd20832a 100644 --- a/src/util/route.js +++ b/src/util/route.js @@ -74,6 +74,12 @@ export function isSameRoute (a: Route, b: ?Route): boolean { } function isObjectEqual (a = {}, b = {}): boolean { + if (a === null) { + return b === null + } + if (b === null) { + return false + } const aKeys = Object.keys(a) const bKeys = Object.keys(b) if (aKeys.length !== bKeys.length) { diff --git a/test/unit/specs/route.spec.js b/test/unit/specs/route.spec.js index e15f550f4..e79ceee76 100644 --- a/test/unit/specs/route.spec.js +++ b/test/unit/specs/route.spec.js @@ -47,6 +47,18 @@ describe('Route utils', () => { expect(isSameRoute(a, b)).toBe(true) expect(isSameRoute(a, c)).toBe(false) }) + + it('null values (regression test for #1566)', () => { + const a = { + path: '/abc', + query: { foo: 'bar' } + } + const b = { + path: '/abc', + query: { foo: null } + } + expect(isSameRoute(a, b)).toBe(false); + }) }) describe('isIncludedRoute', () => {