From 144204d505526d5c382cb2f3dc2c2dd1378fe12d Mon Sep 17 00:00:00 2001 From: "David G. Miguel" Date: Mon, 24 May 2021 21:00:46 +0200 Subject: [PATCH] Fix deep equal comparison between promises (#217) --- .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 a1d8712..53ffe78 100644 --- a/.eslintrc.yaml +++ b/.eslintrc.yaml @@ -9,6 +9,7 @@ rules: globals: BigInt: false + Promise: false Int8Array: false Uint8Array: false Uint8ClampedArray: false diff --git a/lib/deep-equal.js b/lib/deep-equal.js index c4241c9..f4fdfdd 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 5277cb9..a392578 100644 --- a/lib/deep-equal.test.js +++ b/lib/deep-equal.test.js @@ -909,4 +909,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); + }); + }); });