Skip to content

Commit

Permalink
Ignore order on unordered Immutable.js structures (#5501)
Browse files Browse the repository at this point in the history
  • Loading branch information
robinpokorny authored and cpojer committed Feb 9, 2018
1 parent a87514a commit 97f0308
Show file tree
Hide file tree
Showing 4 changed files with 373 additions and 3 deletions.
288 changes: 288 additions & 0 deletions packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -2247,6 +2247,294 @@ Difference:
Comparing two different types of values. Expected <green>array</> but received <red>number</>."
`;

exports[`.toEqual() {pass: false} expect(Immutable.List [1, 2]).not.toEqual(Immutable.List [1, 2]) 1`] = `
"<dim>expect(</><red>received</><dim>).not.toEqual(</><green>expected</><dim>)</>

Expected value to not equal:
<green>Immutable.List [1, 2]</>
Received:
<red>Immutable.List [1, 2]</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.List [1, 2]).toEqual(Immutable.List [2, 1]) 1`] = `
"<dim>expect(</><red>received</><dim>).toEqual(</><green>expected</><dim>)</>

Expected value to equal:
<green>Immutable.List [2, 1]</>
Received:
<red>Immutable.List [1, 2]</>

Difference:

<green>- Expected</>
<red>+ Received</>

<dim> Immutable.List [</>
<red>+ 1,</>
<dim> 2,</>
<green>- 1,</>
<dim> ]</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.List [1]).not.toEqual(Immutable.List [1]) 1`] = `
"<dim>expect(</><red>received</><dim>).not.toEqual(</><green>expected</><dim>)</>

Expected value to not equal:
<green>Immutable.List [1]</>
Received:
<red>Immutable.List [1]</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.List [1]).toEqual(Immutable.List [2]) 1`] = `
"<dim>expect(</><red>received</><dim>).toEqual(</><green>expected</><dim>)</>

Expected value to equal:
<green>Immutable.List [2]</>
Received:
<red>Immutable.List [1]</>

Difference:

<green>- Expected</>
<red>+ Received</>

<dim> Immutable.List [</>
<green>- 2,</>
<red>+ 1,</>
<dim> ]</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.Map {"1": Immutable.Map {"2": {"a": 99}}}).not.toEqual(Immutable.Map {"1": Immutable.Map {"2": {"a": 99}}}) 1`] = `
"<dim>expect(</><red>received</><dim>).not.toEqual(</><green>expected</><dim>)</>

Expected value to not equal:
<green>Immutable.Map {\\"1\\": Immutable.Map {\\"2\\": {\\"a\\": 99}}}</>
Received:
<red>Immutable.Map {\\"1\\": Immutable.Map {\\"2\\": {\\"a\\": 99}}}</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.Map {"1": Immutable.Map {"2": {"a": 99}}}).toEqual(Immutable.Map {"1": Immutable.Map {"2": {"a": 11}}}) 1`] = `
"<dim>expect(</><red>received</><dim>).toEqual(</><green>expected</><dim>)</>

Expected value to equal:
<green>Immutable.Map {\\"1\\": Immutable.Map {\\"2\\": {\\"a\\": 11}}}</>
Received:
<red>Immutable.Map {\\"1\\": Immutable.Map {\\"2\\": {\\"a\\": 99}}}</>

Difference:

<green>- Expected</>
<red>+ Received</>

<dim> Immutable.Map {</>
<dim> \\"1\\": Immutable.Map {</>
<dim> \\"2\\": Object {</>
<green>- \\"a\\": 11,</>
<red>+ \\"a\\": 99,</>
<dim> },</>
<dim> },</>
<dim> }</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.Map {"a": 0}).toEqual(Immutable.Map {"b": 0}) 1`] = `
"<dim>expect(</><red>received</><dim>).toEqual(</><green>expected</><dim>)</>

Expected value to equal:
<green>Immutable.Map {\\"b\\": 0}</>
Received:
<red>Immutable.Map {\\"a\\": 0}</>

Difference:

<green>- Expected</>
<red>+ Received</>

<dim> Immutable.Map {</>
<green>- \\"b\\": 0,</>
<red>+ \\"a\\": 0,</>
<dim> }</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.Map {"v": 1}).toEqual(Immutable.Map {"v": 2}) 1`] = `
"<dim>expect(</><red>received</><dim>).toEqual(</><green>expected</><dim>)</>

Expected value to equal:
<green>Immutable.Map {\\"v\\": 2}</>
Received:
<red>Immutable.Map {\\"v\\": 1}</>

Difference:

<green>- Expected</>
<red>+ Received</>

<dim> Immutable.Map {</>
<green>- \\"v\\": 2,</>
<red>+ \\"v\\": 1,</>
<dim> }</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.Map {}).not.toEqual(Immutable.Map {}) 1`] = `
"<dim>expect(</><red>received</><dim>).not.toEqual(</><green>expected</><dim>)</>

