Skip to content

Commit

Permalink
Use new feature of a/an assertion to check type of tested object when…
Browse files Browse the repository at this point in the history
… using include assertion
  • Loading branch information
astorije committed Sep 12, 2015
1 parent d27ceb5 commit 0acb2ec
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 12 deletions.
8 changes: 1 addition & 7 deletions lib/chai/core/assertions.js
Original file line number Diff line number Diff line change
Expand Up @@ -211,13 +211,7 @@ module.exports = function (chai, _) {
var obj = flag(this, 'object');
var expected = false;

if (_.type(obj) !== 'array' && _.type(obj) !== 'string' && _.type(obj) !== 'object') {
this.assert(
false
, 'argument of expect() must be an array, an object, or a string, ' + _.type(obj) + ' given'
, 'argument of expect() must be an array, an object, or a string, ' + _.type(obj) + ' given');
return;
}
new Assertion(obj).to.be.a(['array', 'object', 'string']);

if (_.type(obj) === 'array' && _.type(val) === 'object') {
for (var i in obj) {
Expand Down
13 changes: 10 additions & 3 deletions test/assert.js
Original file line number Diff line number Diff line change
Expand Up @@ -440,17 +440,24 @@ describe('assert', function () {

err(function () {
assert.include(42, 'bar');
}, "argument of expect() must be an array, an object, or a string, number given");
}, "expected 42 to be an array, an object, or a string");

err(function(){
assert.include(null, 42);
}, "expected null to be an array, an object, or a string");

err(function () {
assert.include(undefined, 'bar');
}, "argument of expect() must be an array, an object, or a string, undefined given");
}, "expected undefined to be an array, an object, or a string");
});

it('notInclude', function () {
assert.notInclude('foobar', 'baz');
assert.notInclude([ 1, 2, 3 ], 4);
assert.notInclude(undefined, 'bar');

err(function () {
assert.notInclude(undefined, 'bar');
}, "expected undefined to be an array, an object, or a string");

err(function () {
assert.notInclude('foobar', 'bar');
Expand Down
10 changes: 9 additions & 1 deletion test/expect.js
Original file line number Diff line number Diff line change
Expand Up @@ -668,7 +668,15 @@ describe('expect', function () {

err(function(){
expect(42.0).to.include(42);
}, "argument of expect() must be an array, an object, or a string, number given");
}, "expected 42 to be an array, an object, or a string");

err(function(){
expect(null).to.not.include(42);
}, "expected null to be an array, an object, or a string");

err(function(){
expect(undefined).to.not.include(42);
}, "expected undefined to be an array, an object, or a string");
});

it('keys(array|Object|arguments)', function(){
Expand Down
2 changes: 1 addition & 1 deletion test/should.js
Original file line number Diff line number Diff line change
Expand Up @@ -503,7 +503,7 @@ describe('should', function() {

err(function(){
(42).should.include(4);
}, "argument of expect() must be an array, an object, or a string, number given");
}, "expected 42 to be an array, an object, or a string");
});

it('keys(array|Object|arguments)', function(){
Expand Down

0 comments on commit 0acb2ec

Please sign in to comment.