mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-10 10:57:49 +00:00
Add bizarro tests for Object.getOwnPropertySymbols.
This commit is contained in:
@@ -106,9 +106,12 @@
|
|||||||
|
|
||||||
setProperty(Map, 'toString', createToString('Map'));
|
setProperty(Map, 'toString', createToString('Map'));
|
||||||
}
|
}
|
||||||
setProperty(Object, '_create', window.create);
|
setProperty(Object, '_create', Object.create);
|
||||||
setProperty(Object, 'create', noop);
|
setProperty(Object, 'create', noop);
|
||||||
|
|
||||||
|
setProperty(Object, '_getOwnPropertySymbols', Object.getOwnPropertySymbols);
|
||||||
|
setProperty(Object, 'getOwnPropertySymbols', undefined);
|
||||||
|
|
||||||
setProperty(window, '_Set', window.Set);
|
setProperty(window, '_Set', window.Set);
|
||||||
setProperty(window, 'Set', noop);
|
setProperty(window, 'Set', noop);
|
||||||
|
|
||||||
@@ -133,6 +136,11 @@
|
|||||||
} else {
|
} else {
|
||||||
delete Object.create;
|
delete Object.create;
|
||||||
}
|
}
|
||||||
|
if (Object._getOwnPropertySymbols) {
|
||||||
|
Object.getOwnPropertySymbols = Object._getOwnPropertySymbols;
|
||||||
|
} else {
|
||||||
|
delete Object.getOwnPropertySymbols;
|
||||||
|
}
|
||||||
if (_Map) {
|
if (_Map) {
|
||||||
Map = _Map;
|
Map = _Map;
|
||||||
} else {
|
} else {
|
||||||
@@ -163,6 +171,7 @@
|
|||||||
delete funcProto._method;
|
delete funcProto._method;
|
||||||
delete objectProto._propertyIsEnumerable;
|
delete objectProto._propertyIsEnumerable;
|
||||||
delete Object._create;
|
delete Object._create;
|
||||||
|
delete Object._getOwnPropertySymbols;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load lodash to expose it to the bad extensions/shims.
|
// Load lodash to expose it to the bad extensions/shims.
|
||||||
|
|||||||
26
test/test.js
26
test/test.js
@@ -421,6 +421,10 @@
|
|||||||
setProperty(root.Map, 'toString', createToString('Map'));
|
setProperty(root.Map, 'toString', createToString('Map'));
|
||||||
}
|
}
|
||||||
setProperty(Object, 'create', noop);
|
setProperty(Object, 'create', noop);
|
||||||
|
|
||||||
|
var _getOwnPropertySymbols = Object.getOwnPropertySymbols;
|
||||||
|
setProperty(Object, 'getOwnPropertySymbols', undefined);
|
||||||
|
|
||||||
setProperty(root, 'Set', noop);
|
setProperty(root, 'Set', noop);
|
||||||
setProperty(root, 'WeakMap', noop);
|
setProperty(root, 'WeakMap', noop);
|
||||||
|
|
||||||
@@ -435,6 +439,11 @@
|
|||||||
root._ = oldDash;
|
root._ = oldDash;
|
||||||
|
|
||||||
// Restore built-in methods.
|
// Restore built-in methods.
|
||||||
|
if (_getOwnPropertySymbols) {
|
||||||
|
Object.getOwnPropertySymbols = _getOwnPropertySymbols;
|
||||||
|
} else {
|
||||||
|
delete Object.getOwnPropertySymbols;
|
||||||
|
}
|
||||||
if (Map) {
|
if (Map) {
|
||||||
setProperty(root, 'Map', Map);
|
setProperty(root, 'Map', Map);
|
||||||
} else {
|
} else {
|
||||||
@@ -652,7 +661,7 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
QUnit.test('should avoid overwritten native methods', function(assert) {
|
QUnit.test('should avoid overwritten native methods', function(assert) {
|
||||||
assert.expect(4);
|
assert.expect(5);
|
||||||
|
|
||||||
function message(lodashMethod, nativeMethod) {
|
function message(lodashMethod, nativeMethod) {
|
||||||
return '`' + lodashMethod + '` should avoid overwritten native `' + nativeMethod + '`';
|
return '`' + lodashMethod + '` should avoid overwritten native `' + nativeMethod + '`';
|
||||||
@@ -686,6 +695,19 @@
|
|||||||
label = message('_.difference`, `_.intersection`, and `_.uniq', 'Object.create` and `Map');
|
label = message('_.difference`, `_.intersection`, and `_.uniq', 'Object.create` and `Map');
|
||||||
assert.deepEqual(actual, [[otherObject], [object], [object]], label);
|
assert.deepEqual(actual, [[otherObject], [object], [object]], label);
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (Symbol) {
|
||||||
|
object[Symbol()] = {};
|
||||||
|
}
|
||||||
|
actual = [
|
||||||
|
lodashBizarro.clone(object),
|
||||||
|
lodashBizarro.cloneDeep(object)
|
||||||
|
];
|
||||||
|
} catch (e) {
|
||||||
|
actual = null;
|
||||||
|
}
|
||||||
|
assert.deepEqual(actual, [object, object], 'Object.getOwnPropertySymbols');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
var map = new lodashBizarro.memoize.Cache;
|
var map = new lodashBizarro.memoize.Cache;
|
||||||
actual = map.set('a', 1).get('a');
|
actual = map.set('a', 1).get('a');
|
||||||
@@ -708,7 +730,7 @@
|
|||||||
assert.deepEqual(actual, [], label);
|
assert.deepEqual(actual, [], label);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
skipTest(assert, 4);
|
skipTest(assert, 5);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}());
|
}());
|
||||||
|
|||||||
Reference in New Issue
Block a user