UNPKG

@johanblumenberg/ts-mockito

Version:
339 lines 14.3 kB
"use strict"; 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