Expected value to not equal:
<green>Immutable.Map {}</>
Received:
<red>Immutable.Map {}</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.Map {1: "one", 2: "two"}).not.toEqual(Immutable.Map {1: "one", 2: "two"}) 1`] = `
"<dim>expect(</><red>received</><dim>).not.toEqual(</><green>expected</><dim>)</>

Expected value to not equal:
<green>Immutable.Map {1: \\"one\\", 2: \\"two\\"}</>
Received:
<red>Immutable.Map {1: \\"one\\", 2: \\"two\\"}</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.Map {1: "one", 2: "two"}).not.toEqual(Immutable.Map {2: "two", 1: "one"}) 1`] = `
"<dim>expect(</><red>received</><dim>).not.toEqual(</><green>expected</><dim>)</>

Expected value to not equal:
<green>Immutable.Map {2: \\"two\\", 1: \\"one\\"}</>
Received:
<red>Immutable.Map {1: \\"one\\", 2: \\"two\\"}</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.OrderedMap {1: "one", 2: "two"}).not.toEqual(Immutable.OrderedMap {1: "one", 2: "two"}) 1`] = `
"<dim>expect(</><red>received</><dim>).not.toEqual(</><green>expected</><dim>)</>

Expected value to not equal:
<green>Immutable.OrderedMap {1: \\"one\\", 2: \\"two\\"}</>
Received:
<red>Immutable.OrderedMap {1: \\"one\\", 2: \\"two\\"}</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.OrderedMap {1: "one", 2: "two"}).toEqual(Immutable.OrderedMap {2: "two", 1: "one"}) 1`] = `
"<dim>expect(</><red>received</><dim>).toEqual(</><green>expected</><dim>)</>

Expected value to equal:
<green>Immutable.OrderedMap {2: \\"two\\", 1: \\"one\\"}</>
Received:
<red>Immutable.OrderedMap {1: \\"one\\", 2: \\"two\\"}</>

Difference:

<green>- Expected</>
<red>+ Received</>

<dim> Immutable.OrderedMap {</>
<red>+ 1: \\"one\\",</>
<dim> 2: \\"two\\",</>
<green>- 1: \\"one\\",</>
<dim> }</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.OrderedSet []).not.toEqual(Immutable.OrderedSet []) 1`] = `
"<dim>expect(</><red>received</><dim>).not.toEqual(</><green>expected</><dim>)</>

Expected value to not equal:
<green>Immutable.OrderedSet []</>
Received:
<red>Immutable.OrderedSet []</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.OrderedSet [1, 2]).not.toEqual(Immutable.OrderedSet [1, 2]) 1`] = `
"<dim>expect(</><red>received</><dim>).not.toEqual(</><green>expected</><dim>)</>

Expected value to not equal:
<green>Immutable.OrderedSet [1, 2]</>
Received:
<red>Immutable.OrderedSet [1, 2]</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.OrderedSet [1, 2]).toEqual(Immutable.OrderedSet [2, 1]) 1`] = `
"<dim>expect(</><red>received</><dim>).toEqual(</><green>expected</><dim>)</>

Expected value to equal:
<green>Immutable.OrderedSet [2, 1]</>
Received:
<red>Immutable.OrderedSet [1, 2]</>

Difference:

<green>- Expected</>
<red>+ Received</>

<dim> Immutable.OrderedSet [</>
<red>+ 1,</>
<dim> 2,</>
<green>- 1,</>
<dim> ]</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.Set []).not.toEqual(Immutable.Set []) 1`] = `
"<dim>expect(</><red>received</><dim>).not.toEqual(</><green>expected</><dim>)</>

Expected value to not equal:
<green>Immutable.Set []</>
Received:
<red>Immutable.Set []</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.Set [1, 2]).not.toEqual(Immutable.Set [1, 2]) 1`] = `
"<dim>expect(</><red>received</><dim>).not.toEqual(</><green>expected</><dim>)</>

Expected value to not equal:
<green>Immutable.Set [1, 2]</>
Received:
<red>Immutable.Set [1, 2]</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.Set [1, 2]).not.toEqual(Immutable.Set [2, 1]) 1`] = `
"<dim>expect(</><red>received</><dim>).not.toEqual(</><green>expected</><dim>)</>

Expected value to not equal:
<green>Immutable.Set [2, 1]</>
Received:
<red>Immutable.Set [1, 2]</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.Set [1, 2]).toEqual(Immutable.Set []) 1`] = `
"<dim>expect(</><red>received</><dim>).toEqual(</><green>expected</><dim>)</>

Expected value to equal:
<green>Immutable.Set []</>
Received:
<red>Immutable.Set [1, 2]</>

Difference:

<green>- Expected</>
<red>+ Received</>

