Skip to content

Commit

Permalink
Merge pull request #589 from qbolec/add-includedeepmembers
Browse files Browse the repository at this point in the history
Added includeDeepMembers
  • Loading branch information
keithamus committed Jan 11, 2016
2 parents 6a82d2d + ae4b5f9 commit e614fee
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 0 deletions.
21 changes: 21 additions & 0 deletions lib/chai/interface/assert.js
Original file line number Diff line number Diff line change
Expand Up @@ -1303,6 +1303,27 @@ module.exports = function (chai, util) {
new Assertion(superset, msg).to.include.members(subset);
}

/**
* ### .includeDeepMembers(superset, subset, [message])
*
* Asserts that `subset` is included in `superset` - using deep equality checking.
* Order is not taken into account.
* Duplicates are ignored.
*
* assert.includeDeepMembers([ {a: 1}, {b: 2}, {c: 3} ], [ {b: 2}, {a: 1}, {b: 2} ], 'include deep members');
*
* @name includeDeepMembers
* @param {Array} superset
* @param {Array} subset
* @param {String} message
* @namespace Assert
* @api public
*/

assert.includeDeepMembers = function (superset, subset, msg) {
new Assertion(superset, msg).to.include.deep.members(subset);
}

/**
* ### .oneOf(inList, list, [message])
*
Expand Down
16 changes: 16 additions & 0 deletions test/assert.js
Original file line number Diff line number Diff line change
Expand Up @@ -855,6 +855,22 @@ describe('assert', function () {
}, 'expected [ { b: 3 } ] to have the same members as [ { b: 5 } ]');
});

it('includeDeepMembers', function() {
assert.includeDeepMembers([{a:1}, {b:2}, {c:3}], [{c:3}, {b:2}]);
assert.includeDeepMembers([{a:1}, {b:2}, {c:3}], []);
assert.includeDeepMembers([{a:1}, {b:2}, {c:3}], [{c:3}]);
assert.includeDeepMembers([{a:1}, {b:2}, {c:3}, {c:3}], [{c:3}, {c:3}]);
assert.includeDeepMembers([{a:1}, {b:2}, {c:3}], [{c:3}, {c:3}]);

err(function() {
assert.includeDeepMembers([{e:5}, {f:6}], [{g:7}, {h:8}]);
}, 'expected [ { e: 5 }, { f: 6 } ] to be a superset of [ { g: 7 }, { h: 8 } ]');

err(function() {
assert.includeDeepMembers([{e:5}, {f:6}], [{e:5}, {f:6}, {z:0}]);
}, 'expected [ { e: 5 }, { f: 6 } ] to be a superset of [ { e: 5 }, { f: 6 }, { z: 0 } ]');
});

it('change', function() {
var obj = { value: 10, str: 'foo' },
fn = function() { obj.value += 5 },
Expand Down

0 comments on commit e614fee

Please sign in to comment.