toContain works with array-like objects (Arguments, HTMLCollections, etc)

Fix #699
This commit is contained in:
Charles Hansen
2014-10-30 11:57:24 -07:00
committed by slackersoft
parent cf83ae474c
commit 663fbd0cdb
3 changed files with 21 additions and 2 deletions
+6 -1
View File
@@ -2195,7 +2195,12 @@ getJasmineRequireObj().matchersUtil = function(j$) {
} }
return false; return false;
} }
return !!haystack && haystack.indexOf(needle) >= 0; if (!haystack) {
return false;
} else {
var indexOf = haystack.indexOf || Array.prototype.indexOf;
return indexOf.call(haystack, needle) >= 0;
}
}, },
buildFailureMessage: function() { buildFailureMessage: function() {
+9
View File
@@ -207,6 +207,15 @@ describe("matchersUtil", function() {
it("fails when actual is null", function() { it("fails when actual is null", function() {
expect(j$.matchersUtil.contains(null, 'A')).toBe(false); expect(j$.matchersUtil.contains(null, 'A')).toBe(false);
}); });
it("passes with array-like objects", function() {
var capturedArgs = null;
function testFunction(){
capturedArgs = arguments;
}
testFunction('foo', 'bar');
expect(j$.matchersUtil.contains(capturedArgs, 'bar')).toBe(true);
});
}); });
describe("buildMessage", function() { describe("buildMessage", function() {
+6 -1
View File
@@ -19,7 +19,12 @@ getJasmineRequireObj().matchersUtil = function(j$) {
} }
return false; return false;
} }
return !!haystack && haystack.indexOf(needle) >= 0; if (!haystack) {
return false;
} else {
var indexOf = haystack.indexOf || Array.prototype.indexOf;
return indexOf.call(haystack, needle) >= 0;
}
}, },
buildFailureMessage: function() { buildFailureMessage: function() {