UNPKG

add-matchers

Version:

Write useful test matchers compatible with Jest and Jasmine.

57 lines (56 loc) 2.53 kB
"use strict"; 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; };