mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-01 07:47:49 +00:00
Add bad shim tests for String#contains and remove those for Function#bind as we don't use native bind.
This commit is contained in:
@@ -29,9 +29,6 @@
|
||||
Date._now = Date.now;
|
||||
Date.now = function() {};
|
||||
|
||||
Function.prototype._bind = Function.prototype.bind;
|
||||
Function.prototype.bind = function() { return function() {}; };
|
||||
|
||||
Object._create = Object.create;
|
||||
Object.create = function() {};
|
||||
|
||||
@@ -44,6 +41,9 @@
|
||||
Object._keys = Object.keys;
|
||||
Object.keys = function() {};
|
||||
|
||||
String.prototype._contains = String.prototype.contains;
|
||||
String.prototype.contains = function() {};
|
||||
|
||||
window.WinRTError = Error;
|
||||
|
||||
document._createDocumentFragment = document.createDocumentFragment;
|
||||
@@ -61,11 +61,6 @@
|
||||
} else {
|
||||
delete Date.now;
|
||||
}
|
||||
if (Function.prototype._bind) {
|
||||
Function.prototype.bind = Function.prototype._bind;
|
||||
} else {
|
||||
delete Function.prototype.bind;
|
||||
}
|
||||
if (Object._create) {
|
||||
Object.create = Object._create;
|
||||
} else {
|
||||
@@ -86,6 +81,11 @@
|
||||
} else {
|
||||
delete Object.keys;
|
||||
}
|
||||
if (String.prototype._contains) {
|
||||
String.prototype.contains = String.prototype._contains;
|
||||
} else {
|
||||
delete String.prototype.contains;
|
||||
}
|
||||
window.WinRTError = undefined;
|
||||
|
||||
document.createDocumentFragment = document._createDocumentFragment;
|
||||
@@ -93,12 +93,12 @@
|
||||
|
||||
delete Array._isArray;
|
||||
delete Date._now;
|
||||
delete Function.prototype._bind;
|
||||
delete Function.prototype._method;
|
||||
delete Object._create;
|
||||
delete Object._defineProperty;
|
||||
delete Object._getPrototypeOf;
|
||||
delete Object._keys;
|
||||
delete String.prototype._contains;
|
||||
}
|
||||
|
||||
addBizarroMethods();
|
||||
|
||||
27
test/test.js
27
test/test.js
@@ -249,9 +249,6 @@
|
||||
var _now = Date.now;
|
||||
Date.now = function() {};
|
||||
|
||||
var _bind = Function.prototype.bind;
|
||||
Function.prototype.bind = function() { return function() {}; };
|
||||
|
||||
var _create = Object.create;
|
||||
Object.create = function() {};
|
||||
|
||||
@@ -264,18 +261,25 @@
|
||||
var _keys = Object.keys;
|
||||
Object.keys = function() {};
|
||||
|
||||
var _contains = String.prototype.contains;
|
||||
String.prototype.contains = function() {};
|
||||
|
||||
// load Lo-Dash and expose it to the bad extensions/shims
|
||||
lodashBizarro = (lodashBizarro = require(filePath))._ || lodashBizarro;
|
||||
|
||||
// restore native methods
|
||||
Array.isArray = _isArray;
|
||||
Date.now = _now;
|
||||
Function.prototype.bind = _bind;
|
||||
Object.create = _create;
|
||||
Object.defineProperty = _defineProperty;
|
||||
Object.getPrototypeOf = _getPrototypeOf;
|
||||
Object.keys = _keys;
|
||||
|
||||
if (String.prototype._contains) {
|
||||
String.prototype.contains = String.prototype._contains;
|
||||
} else {
|
||||
delete String.prototype.contains;
|
||||
}
|
||||
delete global.window;
|
||||
delete global.WinRTError;
|
||||
delete Function.prototype._method;
|
||||
@@ -384,7 +388,7 @@
|
||||
}
|
||||
});
|
||||
|
||||
test('should avoid overwritten native methods', 7, function() {
|
||||
test('should avoid overwritten native methods', 8, function() {
|
||||
function Foo() {}
|
||||
|
||||
function message(methodName) {
|
||||
@@ -416,11 +420,11 @@
|
||||
deepEqual(actual[1], {}, message('Object.create'));
|
||||
|
||||
try {
|
||||
var actual = lodashBizarro.bind(function() { return this.a; }, object)();
|
||||
var actual = lodashBizarro.bind(function() { return this.a; }, object);
|
||||
} catch(e) {
|
||||
actual = null;
|
||||
}
|
||||
ok(actual, message('Object.defineProperty'));
|
||||
equal('__bindData__' in actual, false, message('Object.defineProperty'));
|
||||
|
||||
try {
|
||||
actual = [lodashBizarro.isPlainObject({}), lodashBizarro.isPlainObject([])];
|
||||
@@ -435,9 +439,16 @@
|
||||
actual = null;
|
||||
}
|
||||
deepEqual(actual, [['a'], []], message('Object.keys'));
|
||||
|
||||
try {
|
||||
actual = lodashBizarro.contains('abc', 'bc');
|
||||
} catch(e) {
|
||||
actual = null;
|
||||
}
|
||||
strictEqual(actual, true, message('String#contains'));
|
||||
}
|
||||
else {
|
||||
skipTest(7);
|
||||
skipTest(8);
|
||||
}
|
||||
});
|
||||
}());
|
||||
|
||||
Reference in New Issue
Block a user