added unit testing, and started implementing unit tests...phew
This commit is contained in:
21
node_modules/@sinonjs/commons/.editorconfig
generated
vendored
Normal file
21
node_modules/@sinonjs/commons/.editorconfig
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
; EditorConfig file: http://EditorConfig.org
|
||||
; Install the "EditorConfig" plugin into your editor to use
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
# Matches the exact files either package.json or .travis.yml
|
||||
[{package.json, .travis.yml}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
; Needed if doing `git add --patch` to edit patches
|
||||
[*.diff]
|
||||
trim_trailing_whitespace = false
|
1
node_modules/@sinonjs/commons/.eslintignore
generated
vendored
Normal file
1
node_modules/@sinonjs/commons/.eslintignore
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
coverage/*
|
53
node_modules/@sinonjs/commons/.eslintrc.yaml
generated
vendored
Normal file
53
node_modules/@sinonjs/commons/.eslintrc.yaml
generated
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
extends:
|
||||
- sinon
|
||||
- 'plugin:prettier/recommended'
|
||||
|
||||
env:
|
||||
browser: true
|
||||
node: true
|
||||
|
||||
globals:
|
||||
ArrayBuffer: false
|
||||
Map: false
|
||||
Promise: false
|
||||
Set: false
|
||||
Symbol: false
|
||||
|
||||
plugins:
|
||||
- ie11
|
||||
- local-rules
|
||||
|
||||
rules:
|
||||
strict: [error, 'global']
|
||||
# authors are expected to understand function hoisting
|
||||
no-use-before-define: off
|
||||
|
||||
ie11/no-collection-args: error
|
||||
ie11/no-for-in-const: error
|
||||
ie11/no-loop-func: warn
|
||||
ie11/no-weak-collections: error
|
||||
local-rules/no-prototype-methods: error
|
||||
|
||||
overrides:
|
||||
files: '*.test.*'
|
||||
plugins:
|
||||
- mocha
|
||||
env:
|
||||
mocha: true
|
||||
rules:
|
||||
max-nested-callbacks:
|
||||
- warn
|
||||
- 6
|
||||
mocha/handle-done-callback: error
|
||||
mocha/no-exclusive-tests: error
|
||||
mocha/no-global-tests: error
|
||||
mocha/no-hooks-for-single-case: off
|
||||
mocha/no-identical-title: error
|
||||
mocha/no-mocha-arrows: error
|
||||
mocha/no-nested-tests: error
|
||||
mocha/no-return-and-callback: error
|
||||
mocha/no-sibling-hooks: error
|
||||
mocha/no-skipped-tests: error
|
||||
mocha/no-top-level-hooks: error
|
||||
local-rules/no-prototype-methods: off
|
||||
|
3
node_modules/@sinonjs/commons/.prettierrc
generated
vendored
Normal file
3
node_modules/@sinonjs/commons/.prettierrc
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"tabWidth": 4
|
||||
}
|
33
node_modules/@sinonjs/commons/.travis.yml
generated
vendored
Normal file
33
node_modules/@sinonjs/commons/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
language: node_js
|
||||
|
||||
sudo: false
|
||||
|
||||
node_js:
|
||||
# https://github.com/nodejs/LTS
|
||||
- "6" # ends April 2019
|
||||
- "8" # ends December 2019
|
||||
- "10" # ends April 2021
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- node_modules
|
||||
|
||||
env:
|
||||
- HUSKY_SKIP_INSTALL=true
|
||||
|
||||
before_script:
|
||||
- npm install coveralls
|
||||
|
||||
# Make npm run work for the script phase:
|
||||
- if [ "x$TRAVIS_NODE_VERSION" = "x6" ]; then npm config set ignore-scripts false; fi
|
||||
# these build targets only need to run once per build, so let's conserve a few resources
|
||||
- if [ "x$TRAVIS_NODE_VERSION" = "x10" ]; then npm run lint; fi
|
||||
|
||||
script:
|
||||
- npm run test-check-coverage
|
||||
|
||||
after_success:
|
||||
- if [ "x$TRAVIS_NODE_VERSION" = "x10" ]; then cat ./coverage/lcov.info | coveralls lib; fi
|
||||
|
||||
git:
|
||||
depth: 3
|
29
node_modules/@sinonjs/commons/LICENSE
generated
vendored
Normal file
29
node_modules/@sinonjs/commons/LICENSE
generated
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
BSD 3-Clause License
|
||||
|
||||
Copyright (c) 2018, Sinon.JS
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
14
node_modules/@sinonjs/commons/README.md
generated
vendored
Normal file
14
node_modules/@sinonjs/commons/README.md
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
# commons
|
||||
|
||||
[](http://travis-ci.org/sinonjs/commons) [](https://coveralls.io/github/sinonjs/commons?branch=master)
|
||||
|
||||
Simple functions shared among the sinon end user libraries
|
||||
|
||||
## Rules
|
||||
|
||||
* Follows the [Sinon.JS compatibility](https://github.com/sinonjs/sinon/blob/master/CONTRIBUTING.md#compatibility)
|
||||
* 100% test coverage
|
||||
* Code formatted using [Prettier](https://prettier.io)
|
||||
* No side effects welcome! (only pure functions)
|
||||
* No platform specific functions
|
||||
* One export per file (any bundler can do tree shaking)
|
79
node_modules/@sinonjs/commons/eslint-local-rules.js
generated
vendored
Normal file
79
node_modules/@sinonjs/commons/eslint-local-rules.js
generated
vendored
Normal file
@ -0,0 +1,79 @@
|
||||
"use strict";
|
||||
|
||||
function getPrototypeMethods(prototype) {
|
||||
/* eslint-disable local-rules/no-prototype-methods */
|
||||
return Object.getOwnPropertyNames(prototype).filter(function(name) {
|
||||
return (
|
||||
typeof prototype[name] === "function" &&
|
||||
prototype.hasOwnProperty(name)
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
var DISALLOWED_ARRAY_PROPS = getPrototypeMethods(Array.prototype);
|
||||
|
||||
var DISALLOWED_OBJECT_PROPS = getPrototypeMethods(Object.prototype);
|
||||
|
||||
module.exports = {
|
||||
// rule to disallow direct use of prototype methods of builtins
|
||||
"no-prototype-methods": {
|
||||
meta: {
|
||||
docs: {
|
||||
description: "disallow calling prototype methods directly",
|
||||
category: "Possible Errors",
|
||||
recommended: false,
|
||||
url: "https://eslint.org/docs/rules/no-prototype-builtins"
|
||||
},
|
||||
|
||||
schema: []
|
||||
},
|
||||
|
||||
create: function(context) {
|
||||
/**
|
||||
* Reports if a disallowed property is used in a CallExpression
|
||||
* @param {ASTNode} node The CallExpression node.
|
||||
* @returns {void}
|
||||
*/
|
||||
function disallowBuiltIns(node) {
|
||||
if (
|
||||
node.callee.type !== "MemberExpression" ||
|
||||
node.callee.computed ||
|
||||
// allow static method calls
|
||||
node.callee.object.name === "Array" ||
|
||||
node.callee.object.name === "Object"
|
||||
) {
|
||||
return;
|
||||
}
|
||||
var propName = node.callee.property.name;
|
||||
|
||||
if (DISALLOWED_OBJECT_PROPS.indexOf(propName) > -1) {
|
||||
context.report({
|
||||
message:
|
||||
"Do not access {{obj}} prototype method '{{prop}}' from target object.",
|
||||
loc: node.callee.property.loc.start,
|
||||
data: {
|
||||
obj: "Object",
|
||||
prop: propName
|
||||
},
|
||||
node: node
|
||||
});
|
||||
} else if (DISALLOWED_ARRAY_PROPS.indexOf(propName) > -1) {
|
||||
context.report({
|
||||
message:
|
||||
"Do not access {{obj}} prototype method '{{prop}}' from target object.",
|
||||
loc: node.callee.property.loc.start,
|
||||
data: {
|
||||
obj: "Array",
|
||||
prop: propName
|
||||
},
|
||||
node: node
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
CallExpression: disallowBuiltIns
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
34
node_modules/@sinonjs/commons/lib/called-in-order.js
generated
vendored
Normal file
34
node_modules/@sinonjs/commons/lib/called-in-order.js
generated
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
"use strict";
|
||||
|
||||
var every = require("./prototypes/array").every;
|
||||
|
||||
function hasCallsLeft(callMap, spy) {
|
||||
if (callMap[spy.id] === undefined) {
|
||||
callMap[spy.id] = 0;
|
||||
}
|
||||
|
||||
return callMap[spy.id] < spy.callCount;
|
||||
}
|
||||
|
||||
function checkAdjacentCalls(callMap, spy, index, spies) {
|
||||
var calledBeforeNext = true;
|
||||
|
||||
if (index !== spies.length - 1) {
|
||||
calledBeforeNext = spy.calledBefore(spies[index + 1]);
|
||||
}
|
||||
|
||||
if (hasCallsLeft(callMap, spy) && calledBeforeNext) {
|
||||
callMap[spy.id] += 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
module.exports = function calledInOrder(spies) {
|
||||
var callMap = {};
|
||||
// eslint-disable-next-line no-underscore-dangle
|
||||
var _spies = arguments.length > 1 ? arguments : spies;
|
||||
|
||||
return every(_spies, checkAdjacentCalls.bind(null, callMap));
|
||||
};
|
121
node_modules/@sinonjs/commons/lib/called-in-order.test.js
generated
vendored
Normal file
121
node_modules/@sinonjs/commons/lib/called-in-order.test.js
generated
vendored
Normal file
@ -0,0 +1,121 @@
|
||||
"use strict";
|
||||
|
||||
var assert = require("@sinonjs/referee-sinon").assert;
|
||||
var calledInOrder = require("./called-in-order");
|
||||
var sinon = require("@sinonjs/referee-sinon").sinon;
|
||||
|
||||
var testObject1 = {
|
||||
someFunction: function() {
|
||||
return;
|
||||
}
|
||||
};
|
||||
var testObject2 = {
|
||||
otherFunction: function() {
|
||||
return;
|
||||
}
|
||||
};
|
||||
var testObject3 = {
|
||||
thirdFunction: function() {
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
function testMethod() {
|
||||
testObject1.someFunction();
|
||||
testObject2.otherFunction();
|
||||
testObject2.otherFunction();
|
||||
testObject2.otherFunction();
|
||||
testObject3.thirdFunction();
|
||||
}
|
||||
|
||||
describe("calledInOrder", function() {
|
||||
beforeEach(function() {
|
||||
sinon.stub(testObject1, "someFunction");
|
||||
sinon.stub(testObject2, "otherFunction");
|
||||
sinon.stub(testObject3, "thirdFunction");
|
||||
testMethod();
|
||||
});
|
||||
afterEach(function() {
|
||||
testObject1.someFunction.restore();
|
||||
testObject2.otherFunction.restore();
|
||||
testObject3.thirdFunction.restore();
|
||||
});
|
||||
|
||||
describe("given single array argument", function() {
|
||||
describe("when stubs were called in expected order", function() {
|
||||
it("returns true", function() {
|
||||
assert.isTrue(
|
||||
calledInOrder([
|
||||
testObject1.someFunction,
|
||||
testObject2.otherFunction
|
||||
])
|
||||
);
|
||||
assert.isTrue(
|
||||
calledInOrder([
|
||||
testObject1.someFunction,
|
||||
testObject2.otherFunction,
|
||||
testObject2.otherFunction,
|
||||
testObject3.thirdFunction
|
||||
])
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe("when stubs were called in unexpected order", function() {
|
||||
it("returns false", function() {
|
||||
assert.isFalse(
|
||||
calledInOrder([
|
||||
testObject2.otherFunction,
|
||||
testObject1.someFunction
|
||||
])
|
||||
);
|
||||
assert.isFalse(
|
||||
calledInOrder([
|
||||
testObject2.otherFunction,
|
||||
testObject1.someFunction,
|
||||
testObject1.someFunction,
|
||||
testObject3.thirdFunction
|
||||
])
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe("given multiple arguments", function() {
|
||||
describe("when stubs were called in expected order", function() {
|
||||
it("returns true", function() {
|
||||
assert.isTrue(
|
||||
calledInOrder(
|
||||
testObject1.someFunction,
|
||||
testObject2.otherFunction
|
||||
)
|
||||
);
|
||||
assert.isTrue(
|
||||
calledInOrder(
|
||||
testObject1.someFunction,
|
||||
testObject2.otherFunction,
|
||||
testObject3.thirdFunction
|
||||
)
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe("when stubs were called in unexpected order", function() {
|
||||
it("returns false", function() {
|
||||
assert.isFalse(
|
||||
calledInOrder(
|
||||
testObject2.otherFunction,
|
||||
testObject1.someFunction
|
||||
)
|
||||
);
|
||||
assert.isFalse(
|
||||
calledInOrder(
|
||||
testObject2.otherFunction,
|
||||
testObject1.someFunction,
|
||||
testObject3.thirdFunction
|
||||
)
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
19
node_modules/@sinonjs/commons/lib/class-name.js
generated
vendored
Normal file
19
node_modules/@sinonjs/commons/lib/class-name.js
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
"use strict";
|
||||
|
||||
var functionName = require("./function-name");
|
||||
|
||||
module.exports = function className(value) {
|
||||
return (
|
||||
(value.constructor && value.constructor.name) ||
|
||||
// The next branch is for IE11 support only:
|
||||
// Because the name property is not set on the prototype
|
||||
// of the Function object, we finally try to grab the
|
||||
// name from its definition. This will never be reached
|
||||
// in node, so we are not able to test this properly.
|
||||
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name
|
||||
(typeof value.constructor === "function" &&
|
||||
/* istanbul ignore next */
|
||||
functionName(value.constructor)) ||
|
||||
null
|
||||
);
|
||||
};
|
37
node_modules/@sinonjs/commons/lib/class-name.test.js
generated
vendored
Normal file
37
node_modules/@sinonjs/commons/lib/class-name.test.js
generated
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
"use strict";
|
||||
/* eslint-disable no-empty-function */
|
||||
|
||||
var assert = require("@sinonjs/referee").assert;
|
||||
var className = require("./class-name");
|
||||
|
||||
describe("className", function() {
|
||||
it("returns the class name of an instance", function() {
|
||||
// Because eslint-config-sinon disables es6, we can't
|
||||
// use a class definition here
|
||||
// https://github.com/sinonjs/eslint-config-sinon/blob/master/index.js
|
||||
// var instance = new (class TestClass {})();
|
||||
var instance = new function TestClass() {}();
|
||||
var name = className(instance);
|
||||
assert.equals(name, "TestClass");
|
||||
});
|
||||
|
||||
it("returns 'Object' for {}", function() {
|
||||
var name = className({});
|
||||
assert.equals(name, "Object");
|
||||
});
|
||||
|
||||
it("returns null for an object that has no prototype", function() {
|
||||
var obj = Object.create(null);
|
||||
var name = className(obj);
|
||||
assert.equals(name, null);
|
||||
});
|
||||
|
||||
it("returns null for an object whose prototype was mangled", function() {
|
||||
// This is what Node v6 and v7 do for objects returned by querystring.parse()
|
||||
function MangledObject() {}
|
||||
MangledObject.prototype = Object.create(null);
|
||||
var obj = new MangledObject();
|
||||
var name = className(obj);
|
||||
assert.equals(name, null);
|
||||
});
|
||||
});
|
40
node_modules/@sinonjs/commons/lib/deprecated.js
generated
vendored
Normal file
40
node_modules/@sinonjs/commons/lib/deprecated.js
generated
vendored
Normal file
@ -0,0 +1,40 @@
|
||||
/* eslint-disable no-console */
|
||||
"use strict";
|
||||
|
||||
// wrap returns a function that will invoke the supplied function and print a deprecation warning to the console each
|
||||
// time it is called.
|
||||
exports.wrap = function(func, msg) {
|
||||
var wrapped = function() {
|
||||
exports.printWarning(msg);
|
||||
return func.apply(this, arguments);
|
||||
};
|
||||
if (func.prototype) {
|
||||
wrapped.prototype = func.prototype;
|
||||
}
|
||||
return wrapped;
|
||||
};
|
||||
|
||||
// defaultMsg returns a string which can be supplied to `wrap()` to notify the user that a particular part of the
|
||||
// sinon API has been deprecated.
|
||||
exports.defaultMsg = function(packageName, funcName) {
|
||||
return (
|
||||
packageName +
|
||||
"." +
|
||||
funcName +
|
||||
" is deprecated and will be removed from the public API in a future version of " +
|
||||
packageName +
|
||||
"."
|
||||
);
|
||||
};
|
||||
|
||||
exports.printWarning = function(msg) {
|
||||
// Watch out for IE7 and below! :(
|
||||
/* istanbul ignore next */
|
||||
if (typeof console !== "undefined") {
|
||||
if (console.info) {
|
||||
console.info(msg);
|
||||
} else {
|
||||
console.log(msg);
|
||||
}
|
||||
}
|
||||
};
|
86
node_modules/@sinonjs/commons/lib/deprecated.test.js
generated
vendored
Normal file
86
node_modules/@sinonjs/commons/lib/deprecated.test.js
generated
vendored
Normal file
@ -0,0 +1,86 @@
|
||||
/* eslint-disable no-console */
|
||||
"use strict";
|
||||
|
||||
var assert = require("@sinonjs/referee-sinon").assert;
|
||||
var sinon = require("@sinonjs/referee-sinon").sinon;
|
||||
|
||||
var deprecated = require("./deprecated");
|
||||
|
||||
var msg = "test";
|
||||
|
||||
describe("deprecated", function() {
|
||||
describe("defaultMsg", function() {
|
||||
it("should return a string", function() {
|
||||
assert.equals(
|
||||
deprecated.defaultMsg("sinon", "someFunc"),
|
||||
"sinon.someFunc is deprecated and will be removed from the public API in a future version of sinon."
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe("printWarning", function() {
|
||||
describe("when `console` is defined", function() {
|
||||
beforeEach(function() {
|
||||
sinon.replace(console, "info", sinon.fake());
|
||||
sinon.replace(console, "log", sinon.fake());
|
||||
});
|
||||
|
||||
afterEach(sinon.restore);
|
||||
|
||||
describe("when `console.info` is defined", function() {
|
||||
it("shoudl call `console.info` with a message", function() {
|
||||
deprecated.printWarning(msg);
|
||||
assert.calledOnceWith(console.info, msg);
|
||||
});
|
||||
});
|
||||
|
||||
describe("when `console.info` is undefined", function() {
|
||||
it("should call `console.log` with a message", function() {
|
||||
console.info = undefined;
|
||||
deprecated.printWarning(msg);
|
||||
assert.calledOnceWith(console.log, msg);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe("wrap", function() {
|
||||
var method = sinon.fake();
|
||||
var wrapped;
|
||||
|
||||
beforeEach(function() {
|
||||
wrapped = deprecated.wrap(method, msg);
|
||||
});
|
||||
|
||||
it("should return a wrapper function", function() {
|
||||
assert.match(wrapped, sinon.match.func);
|
||||
});
|
||||
|
||||
it("should assign the prototype of the passed method", function() {
|
||||
assert.equals(method.prototype, wrapped.prototype);
|
||||
});
|
||||
|
||||
context("when the passed method has falsy prototype", function() {
|
||||
it("should not be assigned to the wrapped method", function() {
|
||||
method.prototype = null;
|
||||
wrapped = deprecated.wrap(method, msg);
|
||||
assert.match(wrapped.prototype, sinon.match.object);
|
||||
});
|
||||
});
|
||||
|
||||
context("when invoking the wrapped function", function() {
|
||||
before(function() {
|
||||
sinon.replace(deprecated, "printWarning", sinon.fake());
|
||||
wrapped({});
|
||||
});
|
||||
|
||||
it("should call `printWarning` before invoking", function() {
|
||||
assert.calledOnceWith(deprecated.printWarning, msg);
|
||||
});
|
||||
|
||||
it("should invoke the passed method with the given arguments", function() {
|
||||
assert.calledOnceWith(method, {});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
20
node_modules/@sinonjs/commons/lib/every.js
generated
vendored
Normal file
20
node_modules/@sinonjs/commons/lib/every.js
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
"use strict";
|
||||
|
||||
// This is an `every` implementation that works for all iterables
|
||||
module.exports = function every(obj, fn) {
|
||||
var pass = true;
|
||||
|
||||
try {
|
||||
/* eslint-disable-next-line local-rules/no-prototype-methods */
|
||||
obj.forEach(function() {
|
||||
if (!fn.apply(this, arguments)) {
|
||||
// Throwing an error is the only way to break `forEach`
|
||||
throw new Error();
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
pass = false;
|
||||
}
|
||||
|
||||
return pass;
|
||||
};
|
41
node_modules/@sinonjs/commons/lib/every.test.js
generated
vendored
Normal file
41
node_modules/@sinonjs/commons/lib/every.test.js
generated
vendored
Normal file
@ -0,0 +1,41 @@
|
||||
"use strict";
|
||||
|
||||
var assert = require("@sinonjs/referee-sinon").assert;
|
||||
var sinon = require("@sinonjs/referee-sinon").sinon;
|
||||
var every = require("./every");
|
||||
|
||||
describe("util/core/every", function() {
|
||||
it("returns true when the callback function returns true for every element in an iterable", function() {
|
||||
var obj = [true, true, true, true];
|
||||
var allTrue = every(obj, function(val) {
|
||||
return val;
|
||||
});
|
||||
|
||||
assert(allTrue);
|
||||
});
|
||||
|
||||
it("returns false when the callback function returns false for any element in an iterable", function() {
|
||||
var obj = [true, true, true, false];
|
||||
var result = every(obj, function(val) {
|
||||
return val;
|
||||
});
|
||||
|
||||
assert.isFalse(result);
|
||||
});
|
||||
|
||||
it("calls the given callback once for each item in an iterable until it returns false", function() {
|
||||
var iterableOne = [true, true, true, true];
|
||||
var iterableTwo = [true, true, false, true];
|
||||
var callback = sinon.spy(function(val) {
|
||||
return val;
|
||||
});
|
||||
|
||||
every(iterableOne, callback);
|
||||
assert.equals(callback.callCount, 4);
|
||||
|
||||
callback.resetHistory();
|
||||
|
||||
every(iterableTwo, callback);
|
||||
assert.equals(callback.callCount, 3);
|
||||
});
|
||||
});
|
17
node_modules/@sinonjs/commons/lib/function-name.js
generated
vendored
Normal file
17
node_modules/@sinonjs/commons/lib/function-name.js
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
"use strict";
|
||||
|
||||
module.exports = function functionName(func) {
|
||||
if (!func) {
|
||||
return "";
|
||||
}
|
||||
|
||||
return (
|
||||
func.displayName ||
|
||||
func.name ||
|
||||
// Use function decomposition as a last resort to get function
|
||||
// name. Does not rely on function decomposition to work - if it
|
||||
// doesn't debugging will be slightly less informative
|
||||
// (i.e. toString will say 'spy' rather than 'myFunc').
|
||||
(String(func).match(/function ([^\s(]+)/) || [])[1]
|
||||
);
|
||||
};
|
55
node_modules/@sinonjs/commons/lib/function-name.test.js
generated
vendored
Normal file
55
node_modules/@sinonjs/commons/lib/function-name.test.js
generated
vendored
Normal file
@ -0,0 +1,55 @@
|
||||
"use strict";
|
||||
|
||||
var jsc = require("jsverify");
|
||||
var refute = require("@sinonjs/referee-sinon").refute;
|
||||
|
||||
var functionName = require("./function-name");
|
||||
|
||||
describe("function-name", function() {
|
||||
it("should return empty string if func is falsy", function() {
|
||||
jsc.assertForall("falsy", function(fn) {
|
||||
return functionName(fn) === "";
|
||||
});
|
||||
});
|
||||
|
||||
it("should use displayName by default", function() {
|
||||
jsc.assertForall("nestring", function(displayName) {
|
||||
var fn = { displayName: displayName };
|
||||
|
||||
return functionName(fn) === fn.displayName;
|
||||
});
|
||||
});
|
||||
|
||||
it("should use name if displayName is not available", function() {
|
||||
jsc.assertForall("nestring", function(name) {
|
||||
var fn = { name: name };
|
||||
|
||||
return functionName(fn) === fn.name;
|
||||
});
|
||||
});
|
||||
|
||||
it("should fallback to string parsing", function() {
|
||||
jsc.assertForall("nat", function(naturalNumber) {
|
||||
var name = "fn" + naturalNumber;
|
||||
var fn = {
|
||||
toString: function() {
|
||||
return "\nfunction " + name;
|
||||
}
|
||||
};
|
||||
|
||||
return functionName(fn) === name;
|
||||
});
|
||||
});
|
||||
|
||||
it("should not fail when a name cannot be found", function() {
|
||||
refute.exception(function() {
|
||||
var fn = {
|
||||
toString: function() {
|
||||
return "\nfunction (";
|
||||
}
|
||||
};
|
||||
|
||||
functionName(fn);
|
||||
});
|
||||
});
|
||||
});
|
13
node_modules/@sinonjs/commons/lib/index.js
generated
vendored
Normal file
13
node_modules/@sinonjs/commons/lib/index.js
generated
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
calledInOrder: require("./called-in-order"),
|
||||
className: require("./class-name"),
|
||||
deprecated: require("./deprecated"),
|
||||
every: require("./every"),
|
||||
functionName: require("./function-name"),
|
||||
orderByFirstCall: require("./order-by-first-call"),
|
||||
prototypes: require("./prototypes"),
|
||||
typeOf: require("./type-of"),
|
||||
valueToString: require("./value-to-string")
|
||||
};
|
29
node_modules/@sinonjs/commons/lib/index.test.js
generated
vendored
Normal file
29
node_modules/@sinonjs/commons/lib/index.test.js
generated
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
"use strict";
|
||||
|
||||
var assert = require("@sinonjs/referee-sinon").assert;
|
||||
var index = require("./index");
|
||||
|
||||
var expectedMethods = [
|
||||
"calledInOrder",
|
||||
"className",
|
||||
"every",
|
||||
"functionName",
|
||||
"orderByFirstCall",
|
||||
"typeOf",
|
||||
"valueToString"
|
||||
];
|
||||
var expectedObjectProperties = ["deprecated", "prototypes"];
|
||||
|
||||
describe("package", function() {
|
||||
expectedMethods.forEach(function(name) {
|
||||
it("should export a method named " + name, function() {
|
||||
assert.isFunction(index[name]);
|
||||
});
|
||||
});
|
||||
|
||||
expectedObjectProperties.forEach(function(name) {
|
||||
it("should export an object property named " + name, function() {
|
||||
assert.isObject(index[name]);
|
||||
});
|
||||
});
|
||||
});
|
18
node_modules/@sinonjs/commons/lib/order-by-first-call.js
generated
vendored
Normal file
18
node_modules/@sinonjs/commons/lib/order-by-first-call.js
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
"use strict";
|
||||
|
||||
var sort = require("./prototypes/array").sort;
|
||||
var slice = require("./prototypes/array").slice;
|
||||
|
||||
function comparator(a, b) {
|
||||
// uuid, won't ever be equal
|
||||
var aCall = a.getCall(0);
|
||||
var bCall = b.getCall(0);
|
||||
var aId = (aCall && aCall.callId) || -1;
|
||||
var bId = (bCall && bCall.callId) || -1;
|
||||
|
||||
return aId < bId ? -1 : 1;
|
||||
}
|
||||
|
||||
module.exports = function orderByFirstCall(spies) {
|
||||
return sort(slice(spies), comparator);
|
||||
};
|
52
node_modules/@sinonjs/commons/lib/order-by-first-call.test.js
generated
vendored
Normal file
52
node_modules/@sinonjs/commons/lib/order-by-first-call.test.js
generated
vendored
Normal file
@ -0,0 +1,52 @@
|
||||
"use strict";
|
||||
|
||||
var assert = require("@sinonjs/referee-sinon").assert;
|
||||
var knuthShuffle = require("knuth-shuffle").knuthShuffle;
|
||||
var sinon = require("@sinonjs/referee-sinon").sinon;
|
||||
var orderByFirstCall = require("./order-by-first-call");
|
||||
|
||||
describe("orderByFirstCall", function() {
|
||||
it("should order an Array of spies by the callId of the first call, ascending", function() {
|
||||
// create an array of spies
|
||||
var spies = [
|
||||
sinon.spy(),
|
||||
sinon.spy(),
|
||||
sinon.spy(),
|
||||
sinon.spy(),
|
||||
sinon.spy(),
|
||||
sinon.spy()
|
||||
];
|
||||
|
||||
// call all the spies
|
||||
spies.forEach(function(spy) {
|
||||
spy();
|
||||
});
|
||||
|
||||
// add a few uncalled spies
|
||||
spies.push(sinon.spy());
|
||||
spies.push(sinon.spy());
|
||||
|
||||
// randomise the order of the spies
|
||||
knuthShuffle(spies);
|
||||
|
||||
var sortedSpies = orderByFirstCall(spies);
|
||||
|
||||
assert.equals(sortedSpies.length, spies.length);
|
||||
|
||||
var orderedByFirstCall = sortedSpies.every(function(spy, index) {
|
||||
if (index + 1 === sortedSpies.length) {
|
||||
return true;
|
||||
}
|
||||
var nextSpy = sortedSpies[index + 1];
|
||||
|
||||
// uncalled spies should be ordered first
|
||||
if (!spy.called) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return spy.calledImmediatelyBefore(nextSpy);
|
||||
});
|
||||
|
||||
assert.isTrue(orderedByFirstCall);
|
||||
});
|
||||
});
|
44
node_modules/@sinonjs/commons/lib/prototypes/README.md
generated
vendored
Normal file
44
node_modules/@sinonjs/commons/lib/prototypes/README.md
generated
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
# Prototypes
|
||||
|
||||
The functions in this folder are to be use for keeping cached references to the built-in prototypes, so that people can't inadvertently break the library by making mistakes in userland.
|
||||
|
||||
See https://github.com/sinonjs/sinon/pull/1523
|
||||
|
||||
## Without cached references
|
||||
|
||||
```js
|
||||
// in userland, the library user needs to replace the filter method on
|
||||
// Array.prototype
|
||||
var array = [1, 2, 3];
|
||||
sinon.replace(array, "filter", sinon.fake.returns(2));
|
||||
|
||||
// in a sinon module, the library author needs to use the filter method
|
||||
var someArray = ["a", "b", 42, "c"];
|
||||
var answer = filter(someArray, function(v) {
|
||||
return v === 42;
|
||||
});
|
||||
|
||||
console.log(answer);
|
||||
// => 2
|
||||
```
|
||||
|
||||
|
||||
## With cached references
|
||||
|
||||
```js
|
||||
// in userland, the library user needs to replace the filter method on
|
||||
// Array.prototype
|
||||
var array = [1, 2, 3];
|
||||
sinon.replace(array, "filter", sinon.fake.returns(2));
|
||||
|
||||
// in a sinon module, the library author needs to use the filter method
|
||||
// get a reference to the original Array.prototype.filter
|
||||
var filter = require("@sinonjs/commons").prototypes.array.filter;
|
||||
var someArray = ["a", "b", 42, "c"];
|
||||
var answer = filter(someArray, function(v) {
|
||||
return v === 42;
|
||||
});
|
||||
|
||||
console.log(answer);
|
||||
// => 42
|
||||
```
|
5
node_modules/@sinonjs/commons/lib/prototypes/array.js
generated
vendored
Normal file
5
node_modules/@sinonjs/commons/lib/prototypes/array.js
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
var copyPrototype = require("./copy-prototype");
|
||||
|
||||
module.exports = copyPrototype(Array.prototype);
|
21
node_modules/@sinonjs/commons/lib/prototypes/copy-prototype.js
generated
vendored
Normal file
21
node_modules/@sinonjs/commons/lib/prototypes/copy-prototype.js
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
"use strict";
|
||||
|
||||
var call = Function.call;
|
||||
|
||||
module.exports = function copyPrototypeMethods(prototype) {
|
||||
/* eslint-disable local-rules/no-prototype-methods */
|
||||
return Object.getOwnPropertyNames(prototype).reduce(function(result, name) {
|
||||
// ignore size because it throws from Map
|
||||
if (
|
||||
name !== "size" &&
|
||||
name !== "caller" &&
|
||||
name !== "callee" &&
|
||||
name !== "arguments" &&
|
||||
typeof prototype[name] === "function"
|
||||
) {
|
||||
result[name] = call.bind(prototype[name]);
|
||||
}
|
||||
|
||||
return result;
|
||||
}, Object.create(null));
|
||||
};
|
5
node_modules/@sinonjs/commons/lib/prototypes/function.js
generated
vendored
Normal file
5
node_modules/@sinonjs/commons/lib/prototypes/function.js
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
var copyPrototype = require("./copy-prototype");
|
||||
|
||||
module.exports = copyPrototype(Function.prototype);
|
8
node_modules/@sinonjs/commons/lib/prototypes/index.js
generated
vendored
Normal file
8
node_modules/@sinonjs/commons/lib/prototypes/index.js
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
array: require("./array"),
|
||||
function: require("./function"),
|
||||
object: require("./object"),
|
||||
string: require("./string")
|
||||
};
|
43
node_modules/@sinonjs/commons/lib/prototypes/index.test.js
generated
vendored
Normal file
43
node_modules/@sinonjs/commons/lib/prototypes/index.test.js
generated
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
"use strict";
|
||||
|
||||
var assert = require("@sinonjs/referee-sinon").assert;
|
||||
|
||||
var arrayProto = require("./index").array;
|
||||
var functionProto = require("./index").function;
|
||||
var objectProto = require("./index").object;
|
||||
var stringProto = require("./index").string;
|
||||
|
||||
describe("prototypes", function() {
|
||||
describe(".array", function() {
|
||||
verifyProperties(arrayProto, Array);
|
||||
});
|
||||
describe(".function", function() {
|
||||
verifyProperties(functionProto, Function);
|
||||
});
|
||||
describe(".object", function() {
|
||||
verifyProperties(objectProto, Object);
|
||||
});
|
||||
describe(".string", function() {
|
||||
verifyProperties(stringProto, String);
|
||||
});
|
||||
});
|
||||
|
||||
function verifyProperties(p, origin) {
|
||||
it("should have all the methods of the origin prototype", function() {
|
||||
var methodNames = Object.getOwnPropertyNames(origin.prototype).filter(
|
||||
function(name) {
|
||||
return (
|
||||
name !== "size" &&
|
||||
name !== "caller" &&
|
||||
name !== "callee" &&
|
||||
name !== "arguments" &&
|
||||
typeof origin.prototype[name] === "function"
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
methodNames.forEach(function(name) {
|
||||
assert.isTrue(Object.prototype.hasOwnProperty.call(p, name), name);
|
||||
});
|
||||
});
|
||||
}
|
5
node_modules/@sinonjs/commons/lib/prototypes/object.js
generated
vendored
Normal file
5
node_modules/@sinonjs/commons/lib/prototypes/object.js
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
var copyPrototype = require("./copy-prototype");
|
||||
|
||||
module.exports = copyPrototype(Object.prototype);
|
5
node_modules/@sinonjs/commons/lib/prototypes/string.js
generated
vendored
Normal file
5
node_modules/@sinonjs/commons/lib/prototypes/string.js
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
var copyPrototype = require("./copy-prototype");
|
||||
|
||||
module.exports = copyPrototype(String.prototype);
|
7
node_modules/@sinonjs/commons/lib/type-of.js
generated
vendored
Normal file
7
node_modules/@sinonjs/commons/lib/type-of.js
generated
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
var type = require("type-detect");
|
||||
|
||||
module.exports = function typeOf(value) {
|
||||
return type(value).toLowerCase();
|
||||
};
|
51
node_modules/@sinonjs/commons/lib/type-of.test.js
generated
vendored
Normal file
51
node_modules/@sinonjs/commons/lib/type-of.test.js
generated
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
"use strict";
|
||||
|
||||
var assert = require("@sinonjs/referee-sinon").assert;
|
||||
var typeOf = require("./type-of");
|
||||
|
||||
describe("typeOf", function() {
|
||||
it("returns boolean", function() {
|
||||
assert.equals(typeOf(false), "boolean");
|
||||
});
|
||||
|
||||
it("returns string", function() {
|
||||
assert.equals(typeOf("Sinon.JS"), "string");
|
||||
});
|
||||
|
||||
it("returns number", function() {
|
||||
assert.equals(typeOf(123), "number");
|
||||
});
|
||||
|
||||
it("returns object", function() {
|
||||
assert.equals(typeOf({}), "object");
|
||||
});
|
||||
|
||||
it("returns function", function() {
|
||||
assert.equals(
|
||||
typeOf(function() {
|
||||
return undefined;
|
||||
}),
|
||||
"function"
|
||||
);
|
||||
});
|
||||
|
||||
it("returns undefined", function() {
|
||||
assert.equals(typeOf(undefined), "undefined");
|
||||
});
|
||||
|
||||
it("returns null", function() {
|
||||
assert.equals(typeOf(null), "null");
|
||||
});
|
||||
|
||||
it("returns array", function() {
|
||||
assert.equals(typeOf([]), "array");
|
||||
});
|
||||
|
||||
it("returns regexp", function() {
|
||||
assert.equals(typeOf(/.*/), "regexp");
|
||||
});
|
||||
|
||||
it("returns date", function() {
|
||||
assert.equals(typeOf(new Date()), "date");
|
||||
});
|
||||
});
|
11
node_modules/@sinonjs/commons/lib/value-to-string.js
generated
vendored
Normal file
11
node_modules/@sinonjs/commons/lib/value-to-string.js
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
"use strict";
|
||||
|
||||
function valueToString(value) {
|
||||
if (value && value.toString) {
|
||||
/* eslint-disable-next-line local-rules/no-prototype-methods */
|
||||
return value.toString();
|
||||
}
|
||||
return String(value);
|
||||
}
|
||||
|
||||
module.exports = valueToString;
|
20
node_modules/@sinonjs/commons/lib/value-to-string.test.js
generated
vendored
Normal file
20
node_modules/@sinonjs/commons/lib/value-to-string.test.js
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
"use strict";
|
||||
|
||||
var assert = require("@sinonjs/referee-sinon").assert;
|
||||
var valueToString = require("./value-to-string");
|
||||
|
||||
describe("util/core/valueToString", function() {
|
||||
it("returns string representation of an object", function() {
|
||||
var obj = {};
|
||||
|
||||
assert.equals(valueToString(obj), obj.toString());
|
||||
});
|
||||
|
||||
it("returns 'null' for literal null'", function() {
|
||||
assert.equals(valueToString(null), "null");
|
||||
});
|
||||
|
||||
it("returns 'undefined' for literal undefined", function() {
|
||||
assert.equals(valueToString(undefined), "undefined");
|
||||
});
|
||||
});
|
74
node_modules/@sinonjs/commons/package.json
generated
vendored
Normal file
74
node_modules/@sinonjs/commons/package.json
generated
vendored
Normal file
@ -0,0 +1,74 @@
|
||||
{
|
||||
"_from": "@sinonjs/commons@^1.3.1",
|
||||
"_id": "@sinonjs/commons@1.4.0",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-9jHK3YF/8HtJ9wCAbG+j8cD0i0+ATS9A7gXFqS36TblLPNy6rEEc+SB0imo91eCboGaBYGV/MT1/br/J+EE7Tw==",
|
||||
"_location": "/@sinonjs/commons",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "range",
|
||||
"registry": true,
|
||||
"raw": "@sinonjs/commons@^1.3.1",
|
||||
"name": "@sinonjs/commons",
|
||||
"escapedName": "@sinonjs%2fcommons",
|
||||
"scope": "@sinonjs",
|
||||
"rawSpec": "^1.3.1",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "^1.3.1"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/@sinonjs/formatio",
|
||||
"/@sinonjs/samsam",
|
||||
"/sinon"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.4.0.tgz",
|
||||
"_shasum": "7b3ec2d96af481d7a0321252e7b1c94724ec5a78",
|
||||
"_spec": "@sinonjs/commons@^1.3.1",
|
||||
"_where": "/Users/josh.burman/Projects/braid/node_modules/sinon",
|
||||
"author": "",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sinonjs/commons/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"dependencies": {
|
||||
"type-detect": "4.0.8"
|
||||
},
|
||||
"deprecated": false,
|
||||
"description": "Simple functions shared among the sinon end user libraries",
|
||||
"devDependencies": {
|
||||
"@sinonjs/referee-sinon": "4.1.0",
|
||||
"eslint": "^5.8.0",
|
||||
"eslint-config-prettier": "^3.1.0",
|
||||
"eslint-config-sinon": "^2.0.0",
|
||||
"eslint-plugin-ie11": "^1.0.0",
|
||||
"eslint-plugin-local-rules": "^0.1.0",
|
||||
"eslint-plugin-mocha": "^5.2.0",
|
||||
"eslint-plugin-prettier": "^3.0.0",
|
||||
"husky": "0.14.3",
|
||||
"jsverify": "0.8.3",
|
||||
"knuth-shuffle": "^1.0.8",
|
||||
"lint-staged": "7.2.0",
|
||||
"mocha": "5.2.0",
|
||||
"nyc": "12.0.2",
|
||||
"prettier": "^1.14.3"
|
||||
},
|
||||
"homepage": "https://github.com/sinonjs/commons#readme",
|
||||
"license": "BSD-3-Clause",
|
||||
"lint-staged": {
|
||||
"*.js": "eslint"
|
||||
},
|
||||
"main": "lib/index.js",
|
||||
"name": "@sinonjs/commons",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/sinonjs/commons.git"
|
||||
},
|
||||
"scripts": {
|
||||
"lint": "eslint .",
|
||||
"precommit": "lint-staged",
|
||||
"test": "mocha --recursive -R dot \"lib/**/*.test.js\"",
|
||||
"test-check-coverage": "npm run test-coverage && nyc check-coverage --branches 100 --functions 100 --lines 100",
|
||||
"test-coverage": "nyc --reporter text --reporter html --reporter lcovonly npm run test"
|
||||
},
|
||||
"version": "1.4.0"
|
||||
}
|
Reference in New Issue
Block a user