100 lines
8.7 KiB
JavaScript
100 lines
8.7 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
|
|
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
|
|
|
|
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
|
|
|
|
var _createClass2 = require('babel-runtime/helpers/createClass');
|
|
|
|
var _createClass3 = _interopRequireDefault(_createClass2);
|
|
|
|
var _cucumberExpressions = require('cucumber-expressions');
|
|
|
|
var _data_table = require('./data_table');
|
|
|
|
var _data_table2 = _interopRequireDefault(_data_table);
|
|
|
|
var _step_arguments = require('../step_arguments');
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
var StepDefinition = function () {
|
|
function StepDefinition(_ref) {
|
|
var code = _ref.code,
|
|
line = _ref.line,
|
|
options = _ref.options,
|
|
pattern = _ref.pattern,
|
|
uri = _ref.uri;
|
|
(0, _classCallCheck3.default)(this, StepDefinition);
|
|
|
|
this.code = code;
|
|
this.line = line;
|
|
this.options = options;
|
|
this.pattern = pattern;
|
|
this.uri = uri;
|
|
}
|
|
|
|
(0, _createClass3.default)(StepDefinition, [{
|
|
key: 'buildInvalidCodeLengthMessage',
|
|
value: function buildInvalidCodeLengthMessage(syncOrPromiseLength, callbackLength) {
|
|
return 'function has ' + this.code.length + ' arguments' + (', should have ' + syncOrPromiseLength + ' (if synchronous or returning a promise)') + (' or ' + callbackLength + ' (if accepting a callback)');
|
|
}
|
|
}, {
|
|
key: 'getInvalidCodeLengthMessage',
|
|
value: function getInvalidCodeLengthMessage(parameters) {
|
|
return this.buildInvalidCodeLengthMessage(parameters.length, parameters.length + 1);
|
|
}
|
|
}, {
|
|
key: 'getInvocationParameters',
|
|
value: function getInvocationParameters(_ref2) {
|
|
var step = _ref2.step,
|
|
parameterTypeRegistry = _ref2.parameterTypeRegistry,
|
|
world = _ref2.world;
|
|
|
|
var cucumberExpression = this.getCucumberExpression(parameterTypeRegistry);
|
|
var stepNameParameters = cucumberExpression.match(step.text).map(function (arg) {
|
|
return arg.getValue(world);
|
|
});
|
|
var iterator = (0, _step_arguments.buildStepArgumentIterator)({
|
|
dataTable: function dataTable(arg) {
|
|
return new _data_table2.default(arg);
|
|
},
|
|
docString: function docString(arg) {
|
|
return arg.content;
|
|
}
|
|
});
|
|
var stepArgumentParameters = step.arguments.map(iterator);
|
|
return stepNameParameters.concat(stepArgumentParameters);
|
|
}
|
|
}, {
|
|
key: 'getCucumberExpression',
|
|
value: function getCucumberExpression(parameterTypeRegistry) {
|
|
if (typeof this.pattern === 'string') {
|
|
return new _cucumberExpressions.CucumberExpression(this.pattern, parameterTypeRegistry);
|
|
}
|
|
return new _cucumberExpressions.RegularExpression(this.pattern, parameterTypeRegistry);
|
|
}
|
|
}, {
|
|
key: 'getValidCodeLengths',
|
|
value: function getValidCodeLengths(parameters) {
|
|
return [parameters.length, parameters.length + 1];
|
|
}
|
|
}, {
|
|
key: 'matchesStepName',
|
|
value: function matchesStepName(_ref3) {
|
|
var stepName = _ref3.stepName,
|
|
parameterTypeRegistry = _ref3.parameterTypeRegistry;
|
|
|
|
var cucumberExpression = this.getCucumberExpression(parameterTypeRegistry);
|
|
return Boolean(cucumberExpression.match(stepName));
|
|
}
|
|
}]);
|
|
return StepDefinition;
|
|
}();
|
|
|
|
exports.default = StepDefinition;
|
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbHMvc3RlcF9kZWZpbml0aW9uLmpzIl0sIm5hbWVzIjpbIlN0ZXBEZWZpbml0aW9uIiwiY29kZSIsImxpbmUiLCJvcHRpb25zIiwicGF0dGVybiIsInVyaSIsInN5bmNPclByb21pc2VMZW5ndGgiLCJjYWxsYmFja0xlbmd0aCIsImxlbmd0aCIsInBhcmFtZXRlcnMiLCJidWlsZEludmFsaWRDb2RlTGVuZ3RoTWVzc2FnZSIsInN0ZXAiLCJwYXJhbWV0ZXJUeXBlUmVnaXN0cnkiLCJ3b3JsZCIsImN1Y3VtYmVyRXhwcmVzc2lvbiIsImdldEN1Y3VtYmVyRXhwcmVzc2lvbiIsInN0ZXBOYW1lUGFyYW1ldGVycyIsIm1hdGNoIiwidGV4dCIsIm1hcCIsImFyZyIsImdldFZhbHVlIiwiaXRlcmF0b3IiLCJkYXRhVGFibGUiLCJkb2NTdHJpbmciLCJjb250ZW50Iiwic3RlcEFyZ3VtZW50UGFyYW1ldGVycyIsImFyZ3VtZW50cyIsImNvbmNhdCIsInN0ZXBOYW1lIiwiQm9vbGVhbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7OztBQUNBOzs7O0lBRXFCQSxjO0FBQ25CLGdDQUFtRDtBQUFBLFFBQXJDQyxJQUFxQyxRQUFyQ0EsSUFBcUM7QUFBQSxRQUEvQkMsSUFBK0IsUUFBL0JBLElBQStCO0FBQUEsUUFBekJDLE9BQXlCLFFBQXpCQSxPQUF5QjtBQUFBLFFBQWhCQyxPQUFnQixRQUFoQkEsT0FBZ0I7QUFBQSxRQUFQQyxHQUFPLFFBQVBBLEdBQU87QUFBQTs7QUFDakQsU0FBS0osSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0MsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0MsT0FBTCxHQUFlQSxPQUFmO0FBQ0EsU0FBS0MsT0FBTCxHQUFlQSxPQUFmO0FBQ0EsU0FBS0MsR0FBTCxHQUFXQSxHQUFYO0FBQ0Q7Ozs7a0RBRTZCQyxtQixFQUFxQkMsYyxFQUFnQjtBQUNqRSxhQUNFLGtCQUFnQixLQUFLTixJQUFMLENBQVVPLE1BQTFCLHNDQUNpQkYsbUJBRGpCLDJEQUVPQyxjQUZQLGdDQURGO0FBS0Q7OztnREFFMkJFLFUsRUFBWTtBQUN0QyxhQUFPLEtBQUtDLDZCQUFMLENBQ0xELFdBQVdELE1BRE4sRUFFTEMsV0FBV0QsTUFBWCxHQUFvQixDQUZmLENBQVA7QUFJRDs7O21EQUUrRDtBQUFBLFVBQXRDRyxJQUFzQyxTQUF0Q0EsSUFBc0M7QUFBQSxVQUFoQ0MscUJBQWdDLFNBQWhDQSxxQkFBZ0M7QUFBQSxVQUFUQyxLQUFTLFNBQVRBLEtBQVM7O0FBQzlELFVBQU1DLHFCQUFxQixLQUFLQyxxQkFBTCxDQUEyQkgscUJBQTNCLENBQTNCO0FBQ0EsVUFBTUkscUJBQXFCRixtQkFDeEJHLEtBRHdCLENBQ2xCTixLQUFLTyxJQURhLEVBRXhCQyxHQUZ3QixDQUVwQjtBQUFBLGVBQU9DLElBQUlDLFFBQUosQ0FBYVIsS0FBYixDQUFQO0FBQUEsT0FGb0IsQ0FBM0I7QUFHQSxVQUFNUyxXQUFXLCtDQUEwQjtBQUN6Q0MsbUJBQVc7QUFBQSxpQkFBTyx5QkFBY0gsR0FBZCxDQUFQO0FBQUEsU0FEOEI7QUFFekNJLG1CQUFXO0FBQUEsaUJBQU9KLElBQUlLLE9BQVg7QUFBQTtBQUY4QixPQUExQixDQUFqQjtBQUlBLFVBQU1DLHlCQUF5QmYsS0FBS2dCLFNBQUwsQ0FBZVIsR0FBZixDQUFtQkcsUUFBbkIsQ0FBL0I7QUFDQSxhQUFPTixtQkFBbUJZLE1BQW5CLENBQTBCRixzQkFBMUIsQ0FBUDtBQUNEOzs7MENBRXFCZCxxQixFQUF1QjtBQUMzQyxVQUFJLE9BQU8sS0FBS1IsT0FBWixLQUF3QixRQUE1QixFQUFzQztBQUNwQyxlQUFPLDRDQUF1QixLQUFLQSxPQUE1QixFQUFxQ1EscUJBQXJDLENBQVA7QUFDRDtBQUNELGFBQU8sMkNBQXNCLEtBQUtSLE9BQTNCLEVBQW9DUSxxQkFBcEMsQ0FBUDtBQUNEOzs7d0NBRW1CSCxVLEVBQVk7QUFDOUIsYUFBTyxDQUFDQSxXQUFXRCxNQUFaLEVBQW9CQyxXQUFXRCxNQUFYLEdBQW9CLENBQXhDLENBQVA7QUFDRDs7OzJDQUVvRDtBQUFBLFVBQW5DcUIsUUFBbUMsU0FBbkNBLFFBQW1DO0FBQUEsVUFBekJqQixxQkFBeUIsU0FBekJBLHFCQUF5Qjs7QUFDbkQsVUFBTUUscUJBQXFCLEtBQUtDLHFCQUFMLENBQTJCSCxxQkFBM0IsQ0FBM0I7QUFDQSxhQUFPa0IsUUFBUWhCLG1CQUFtQkcsS0FBbkIsQ0FBeUJZLFFBQXpCLENBQVIsQ0FBUDtBQUNEOzs7OztrQkFuRGtCN0IsYyIsImZpbGUiOiJzdGVwX2RlZmluaXRpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdWN1bWJlckV4cHJlc3Npb24sIFJlZ3VsYXJFeHByZXNzaW9uIH0gZnJvbSAnY3VjdW1iZXItZXhwcmVzc2lvbnMnXG5pbXBvcnQgRGF0YVRhYmxlIGZyb20gJy4vZGF0YV90YWJsZSdcbmltcG9ydCB7IGJ1aWxkU3RlcEFyZ3VtZW50SXRlcmF0b3IgfSBmcm9tICcuLi9zdGVwX2FyZ3VtZW50cydcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RlcERlZmluaXRpb24ge1xuICBjb25zdHJ1Y3Rvcih7IGNvZGUsIGxpbmUsIG9wdGlvbnMsIHBhdHRlcm4sIHVyaSB9KSB7XG4gICAgdGhpcy5jb2RlID0gY29kZVxuICAgIHRoaXMubGluZSA9IGxpbmVcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXG4gICAgdGhpcy5wYXR0ZXJuID0gcGF0dGVyblxuICAgIHRoaXMudXJpID0gdXJpXG4gIH1cblxuICBidWlsZEludmFsaWRDb2RlTGVuZ3RoTWVzc2FnZShzeW5jT3JQcm9taXNlTGVuZ3RoLCBjYWxsYmFja0xlbmd0aCkge1xuICAgIHJldHVybiAoXG4gICAgICBgZnVuY3Rpb24gaGFzICR7dGhpcy5jb2RlLmxlbmd0aH0gYXJndW1lbnRzYCArXG4gICAgICBgLCBzaG91bGQgaGF2ZSAke3N5bmNPclByb21pc2VMZW5ndGh9IChpZiBzeW5jaHJvbm91cyBvciByZXR1cm5pbmcgYSBwcm9taXNlKWAgK1xuICAgICAgYCBvciAke2NhbGxiYWNrTGVuZ3RofSAoaWYgYWNjZXB0aW5nIGEgY2FsbGJhY2spYFxuICAgIClcbiAgfVxuXG4gIGdldEludmFsaWRDb2RlTGVuZ3RoTWVzc2FnZShwYXJhbWV0ZXJzKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRJbnZhbGlkQ29kZUxlbmd0aE1lc3NhZ2UoXG4gICAgICBwYXJhbWV0ZXJzLmxlbmd0aCxcbiAgICAgIHBhcmFtZXRlcnMubGVuZ3RoICsgMVxuICAgIClcbiAgfVxuXG4gIGdldEludm9jYXRpb25QYXJhbWV0ZXJzKHsgc3RlcCwgcGFyYW1ldGVyVHlwZVJlZ2lzdHJ5LCB3b3JsZCB9KSB7XG4gICAgY29uc3QgY3VjdW1iZXJFeHByZXNzaW9uID0gdGhpcy5nZXRDdWN1bWJlckV4cHJlc3Npb24ocGFyYW1ldGVyVHlwZVJlZ2lzdHJ5KVxuICAgIGNvbnN0IHN0ZXBOYW1lUGFyYW1ldGVycyA9IGN1Y3VtYmVyRXhwcmVzc2lvblxuICAgICAgLm1hdGNoKHN0ZXAudGV4dClcbiAgICAgIC5tYXAoYXJnID0+IGFyZy5nZXRWYWx1ZSh3b3JsZCkpXG4gICAgY29uc3QgaXRlcmF0b3IgPSBidWlsZFN0ZXBBcmd1bWVudEl0ZXJhdG9yKHtcbiAgICAgIGRhdGFUYWJsZTogYXJnID0+IG5ldyBEYXRhVGFibGUoYXJnKSxcbiAgICAgIGRvY1N0cmluZzogYXJnID0+IGFyZy5jb250ZW50LFxuICAgIH0pXG4gICAgY29uc3Qgc3RlcEFyZ3VtZW50UGFyYW1ldGVycyA9IHN0ZXAuYXJndW1lbnRzLm1hcChpdGVyYXRvcilcbiAgICByZXR1cm4gc3RlcE5hbWVQYXJhbWV0ZXJzLmNvbmNhdChzdGVwQXJndW1lbnRQYXJhbWV0ZXJzKVxuICB9XG5cbiAgZ2V0Q3VjdW1iZXJFeHByZXNzaW9uKHBhcmFtZXRlclR5cGVSZWdpc3RyeSkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5wYXR0ZXJuID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIG5ldyBDdWN1bWJlckV4cHJlc3Npb24odGhpcy5wYXR0ZXJuLCBwYXJhbWV0ZXJUeXBlUmVnaXN0cnkpXG4gICAgfVxuICAgIHJldHVybiBuZXcgUmVndWxhckV4cHJlc3Npb24odGhpcy5wYXR0ZXJuLCBwYXJhbWV0ZXJUeXBlUmVnaXN0cnkpXG4gIH1cblxuICBnZXRWYWxpZENvZGVMZW5ndGhzKHBhcmFtZXRlcnMpIHtcbiAgICByZXR1cm4gW3BhcmFtZXRlcnMubGVuZ3RoLCBwYXJhbWV0ZXJzLmxlbmd0aCArIDFdXG4gIH1cblxuICBtYXRjaGVzU3RlcE5hbWUoeyBzdGVwTmFtZSwgcGFyYW1ldGVyVHlwZVJlZ2lzdHJ5IH0pIHtcbiAgICBjb25zdCBjdWN1bWJlckV4cHJlc3Npb24gPSB0aGlzLmdldEN1Y3VtYmVyRXhwcmVzc2lvbihwYXJhbWV0ZXJUeXBlUmVnaXN0cnkpXG4gICAgcmV0dXJuIEJvb2xlYW4oY3VjdW1iZXJFeHByZXNzaW9uLm1hdGNoKHN0ZXBOYW1lKSlcbiAgfVxufVxuIl19
|