UNPKG

safe-mock

Version:

Type Safe Mocking Library written for Typescript and Javascript

64 lines (63 loc) 3.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var valueIfNoReturnValueSet_1 = require("./valueIfNoReturnValueSet"); var ArgumentInvocation_1 = require("./ArgumentInvocation"); var _setStubbedActionNoArgsSymbol_1 = require("./_setStubbedActionNoArgsSymbol"); var Verifier_1 = require("./Verifier"); var StubbedActionMatcherRepo_1 = require("./StubbedActionMatcherRepo"); var _setStubbedActionNoArgsSymbol_2 = require("./_setStubbedActionNoArgsSymbol"); var verifier = (function (mockToVerify) { return mockToVerify.verifier; }); verifier.unsafe = verifier; exports.verifyInTests = verifier; var callableMock = Symbol('CallableMock'); var ProxyMock = /** @class */ (function () { function ProxyMock() { this.stubbedActionMatcherRepo = new StubbedActionMatcherRepo_1.StubbedActionMatcherRepo(); } ProxyMock.prototype.get = function (target, propertyKey, receiver) { var _this = this; if (propertyKey === 'resetMock') { return function () { _this.stubbedActionMatcherRepo = new StubbedActionMatcherRepo_1.StubbedActionMatcherRepo(); }; } else if (propertyKey === _setStubbedActionNoArgsSymbol_2.default) { return function (stubbedAction) { return _this.stubbedActionMatcherRepo.setStubbedActionForAnyArgs(callableMock, stubbedAction); }; } return this.buildMockedMethod(propertyKey); }; ProxyMock.prototype.apply = function (target, thisArg, argArray) { return this.buildMockedMethod(callableMock).apply(void 0, argArray); }; ProxyMock.prototype.buildMockedMethod = function (propertyKey) { var _this = this; var mockedFunc = function () { var argsToMatch = []; for (var _i = 0; _i < arguments.length; _i++) { argsToMatch[_i] = arguments[_i]; } var lookUpResult = _this.stubbedActionMatcherRepo .recordAndFindMatch(propertyKey, new ArgumentInvocation_1.default(argsToMatch)); if (lookUpResult.returnFound) return lookUpResult.performMockedReturnValue(); return valueIfNoReturnValueSet_1.valueIfNoReturnValueSet(lookUpResult.whyNoReturnValueMatched, function (stubbedAction) { return _this.stubbedActionMatcherRepo.setStubbedActionForArgs(propertyKey, new ArgumentInvocation_1.default(argsToMatch), stubbedAction); }); }; mockedFunc.verifier = new Verifier_1.Verifier(this.stubbedActionMatcherRepo, propertyKey); mockedFunc.resetMock = function () { _this.stubbedActionMatcherRepo.resetPropertyKey(propertyKey); }; mockedFunc[_setStubbedActionNoArgsSymbol_1.default] = function (stubbedAction) { return _this.stubbedActionMatcherRepo.setStubbedActionForAnyArgs(propertyKey, stubbedAction); }; return mockedFunc; }; return ProxyMock; }()); exports.ProxyMock = ProxyMock;