From 6d1dd35d3d90ca2b2fd6cf4300d24201b529d1d3 Mon Sep 17 00:00:00 2001 From: Matt Parrish Date: Wed, 1 Jun 2022 16:01:47 -0600 Subject: [PATCH 1/4] fix(expect-utils): Fix deep equality of ImmutableJS OrderedMaps --- packages/expect-utils/src/__tests__/utils.test.ts | 8 +++++++- packages/expect-utils/src/jasmineUtils.ts | 8 ++++++++ packages/expect-utils/src/utils.ts | 3 ++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/expect-utils/src/__tests__/utils.test.ts b/packages/expect-utils/src/__tests__/utils.test.ts index d5fc11521e75..43716e8440d5 100644 --- a/packages/expect-utils/src/__tests__/utils.test.ts +++ b/packages/expect-utils/src/__tests__/utils.test.ts @@ -6,7 +6,7 @@ * */ -import {List} from 'immutable'; +import {List,OrderedMap} from 'immutable'; import {stringify} from 'jest-matcher-utils'; import { arrayBufferEquality, @@ -525,6 +525,12 @@ describe('iterableEquality', () => { expect(iterableEquality(a, b)).toBe(true); }); + + test('returns true when given Immutable OrderedMaps without an OwnerID', () => { + const a = OrderedMap().set('saving', true); + const b = OrderedMap().merge({ saving: true }); + expect(iterableEquality(a, b)).toBe(true); + }); }); describe('arrayBufferEquality', () => { diff --git a/packages/expect-utils/src/jasmineUtils.ts b/packages/expect-utils/src/jasmineUtils.ts index 552265c65764..6b003ed89569 100644 --- a/packages/expect-utils/src/jasmineUtils.ts +++ b/packages/expect-utils/src/jasmineUtils.ts @@ -266,3 +266,11 @@ export function isImmutableList(maybeList: any) { maybeList[IS_LIST_SENTINEL] ); } + +export function isImmutableOrderedKeyed(maybeKeyed: any) { + return !!( + maybeKeyed && + maybeKeyed[IS_KEYED_SENTINEL] && + maybeKeyed[IS_ORDERED_SENTINEL] + ); +} diff --git a/packages/expect-utils/src/utils.ts b/packages/expect-utils/src/utils.ts index a16522eb38e6..684a184a6370 100644 --- a/packages/expect-utils/src/utils.ts +++ b/packages/expect-utils/src/utils.ts @@ -11,6 +11,7 @@ import { equals, isA, isImmutableList, + isImmutableOrderedKeyed, isImmutableUnorderedKeyed, isImmutableUnorderedSet, } from './jasmineUtils'; @@ -255,7 +256,7 @@ export const iterableEquality = ( return false; } - if (!isImmutableList(a)) { + if (!isImmutableList(a) && !isImmutableOrderedKeyed(a)) { const aEntries = Object.entries(a); const bEntries = Object.entries(b); if (!equals(aEntries, bEntries)) { From 5bd227895aece35f12429e68527236c31140a1ab Mon Sep 17 00:00:00 2001 From: Matt Parrish Date: Wed, 1 Jun 2022 16:08:04 -0600 Subject: [PATCH 2/4] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d14ba70e1299..d8789dae9b23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - `[jest-worker]` Make `JestWorkerFarm` helper type to include methods of worker module that take more than one argument ([#12839](https://github.com/facebook/jest/pull/12839)) - `[jest-docblock]` Handle multiline comments in parseWithComments ([#12845](https://github.com/facebook/jest/pull/12845)) +- `[@jest/expect-utils]` Fix deep equality of ImmutableJS OrderedMaps ([#12763](https://github.com/facebook/jest/pull/12899)) ### Chore & Maintenance From 53ac73c7c39114066d5173000e9251f47422dd0e Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Thu, 2 Jun 2022 13:41:05 +0200 Subject: [PATCH 3/4] Update CHANGELOG.md --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8789dae9b23..ca451947a7c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,9 +8,9 @@ ### Fixes -- `[jest-worker]` Make `JestWorkerFarm` helper type to include methods of worker module that take more than one argument ([#12839](https://github.com/facebook/jest/pull/12839)) -- `[jest-docblock]` Handle multiline comments in parseWithComments ([#12845](https://github.com/facebook/jest/pull/12845)) - `[@jest/expect-utils]` Fix deep equality of ImmutableJS OrderedMaps ([#12763](https://github.com/facebook/jest/pull/12899)) +- `[jest-docblock]` Handle multiline comments in parseWithComments ([#12845](https://github.com/facebook/jest/pull/12845)) +- `[jest-worker]` Make `JestWorkerFarm` helper type to include methods of worker module that take more than one argument ([#12839](https://github.com/facebook/jest/pull/12839)) ### Chore & Maintenance From 44381c9a14bd1c0a24a803d55da0d3b918594cec Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Thu, 2 Jun 2022 13:46:36 +0200 Subject: [PATCH 4/4] lint --- packages/expect-utils/src/__tests__/utils.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/expect-utils/src/__tests__/utils.test.ts b/packages/expect-utils/src/__tests__/utils.test.ts index 43716e8440d5..e94c72e5c191 100644 --- a/packages/expect-utils/src/__tests__/utils.test.ts +++ b/packages/expect-utils/src/__tests__/utils.test.ts @@ -6,7 +6,7 @@ * */ -import {List,OrderedMap} from 'immutable'; +import {List, OrderedMap} from 'immutable'; import {stringify} from 'jest-matcher-utils'; import { arrayBufferEquality, @@ -528,7 +528,7 @@ describe('iterableEquality', () => { test('returns true when given Immutable OrderedMaps without an OwnerID', () => { const a = OrderedMap().set('saving', true); - const b = OrderedMap().merge({ saving: true }); + const b = OrderedMap().merge({saving: true}); expect(iterableEquality(a, b)).toBe(true); }); });