<green>- Immutable.Set []</>
<red>+ Immutable.Set [</>
<red>+ 1,</>
<red>+ 2,</>
<red>+ ]</>"
`;

exports[`.toEqual() {pass: false} expect(Immutable.Set [1, 2]).toEqual(Immutable.Set [1, 2, 3]) 1`] = `
"<dim>expect(</><red>received</><dim>).toEqual(</><green>expected</><dim>)</>

Expected value to equal:
<green>Immutable.Set [1, 2, 3]</>
Received:
<red>Immutable.Set [1, 2]</>

Difference:

<green>- Expected</>
<red>+ Received</>

<dim> Immutable.Set [</>
<dim> 1,</>
<dim> 2,</>
<green>- 3,</>
<dim> ]</>"
`;

exports[`.toEqual() {pass: false} expect(Map {"a" => 0}).toEqual(Map {"b" => 0}) 1`] = `
"<dim>expect(</><red>received</><dim>).toEqual(</><green>expected</><dim>)</>

Expand Down
56 changes: 56 additions & 0 deletions packages/expect/src/__tests__/matchers.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

const {stringify} = require('jest-matcher-utils');
const jestExpect = require('../');
const Immutable = require('immutable');

it('should throw if passed two arguments', () => {
expect(() => jestExpect('foo', 'bar')).toThrow(
Expand Down Expand Up @@ -200,12 +201,31 @@ describe('.toEqual()', () => {
[null, undefined],
[[1], [2]],
[[1, 2], [2, 1]],
[Immutable.List([1]), Immutable.List([2])],
[Immutable.List([1, 2]), Immutable.List([2, 1])],
[new Map(), new Set()],
[new Set([1, 2]), new Set()],
[new Set([1, 2]), new Set([1, 2, 3])],
[Immutable.Set([1, 2]), Immutable.Set()],
[Immutable.Set([1, 2]), Immutable.Set([1, 2, 3])],
[Immutable.OrderedSet([1, 2]), Immutable.OrderedSet([2, 1])],
[new Map([[1, 'one'], [2, 'two']]), new Map([[1, 'one']])],
[new Map([['a', 0]]), new Map([['b', 0]])],
[new Map([['v', 1]]), new Map([['v', 2]])],
[Immutable.Map({a: 0}), Immutable.Map({b: 0})],
[Immutable.Map({v: 1}), Immutable.Map({v: 2})],
[
Immutable.OrderedMap()
.set(1, 'one')
.set(2, 'two'),
Immutable.OrderedMap()
.set(2, 'two')
.set(1, 'one'),
],
[
Immutable.Map({1: Immutable.Map({2: {a: 99}})}),
Immutable.Map({1: Immutable.Map({2: {a: 11}})}),
],
[{a: 1, b: 2}, jestExpect.objectContaining({a: 2})],
[false, jestExpect.objectContaining({a: 2})],
[[1, 3], jestExpect.arrayContaining([1, 2])],
Expand Down Expand Up @@ -236,14 +256,50 @@ describe('.toEqual()', () => {
['abc', 'abc'],
[[1], [1]],
[[1, 2], [1, 2]],
[Immutable.List([1]), Immutable.List([1])],
[Immutable.List([1, 2]), Immutable.List([1, 2])],
[{}, {}],
[{a: 99}, {a: 99}],
[new Set(), new Set()],
[new Set([1, 2]), new Set([1, 2])],
[new Set([1, 2]), new Set([2, 1])],
[Immutable.Set(), Immutable.Set()],
[Immutable.Set([1, 2]), Immutable.Set([1, 2])],
[Immutable.Set([1, 2]), Immutable.Set([2, 1])],
[Immutable.OrderedSet(), Immutable.OrderedSet()],
[Immutable.OrderedSet([1, 2]), Immutable.OrderedSet([1, 2])],
[new Map(), new Map()],
[new Map([[1, 'one'], [2, 'two']]), new Map([[1, 'one'], [2, 'two']])],
[new Map([[1, 'one'], [2, 'two']]), new Map([[2, 'two'], [1, 'one']])],
[Immutable.Map(), Immutable.Map()],
[
Immutable.Map()
.set(1, 'one')
.set(2, 'two'),
Immutable.Map()
.set(1, 'one')
.set(2, 'two'),
],
[
Immutable.Map()
.set(1, 'one')
.set(2, 'two'),
Immutable.Map()
.set(2, 'two')
.set(1, 'one'),
],
[
Immutable.OrderedMap()
.set(1, 'one')
.set(2, 'two'),
Immutable.OrderedMap()
.set(1, 'one')
.set(2, 'two'),
],
[
Immutable.Map({1: Immutable.Map({2: {a: 99}})}),
Immutable.Map({1: Immutable.Map({2: {a: 99}})}),
],
[{a: 1, b: 2}, jestExpect.objectContaining({a: 1})],
[[1, 2, 3], jestExpect.arrayContaining([2, 3])],
['abcd', jestExpect.stringContaining('bc')],
Expand Down

0 comments on commit 97f0308

Please sign in to comment.