add-matchers
Version:
Write useful test matchers compatible with Jest and Jasmine.
57 lines (56 loc) • 2.53 kB
JavaScript
exports.__esModule = true;
exports.getJestAdapter = function (scope) {
var getLongName = function (name) {
return name.replace(/\B([A-Z])/g, ' $1').toLowerCase();
};
var createToBeMatcher = function (name, matcher) {
return function (received) {
var _this = this;
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
var arity = matcher.length - 1;
var realArgs = args.slice(0, arity);
var pass = matcher.apply(void 0, realArgs.concat([received]));
var infix = pass ? ' not ' : ' ';
var longName = getLongName(name);
var formattedReceived = this.utils.printReceived(received);
var formattedArgs = args
.map(function (val) { return _this.utils.printExpected(val); })
.join(', ');
var message = "expected " + formattedReceived + infix + longName + " " + formattedArgs;
return { message: function () { return message; }, pass: pass };
};
};
var createToHaveMatcher = function (name, matcher) {
return function (received, key) {
var _this = this;
var args = [];
for (var _i = 2; _i < arguments.length; _i++) {
args[_i - 2] = arguments[_i];
}
var arity = matcher.length - 2;
var realArgs = args.slice(0, arity);
var pass = matcher.apply(void 0, [key].concat(realArgs, [received]));
var infix = pass ? ' not ' : ' ';
var longName = getLongName(name);
var formattedReceived = this.utils.printReceived(received);
var formattedArgs = args
.map(function (val) { return _this.utils.printExpected(val); })
.join(', ');
var message = "expected member \"" + key + "\" of " + formattedReceived + infix + longName + " " + formattedArgs;
return { message: function () { return message; }, pass: pass };
};
};
var createJestMatcher = function (name, matcher) {
var _a;
var isMemberMatcher = name.search(/^toHave/) !== -1;
var adapter = isMemberMatcher ? createToHaveMatcher : createToBeMatcher;
var matchersByName = (_a = {}, _a[name] = adapter(name, matcher), _a);
scope.expect.extend(matchersByName);
return matchersByName;
};
return createJestMatcher;
};
;