safe-mock
Version:
Type Safe Mocking Library written for Typescript and Javascript
98 lines (97 loc) • 4.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var _setStubbedActionNoArgsSymbol_1 = require("./_setStubbedActionNoArgsSymbol");
var StubbedActionMatcher_1 = require("./StubbedActionMatcher");
var _setReturnValue = Symbol('_setReturnValue');
exports.whenInTests = function (whenArg) {
if (whenArg[_setStubbedActionNoArgsSymbol_1.default]) {
return new SafeMockReturnSetter(whenArg[_setStubbedActionNoArgsSymbol_1.default]);
}
if (whenArg[_setReturnValue] === undefined) {
throw new Error("Whoops! Looks like you called `when` incorrectly. Make sure you create a Mock First!");
}
return new SafeMockReturnSetter(whenArg[_setReturnValue]);
};
var SafeMockReturnSetter = /** @class */ (function () {
function SafeMockReturnSetter(stubbedActionSetter) {
this.stubbedActionSetter = stubbedActionSetter;
}
SafeMockReturnSetter.prototype.resolve = function (resolvedValue) {
this.stubbedActionSetter(StubbedActionMatcher_1.ResolvedPromiseAction.of(resolvedValue));
};
SafeMockReturnSetter.prototype.reject = function (rejection) {
this.stubbedActionSetter(StubbedActionMatcher_1.RejectedPromiseAction.of(rejection));
};
SafeMockReturnSetter.prototype.return = function (returnValue) {
this.stubbedActionSetter(StubbedActionMatcher_1.ReturnValueAction.of(returnValue));
};
SafeMockReturnSetter.prototype.throw = function (valueToThrow) {
this.stubbedActionSetter(StubbedActionMatcher_1.ThrowingAction.of(valueToThrow));
};
return SafeMockReturnSetter;
}());
function valueIfNoReturnValueSet(whyNoMatch, futureReturnValueSetter) {
var notMockedYetExceptionThrower = function hasNotBeenMockedYet() {
throw new Error(whyNoMatch.reasonAndAdvice());
};
var ValueIfNoReturnValueSet = /** @class */ (function () {
function ValueIfNoReturnValueSet() {
}
ValueIfNoReturnValueSet.prototype.get = function (target, propertyKey, receiver) {
if (propertyKey === _setStubbedActionNoArgsSymbol_1.default)
return undefined;
if (propertyKey === _setReturnValue) {
return futureReturnValueSetter;
}
if (propertyKey === "toString") {
return function () {
return whyNoMatch.reasonAndAdvice();
};
}
return notMockedYetExceptionThrower();
};
ValueIfNoReturnValueSet.prototype.set = function (target, p, value, receiver) {
notMockedYetExceptionThrower();
return false;
};
ValueIfNoReturnValueSet.prototype.getPrototypeOf = function (target) {
return notMockedYetExceptionThrower();
};
ValueIfNoReturnValueSet.prototype.setPrototypeOf = function (target, v) {
return notMockedYetExceptionThrower();
};
ValueIfNoReturnValueSet.prototype.isExtensible = function (target) {
return notMockedYetExceptionThrower();
};
ValueIfNoReturnValueSet.prototype.preventExtensions = function (target) {
return notMockedYetExceptionThrower();
};
ValueIfNoReturnValueSet.prototype.getOwnPropertyDescriptor = function (target, p) {
return notMockedYetExceptionThrower();
};
ValueIfNoReturnValueSet.prototype.has = function (target, p) {
return notMockedYetExceptionThrower();
};
ValueIfNoReturnValueSet.prototype.deleteProperty = function (target, p) {
return notMockedYetExceptionThrower();
};
ValueIfNoReturnValueSet.prototype.defineProperty = function (target, p, attributes) {
return notMockedYetExceptionThrower();
};
ValueIfNoReturnValueSet.prototype.enumerate = function (target) {
return notMockedYetExceptionThrower();
};
ValueIfNoReturnValueSet.prototype.ownKeys = function (target) {
return notMockedYetExceptionThrower();
};
ValueIfNoReturnValueSet.prototype.apply = function (target, thisArg, argArray) {
return notMockedYetExceptionThrower();
};
ValueIfNoReturnValueSet.prototype.construct = function (target, thisArg, argArray) {
return notMockedYetExceptionThrower();
};
return ValueIfNoReturnValueSet;
}());
return new Proxy(notMockedYetExceptionThrower, new ValueIfNoReturnValueSet());
}
exports.valueIfNoReturnValueSet = valueIfNoReturnValueSet;