diff --git a/packages/expect-utils/src/__tests__/utils.test.ts b/packages/expect-utils/src/__tests__/utils.test.ts index 09b6574e9164..d5fc11521e75 100644 --- a/packages/expect-utils/src/__tests__/utils.test.ts +++ b/packages/expect-utils/src/__tests__/utils.test.ts @@ -6,6 +6,7 @@ * */ +import {List} from 'immutable'; import {stringify} from 'jest-matcher-utils'; import { arrayBufferEquality, @@ -517,6 +518,13 @@ describe('iterableEquality', () => { expect(iterableEquality(a, b)).toBe(true); }); + + test('returns true when given Immutable Lists without an OwnerID', () => { + const a = List([1, 2, 3]); + const b = a.filter(v => v > 0); + + expect(iterableEquality(a, b)).toBe(true); + }); }); describe('arrayBufferEquality', () => { diff --git a/packages/expect-utils/src/utils.ts b/packages/expect-utils/src/utils.ts index a265723d720b..60e697bceb2e 100644 --- a/packages/expect-utils/src/utils.ts +++ b/packages/expect-utils/src/utils.ts @@ -181,11 +181,7 @@ export const iterableEquality = ( if (a.size !== undefined) { if (a.size !== b.size) { return false; - } else if ( - isA('Set', a) || - isImmutableUnorderedSet(a) || - isImmutableList(a) - ) { + } else if (isA('Set', a) || isImmutableUnorderedSet(a)) { let allFound = true; for (const aValue of a) { if (!b.has(aValue)) { @@ -259,6 +255,11 @@ export const iterableEquality = ( return false; } + if (isImmutableList(a)) { + // After iteration, Immutable Lists are equal + return true; + } + const aEntries = Object.entries(a); const bEntries = Object.entries(b); if (!equals(aEntries, bEntries)) {