Skip to content

Commit ae4b5f9

Browse files
committed
Added includeDeepMembers
1 parent 6a82d2d commit ae4b5f9

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

lib/chai/interface/assert.js

+21
Original file line numberDiff line numberDiff line change
@@ -1303,6 +1303,27 @@ module.exports = function (chai, util) {
13031303
new Assertion(superset, msg).to.include.members(subset);
13041304
}
13051305

1306+
/**
1307+
* ### .includeDeepMembers(superset, subset, [message])
1308+
*
1309+
* Asserts that `subset` is included in `superset` - using deep equality checking.
1310+
* Order is not taken into account.
1311+
* Duplicates are ignored.
1312+
*
1313+
* assert.includeDeepMembers([ {a: 1}, {b: 2}, {c: 3} ], [ {b: 2}, {a: 1}, {b: 2} ], 'include deep members');
1314+
*
1315+
* @name includeDeepMembers
1316+
* @param {Array} superset
1317+
* @param {Array} subset
1318+
* @param {String} message
1319+
* @namespace Assert
1320+
* @api public
1321+
*/
1322+
1323+
assert.includeDeepMembers = function (superset, subset, msg) {
1324+
new Assertion(superset, msg).to.include.deep.members(subset);
1325+
}
1326+
13061327
/**
13071328
* ### .oneOf(inList, list, [message])
13081329
*

test/assert.js

+16
Original file line numberDiff line numberDiff line change
@@ -855,6 +855,22 @@ describe('assert', function () {
855855
}, 'expected [ { b: 3 } ] to have the same members as [ { b: 5 } ]');
856856
});
857857

858+
it('includeDeepMembers', function() {
859+
assert.includeDeepMembers([{a:1}, {b:2}, {c:3}], [{c:3}, {b:2}]);
860+
assert.includeDeepMembers([{a:1}, {b:2}, {c:3}], []);
861+
assert.includeDeepMembers([{a:1}, {b:2}, {c:3}], [{c:3}]);
862+
assert.includeDeepMembers([{a:1}, {b:2}, {c:3}, {c:3}], [{c:3}, {c:3}]);
863+
assert.includeDeepMembers([{a:1}, {b:2}, {c:3}], [{c:3}, {c:3}]);
864+
865+
err(function() {
866+
assert.includeDeepMembers([{e:5}, {f:6}], [{g:7}, {h:8}]);
867+
}, 'expected [ { e: 5 }, { f: 6 } ] to be a superset of [ { g: 7 }, { h: 8 } ]');
868+
869+
err(function() {
870+
assert.includeDeepMembers([{e:5}, {f:6}], [{e:5}, {f:6}, {z:0}]);
871+
}, 'expected [ { e: 5 }, { f: 6 } ] to be a superset of [ { e: 5 }, { f: 6 }, { z: 0 } ]');
872+
});
873+
858874
it('change', function() {
859875
var obj = { value: 10, str: 'foo' },
860876
fn = function() { obj.value += 5 },

0 commit comments

Comments
 (0)