From f839c29691ff7e4640a68af0851df3f6253134a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20=28NoxWings=29=20Garc=C3=ADa=20Miguel?= Date: Fri, 5 Mar 2021 18:46:23 +0100 Subject: [PATCH] Fix deep equal comparison between promises --- .eslintrc.yaml | 1 + lib/deep-equal.js | 4 ++++ lib/deep-equal.test.js | 15 +++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/.eslintrc.yaml b/.eslintrc.yaml index 5062dc5..6aa1f6b 100644 --- a/.eslintrc.yaml +++ b/.eslintrc.yaml @@ -12,6 +12,7 @@ globals: Set: false Symbol: false BigInt: false + Promise: false Int8Array: false Uint8Array: false Uint8ClampedArray: false diff --git a/lib/deep-equal.js b/lib/deep-equal.js index 2523426..9a9b5fd 100644 --- a/lib/deep-equal.js +++ b/lib/deep-equal.js @@ -117,6 +117,10 @@ function deepEqualCyclic(actual, expectation, match) { } } + if (actualObj instanceof Promise && expectationObj instanceof Promise) { + return actualObj === expectationObj; + } + if (actualObj instanceof Error && expectationObj instanceof Error) { return actualObj === expectationObj; } diff --git a/lib/deep-equal.test.js b/lib/deep-equal.test.js index 827897b..edf62c4 100644 --- a/lib/deep-equal.test.js +++ b/lib/deep-equal.test.js @@ -903,4 +903,19 @@ describe("deepEqual", function () { }); }); }); + + describe("promises", function () { + it("returns true if the same promise instance is compared", function () { + var promise = Promise.resolve(); + var checkDeep = samsam.deepEqual(promise, promise); + assert.isTrue(checkDeep); + }); + + it("returns false if a different promise instance is compared", function () { + var promise1 = Promise.resolve(); + var promise2 = Promise.resolve(); + var checkDeep = samsam.deepEqual(promise1, promise2); + assert.isFalse(checkDeep); + }); + }); });