UNPKG

cucumber

Version:

The official JavaScript implementation of Cucumber.

55 lines (48 loc) 3.36 kB
'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 _lodash = require('lodash');var _lodash2 = _interopRequireDefault(_lodash); var _cucumberExpressions = require('cucumber-expressions'); var _data_table = require('./step_arguments/data_table');var _data_table2 = _interopRequireDefault(_data_table); var _doc_string = require('./step_arguments/doc_string');var _doc_string2 = _interopRequireDefault(_doc_string);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}var StepDefinition = function () { function StepDefinition(_ref) {var code = _ref.code;var line = _ref.line;var options = _ref.options;var pattern = _ref.pattern;var 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;var transformLookup = _ref2.transformLookup; var cucumberExpression = this.getCucumberExpression(transformLookup); var stepNameParameters = _lodash2.default.map(cucumberExpression.match(step.name), 'transformedValue'); var stepArgumentParameters = step.arguments.map(function (arg) { if (arg instanceof _data_table2.default) { return arg; } else if (arg instanceof _doc_string2.default) { return arg.content; } else { throw new Error('Unknown argument type:' + arg); } }); return stepNameParameters.concat(stepArgumentParameters); } }, { key: 'getCucumberExpression', value: function getCucumberExpression( transformLookup) { if (typeof this.pattern === 'string') { return new _cucumberExpressions.CucumberExpression(this.pattern, [], transformLookup); } else { return new _cucumberExpressions.RegularExpression(this.pattern, [], transformLookup); } } }, { key: 'getValidCodeLengths', value: function getValidCodeLengths( parameters) { return [parameters.length, parameters.length + 1]; } }, { key: 'matchesStepName', value: function matchesStepName(_ref3) {var stepName = _ref3.stepName;var transformLookup = _ref3.transformLookup; var cucumberExpression = this.getCucumberExpression(transformLookup); return Boolean(cucumberExpression.match(stepName)); } }]);return StepDefinition;}();exports.default = StepDefinition;