@johanblumenberg/ts-mockito
Version:
Mocking library for TypeScript
339 lines • 14.3 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.lowerThanOrEqual = exports.lowerThan = exports.greaterThanOrEqual = exports.greaterThan = exports.isBeforeOrEqual = exports.isBefore = exports.isAfterOrEqual = exports.isAfter = exports.nextTick = exports.defer = exports.jsonContaining = exports.objectContaining = exports.arrayContaining = exports.endsWith = exports.startsWith = exports.match = exports.strictEqual = exports.notNull = exports.deepEqual = exports.between = exports.not = exports._ = exports.anything = exports.anyString = exports.anyNumber = exports.anyFunction = exports.anyOfClass = exports.resetCalls = exports.resetStubs = exports.reset = exports.capture = exports.instance = exports.when = exports.verify = exports.cmock = exports.fnmock = exports.imock = exports.mock = exports.spy = void 0;
var ArgCaptor_1 = require("./capture/ArgCaptor");
var AnyFunctionMatcher_1 = require("./matcher/type/AnyFunctionMatcher");
var AnyNumberMatcher_1 = require("./matcher/type/AnyNumberMatcher");
var AnyOfClassMatcher_1 = require("./matcher/type/AnyOfClassMatcher");
var AnyStringMatcher_1 = require("./matcher/type/AnyStringMatcher");
var AnythingMatcher_1 = require("./matcher/type/AnythingMatcher");
var BetweenMatcher_1 = require("./matcher/type/BetweenMatcher");
var IsAfterMatcher_1 = require("./matcher/type/date/IsAfterMatcher");
var IsAfterOrEqualMatcher_1 = require("./matcher/type/date/IsAfterOrEqualMatcher");
var IsBeforeMatcher_1 = require("./matcher/type/date/IsBeforeMatcher");
var IsBeforeOrEqualMatcher_1 = require("./matcher/type/date/IsBeforeOrEqualMatcher");
var DeepEqualMatcher_1 = require("./matcher/type/DeepEqualMatcher");
var EndsWithMatcher_1 = require("./matcher/type/EndsWithMatcher");
var JsonContainingMatcher_1 = require("./matcher/type/JsonContainingMatcher");
var ArrayContainingMatcher_1 = require("./matcher/type/ArrayContainingMatcher");
var MatchingStringMatcher_1 = require("./matcher/type/MatchingStringMatcher");
var NotNullMatcher_1 = require("./matcher/type/NotNullMatcher");
var NotMatcher_1 = require("./matcher/type/NotMatcher");
var GreaterThanMatcher_1 = require("./matcher/type/number/GreaterThanMatcher");
var GreaterThanOrEqualMatcher_1 = require("./matcher/type/number/GreaterThanOrEqualMatcher");
var LowerThanMatcher_1 = require("./matcher/type/number/LowerThanMatcher");
var LowerThanOrEqualMatcher_1 = require("./matcher/type/number/LowerThanOrEqualMatcher");
var ObjectContainingMatcher_1 = require("./matcher/type/ObjectContainingMatcher");
var StartsWithMatcher_1 = require("./matcher/type/StartsWithMatcher");
var StrictEqualMatcher_1 = require("./matcher/type/StrictEqualMatcher");
var MethodStubSetter_1 = require("./MethodStubSetter");
var MethodStubVerificator_1 = require("./MethodStubVerificator");
var MethodToStub_1 = require("./MethodToStub");
var Mock_1 = require("./Mock");
var Spy_1 = require("./Spy");
var Matcher_1 = require("./matcher/type/Matcher");
var originalSetTimeout = setTimeout;
var originalSetImmediate = 'setImmediate' in globalThis ? setImmediate : function (fn) { return setTimeout(fn, 0); };
var Mock_2 = require("./Mock");
Object.defineProperty(exports, "MockPropertyPolicy", { enumerable: true, get: function () { return Mock_2.MockPropertyPolicy; } });
function spy(instanceToSpy) {
return new Spy_1.Spy(instanceToSpy).getMock();
}
exports.spy = spy;
function mock(clazz, policy) {
if (policy === void 0) { policy = Mock_1.MockPropertyPolicy.StubAsProperty; }
return new Mock_1.Mocker(clazz, { propertyPolicy: policy }).getMock();
}
exports.mock = mock;
function imock(optionsOrPolicy) {
var options = typeof optionsOrPolicy === 'object' ?
optionsOrPolicy :
{
propertyPolicy: optionsOrPolicy,
logInvocations: false,
};
var Empty = (function () {
function Empty() {
}
return Empty;
}());
var mockedValue = new Mock_1.Mocker(Empty, options).getMock();
if (typeof Proxy === "undefined") {
throw new Error("Mocking of interfaces requires support for Proxy objects");
}
var tsmockitoMocker = mockedValue.__tsmockitoMocker;
return new Proxy(mockedValue, tsmockitoMocker.createCatchAllHandlerForRemainingPropertiesWithoutGetters("expectation"));
}
exports.imock = imock;
function fnmock() {
var Mock = (function () {
function Mock() {
}
Mock.prototype.fn = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return null;
};
return Mock;
}());
var m = mock(Mock);
m.fn.__tsmockitoInstance = instance(m).fn;
m.fn.__tsmockitoMocker = m.__tsmockitoMocker;
return m.fn;
}
exports.fnmock = fnmock;
function cmock() {
return fnmock();
}
exports.cmock = cmock;
var expectNothing = function () {
expectNothing = 'expect' in globalThis && 'nothing' in expect()
? function () { expect().nothing(); }
: function () { };
expectNothing();
};
function verify(method) {
expectNothing();
return new MethodStubVerificator_1.MethodStubVerificator(method);
}
exports.verify = verify;
function when(method) {
return new MethodStubSetter_1.MethodStubSetter(method);
}
exports.when = when;
function instance(mockedValue) {
var tsmockitoInstance = mockedValue.__tsmockitoInstance;
return tsmockitoInstance;
}
exports.instance = instance;
function capture(method, matchers) {
var methodStub = method();
if (methodStub instanceof MethodToStub_1.MethodToStub) {
methodStub.watcher.invoked();
var actions = matchers ?
methodStub.mocker.getAllMatchingActions(methodStub.methodName, matchers) :
methodStub.mocker.getActionsByName(methodStub.methodName);
return new ArgCaptor_1.ArgCaptor(actions);
}
else {
throw Error("Cannot capture from not mocked object.");
}
}
exports.capture = capture;
function reset(mockedValue) {
mockedValue.__tsmockitoMocker.reset();
}
exports.reset = reset;
function resetStubs(mockedValue) {
mockedValue.__tsmockitoMocker.resetStubs();
}
exports.resetStubs = resetStubs;
function resetCalls(mockedValue) {
mockedValue.__tsmockitoMocker.resetCalls();
}
exports.resetCalls = resetCalls;
var Matcher_2 = require("./matcher/type/Matcher");
Object.defineProperty(exports, "Matcher", { enumerable: true, get: function () { return Matcher_2.Matcher; } });
function anyOfClass(expectedClass) {
return new AnyOfClassMatcher_1.AnyOfClassMatcher(expectedClass);
}
exports.anyOfClass = anyOfClass;
function anyFunction() {
return new AnyFunctionMatcher_1.AnyFunctionMatcher();
}
exports.anyFunction = anyFunction;
function anyNumber() {
return new AnyNumberMatcher_1.AnyNumberMatcher();
}
exports.anyNumber = anyNumber;
function anyString() {
return new AnyStringMatcher_1.AnyStringMatcher();
}
exports.anyString = anyString;
function anything() {
return new AnythingMatcher_1.AnythingMatcher();
}
exports.anything = anything;
exports._ = anything();
function not(expectedValue) {
if (Matcher_1.Matcher.is(expectedValue)) {
return new NotMatcher_1.NotMatcher(expectedValue);
}
else {
throw new Error('Matching using not() expects a matcher, for example not(deepEqual("hi"))');
}
}
exports.not = not;
function between(min, max) {
return new BetweenMatcher_1.BetweenMatcher(min, max);
}
exports.between = between;
function deepEqual(expectedValue) {
return new DeepEqualMatcher_1.DeepEqualMatcher(expectedValue);
}
exports.deepEqual = deepEqual;
function notNull() {
return new NotNullMatcher_1.NotNullMatcher();
}
exports.notNull = notNull;
function strictEqual(expectedValue) {
return new StrictEqualMatcher_1.StrictEqualMatcher(expectedValue);
}
exports.strictEqual = strictEqual;
function match(expectedValue) {
return new MatchingStringMatcher_1.MatchingStringMatcher(expectedValue);
}
exports.match = match;
function startsWith(expectedValue) {
return new StartsWithMatcher_1.StartsWithMatcher(expectedValue);
}
exports.startsWith = startsWith;
function endsWith(expectedValue) {
return new EndsWithMatcher_1.EndsWithMatcher(expectedValue);
}
exports.endsWith = endsWith;
function arrayContaining(expectedValue) {
return new ArrayContainingMatcher_1.ArrayContainingMatcher(expectedValue);
}
exports.arrayContaining = arrayContaining;
function objectContaining(expectedValue) {
return new ObjectContainingMatcher_1.ObjectContainingMatcher(expectedValue);
}
exports.objectContaining = objectContaining;
function jsonContaining(expectedValue) {
return new JsonContainingMatcher_1.JsonContainingMatcher(expectedValue);
}
exports.jsonContaining = jsonContaining;
function defer() {
var _this = this;
var resolve;
var reject;
var d = new Promise(function (res, rej) {
resolve = function (value) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
return [2, res(value)];
}); }); };
reject = function (err) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
return [2, rej(err)];
}); }); };
});
return Object.assign(d, { resolve: resolve, reject: reject });
}
exports.defer = defer;
function nextTick() {
return new Promise(function (resolve) { return originalSetTimeout(function () { return originalSetImmediate(resolve); }, 0); });
}
exports.nextTick = nextTick;
function isAfter(date) {
return new IsAfterMatcher_1.IsAfterMatcher(date);
}
exports.isAfter = isAfter;
function isAfterOrEqual(date) {
return new IsAfterOrEqualMatcher_1.IsAfterOrEqualMatcher(date);
}
exports.isAfterOrEqual = isAfterOrEqual;
function isBefore(date) {
return new IsBeforeMatcher_1.IsBeforeMatcher(date);
}
exports.isBefore = isBefore;
function isBeforeOrEqual(date) {
return new IsBeforeOrEqualMatcher_1.IsBeforeOrEqualMatcher(date);
}
exports.isBeforeOrEqual = isBeforeOrEqual;
function greaterThan(value) {
return new GreaterThanMatcher_1.GreaterThanMatcher(value);
}
exports.greaterThan = greaterThan;
function greaterThanOrEqual(value) {
return new GreaterThanOrEqualMatcher_1.GreaterThanOrEqualMatcher(value);
}
exports.greaterThanOrEqual = greaterThanOrEqual;
function lowerThan(value) {
return new LowerThanMatcher_1.LowerThanMatcher(value);
}
exports.lowerThan = lowerThan;
function lowerThanOrEqual(value) {
return new LowerThanOrEqualMatcher_1.LowerThanOrEqualMatcher(value);
}
exports.lowerThanOrEqual = lowerThanOrEqual;
exports.default = {
spy: spy,
mock: mock,
imock: imock,
fnmock: fnmock,
cmock: cmock,
verify: verify,
when: when,
instance: instance,
capture: capture,
reset: reset,
resetStubs: resetStubs,
resetCalls: resetCalls,
Matcher: Matcher_1.Matcher,
anyOfClass: anyOfClass,
anyFunction: anyFunction,
anyNumber: anyNumber,
anyString: anyString,
anything: anything,
_: exports._,
between: between,
deepEqual: deepEqual,
not: not,
notNull: notNull,
strictEqual: strictEqual,
match: match,
startsWith: startsWith,
endsWith: endsWith,
arrayContaining: arrayContaining,
objectContaining: objectContaining,
jsonContaining: jsonContaining,
MockPropertyPolicy: Mock_1.MockPropertyPolicy,
defer: defer,
nextTick: nextTick,
isAfter: isAfter,
isAfterOrEqual: isAfterOrEqual,
isBefore: isBefore,
isBeforeOrEqual: isBeforeOrEqual,
greaterThan: greaterThan,
greaterThanOrEqual: greaterThanOrEqual,
lowerThan: lowerThan,
lowerThanOrEqual: lowerThanOrEqual,
};
//# sourceMappingURL=ts-mockito.js.map