diff --git a/test/index.html b/test/index.html
index 4e6169c4a..0f22d3895 100644
--- a/test/index.html
+++ b/test/index.html
@@ -106,9 +106,12 @@
setProperty(Map, 'toString', createToString('Map'));
}
- setProperty(Object, '_create', window.create);
+ setProperty(Object, '_create', Object.create);
setProperty(Object, 'create', noop);
+ setProperty(Object, '_getOwnPropertySymbols', Object.getOwnPropertySymbols);
+ setProperty(Object, 'getOwnPropertySymbols', undefined);
+
setProperty(window, '_Set', window.Set);
setProperty(window, 'Set', noop);
@@ -133,6 +136,11 @@
} else {
delete Object.create;
}
+ if (Object._getOwnPropertySymbols) {
+ Object.getOwnPropertySymbols = Object._getOwnPropertySymbols;
+ } else {
+ delete Object.getOwnPropertySymbols;
+ }
if (_Map) {
Map = _Map;
} else {
@@ -163,6 +171,7 @@
delete funcProto._method;
delete objectProto._propertyIsEnumerable;
delete Object._create;
+ delete Object._getOwnPropertySymbols;
}
// Load lodash to expose it to the bad extensions/shims.
diff --git a/test/test.js b/test/test.js
index daf23682a..1d8b20c88 100644
--- a/test/test.js
+++ b/test/test.js
@@ -421,6 +421,10 @@
setProperty(root.Map, 'toString', createToString('Map'));
}
setProperty(Object, 'create', noop);
+
+ var _getOwnPropertySymbols = Object.getOwnPropertySymbols;
+ setProperty(Object, 'getOwnPropertySymbols', undefined);
+
setProperty(root, 'Set', noop);
setProperty(root, 'WeakMap', noop);
@@ -435,6 +439,11 @@
root._ = oldDash;
// Restore built-in methods.
+ if (_getOwnPropertySymbols) {
+ Object.getOwnPropertySymbols = _getOwnPropertySymbols;
+ } else {
+ delete Object.getOwnPropertySymbols;
+ }
if (Map) {
setProperty(root, 'Map', Map);
} else {
@@ -652,7 +661,7 @@
});
QUnit.test('should avoid overwritten native methods', function(assert) {
- assert.expect(4);
+ assert.expect(5);
function message(lodashMethod, nativeMethod) {
return '`' + lodashMethod + '` should avoid overwritten native `' + nativeMethod + '`';
@@ -686,6 +695,19 @@
label = message('_.difference`, `_.intersection`, and `_.uniq', 'Object.create` and `Map');
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 {
var map = new lodashBizarro.memoize.Cache;
actual = map.set('a', 1).get('a');
@@ -708,7 +730,7 @@
assert.deepEqual(actual, [], label);
}
else {
- skipTest(assert, 4);
+ skipTest(assert, 5);
}
});
}());