Update checked-in dependencies
This commit is contained in:
parent
5d6442e87d
commit
026e833827
36 changed files with 1972 additions and 643 deletions
112
node_modules/sinon/lib/sinon/sandbox.js
generated
vendored
112
node_modules/sinon/lib/sinon/sandbox.js
generated
vendored
|
|
@ -35,6 +35,40 @@ function applyOnEach(fakes, method) {
|
|||
});
|
||||
}
|
||||
|
||||
function throwOnAccessors(descriptor) {
|
||||
if (typeof descriptor.get === "function") {
|
||||
throw new Error("Use sandbox.replaceGetter for replacing getters");
|
||||
}
|
||||
|
||||
if (typeof descriptor.set === "function") {
|
||||
throw new Error("Use sandbox.replaceSetter for replacing setters");
|
||||
}
|
||||
}
|
||||
|
||||
function verifySameType(object, property, replacement) {
|
||||
if (typeof object[property] !== typeof replacement) {
|
||||
throw new TypeError(
|
||||
`Cannot replace ${typeof object[
|
||||
property
|
||||
]} with ${typeof replacement}`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function checkForValidArguments(descriptor, property, replacement) {
|
||||
if (typeof descriptor === "undefined") {
|
||||
throw new TypeError(
|
||||
`Cannot replace non-existent property ${valueToString(
|
||||
property
|
||||
)}. Perhaps you meant sandbox.define()?`
|
||||
);
|
||||
}
|
||||
|
||||
if (typeof replacement === "undefined") {
|
||||
throw new TypeError("Expected replacement argument to be defined");
|
||||
}
|
||||
}
|
||||
|
||||
function Sandbox() {
|
||||
const sandbox = this;
|
||||
let fakeRestorers = [];
|
||||
|
|
@ -66,11 +100,6 @@ function Sandbox() {
|
|||
return collection;
|
||||
};
|
||||
|
||||
// this is for testing only
|
||||
sandbox.getRestorers = function () {
|
||||
return fakeRestorers;
|
||||
};
|
||||
|
||||
sandbox.createStubInstance = function createStubInstance() {
|
||||
const stubbed = sinonCreateStubInstance.apply(null, arguments);
|
||||
|
||||
|
|
@ -196,11 +225,22 @@ function Sandbox() {
|
|||
sandbox.injectedKeys.length = 0;
|
||||
};
|
||||
|
||||
function getFakeRestorer(object, property) {
|
||||
/**
|
||||
* Creates a restorer function for the property
|
||||
*
|
||||
* @param {object|Function} object
|
||||
* @param {string} property
|
||||
* @param {boolean} forceAssignment
|
||||
* @returns {Function} restorer function
|
||||
*/
|
||||
function getFakeRestorer(object, property, forceAssignment = false) {
|
||||
const descriptor = getPropertyDescriptor(object, property);
|
||||
const value = object[property];
|
||||
|
||||
function restorer() {
|
||||
if (descriptor?.isOwn) {
|
||||
if (forceAssignment) {
|
||||
object[property] = value;
|
||||
} else if (descriptor?.isOwn) {
|
||||
Object.defineProperty(object, property, descriptor);
|
||||
} else {
|
||||
delete object[property];
|
||||
|
|
@ -225,36 +265,19 @@ function Sandbox() {
|
|||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Replace an existing property
|
||||
*
|
||||
* @param {object|Function} object
|
||||
* @param {string} property
|
||||
* @param {*} replacement a fake, stub, spy or any other value
|
||||
* @returns {*}
|
||||
*/
|
||||
sandbox.replace = function replace(object, property, replacement) {
|
||||
const descriptor = getPropertyDescriptor(object, property);
|
||||
|
||||
if (typeof descriptor === "undefined") {
|
||||
throw new TypeError(
|
||||
`Cannot replace non-existent property ${valueToString(
|
||||
property
|
||||
)}. Perhaps you meant sandbox.define()?`
|
||||
);
|
||||
}
|
||||
|
||||
if (typeof replacement === "undefined") {
|
||||
throw new TypeError("Expected replacement argument to be defined");
|
||||
}
|
||||
|
||||
if (typeof descriptor.get === "function") {
|
||||
throw new Error("Use sandbox.replaceGetter for replacing getters");
|
||||
}
|
||||
|
||||
if (typeof descriptor.set === "function") {
|
||||
throw new Error("Use sandbox.replaceSetter for replacing setters");
|
||||
}
|
||||
|
||||
if (typeof object[property] !== typeof replacement) {
|
||||
throw new TypeError(
|
||||
`Cannot replace ${typeof object[
|
||||
property
|
||||
]} with ${typeof replacement}`
|
||||
);
|
||||
}
|
||||
checkForValidArguments(descriptor, property, replacement);
|
||||
throwOnAccessors(descriptor);
|
||||
verifySameType(object, property, replacement);
|
||||
|
||||
verifyNotReplaced(object, property);
|
||||
|
||||
|
|
@ -266,6 +289,25 @@ function Sandbox() {
|
|||
return replacement;
|
||||
};
|
||||
|
||||
sandbox.replace.usingAccessor = function replaceUsingAccessor(
|
||||
object,
|
||||
property,
|
||||
replacement
|
||||
) {
|
||||
const descriptor = getPropertyDescriptor(object, property);
|
||||
checkForValidArguments(descriptor, property, replacement);
|
||||
verifySameType(object, property, replacement);
|
||||
|
||||
verifyNotReplaced(object, property);
|
||||
|
||||
// store a function for restoring the replaced property
|
||||
push(fakeRestorers, getFakeRestorer(object, property, true));
|
||||
|
||||
object[property] = replacement;
|
||||
|
||||
return replacement;
|
||||
};
|
||||
|
||||
sandbox.define = function define(object, property, value) {
|
||||
const descriptor = getPropertyDescriptor(object, property);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue