Ensure _.has returns false for nullish objects. [closes #2190]

This commit is contained in:
John-David Dalton
2016-03-31 15:55:05 -07:00
parent e96ee69f1c
commit 8bd9a4d2c3
2 changed files with 22 additions and 3 deletions

View File

@@ -5353,9 +5353,9 @@
var index = -1,
length = path.length;
while (object != null && ++index < length) {
while (++index < length) {
var key = path[index];
if (!(result = hasFunc(object, key))) {
if (!(result = object != null && hasFunc(object, key))) {
break;
}
object = object[key];

View File

@@ -7128,13 +7128,17 @@
});
QUnit.test('`_.' + methodName + '` should support deep paths', function(assert) {
assert.expect(2);
assert.expect(4);
var object = { 'a': { 'b': { 'c': 3 } } };
lodashStable.each(['a.b.c', ['a', 'b', 'c']], function(path) {
assert.strictEqual(func(object, path), true);
});
lodashStable.each(['a.c.b', ['a', 'c', 'b']], function(path) {
assert.strictEqual(func(object, path), false);
});
});
QUnit.test('`_.' + methodName + '` should coerce `path` to a string', function(assert) {
@@ -7271,6 +7275,21 @@
});
});
QUnit.test('`_.' + methodName + '` should return `false` when nested `object` is nullish', function(assert) {
assert.expect(2);
var values = [null, undefined],
expected = lodashStable.map(values, alwaysFalse);
lodashStable.each(['a.b.c', ['a', 'b', 'c']], function(path) {
var actual = lodashStable.map(values, function(value) {
return func({ 'a': value }, path);
});
assert.deepEqual(actual, expected);
});
});
QUnit.test('`_.' + methodName + '` should return `false` with deep paths when `object` is nullish', function(assert) {
assert.expect(2);