UNPKG

cucumber

Version:

The official JavaScript implementation of Cucumber.

121 lines (97 loc) 5.25 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 _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);var _inherits2 = require('babel-runtime/helpers/inherits');var _inherits3 = _interopRequireDefault(_inherits2);var _lodash = require('lodash');var _lodash2 = _interopRequireDefault(_lodash); var _data_table = require('../models/step_arguments/data_table');var _data_table2 = _interopRequireDefault(_data_table); var _doc_string = require('../models/step_arguments/doc_string');var _doc_string2 = _interopRequireDefault(_doc_string); var _2 = require('./');var _3 = _interopRequireDefault(_2); var _status = require('../status');var _status2 = _interopRequireDefault(_status); var _util = require('util');var _util2 = _interopRequireDefault(_util);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}var JsonFormatter = function (_Formatter) {(0, _inherits3.default)(JsonFormatter, _Formatter); function JsonFormatter(options) {(0, _classCallCheck3.default)(this, JsonFormatter);var _this = (0, _possibleConstructorReturn3.default)(this, (JsonFormatter.__proto__ || Object.getPrototypeOf(JsonFormatter)).call(this, options)); _this.features = [];return _this; }(0, _createClass3.default)(JsonFormatter, [{ key: 'convertNameToId', value: function convertNameToId( obj) { return obj.name.replace(/ /g, '-').toLowerCase(); } }, { key: 'formatAttachments', value: function formatAttachments( attachments) { return attachments.map(function (attachment) { return { data: attachment.data, mime_type: attachment.mimeType }; }); } }, { key: 'formatDataTable', value: function formatDataTable( dataTable) { return { rows: dataTable.raw().map(function (row) { return { cells: row }; }) }; } }, { key: 'formatDocString', value: function formatDocString( docString) { return _lodash2.default.pick(docString, ['content', 'contentType', 'line']); } }, { key: 'formatStepArguments', value: function formatStepArguments( stepArguments) {var _this2 = this; return _lodash2.default.map(stepArguments, function (arg) { if (arg instanceof _data_table2.default) { return _this2.formatDataTable(arg); } else if (arg instanceof _doc_string2.default) { return _this2.formatDocString(arg); } else { throw new Error('Unknown argument type: ' + _util2.default.inspect(arg)); } }); } }, { key: 'handleAfterFeatures', value: function handleAfterFeatures() { this.log(JSON.stringify(this.features, null, 2)); } }, { key: 'handleBeforeFeature', value: function handleBeforeFeature( feature) { this.currentFeature = _lodash2.default.pick(feature, [ 'description', 'keyword', 'line', 'name', 'tags', 'uri']); _lodash2.default.assign(this.currentFeature, { elements: [], id: this.convertNameToId(feature) }); this.features.push(this.currentFeature); } }, { key: 'handleBeforeScenario', value: function handleBeforeScenario( scenario) { this.currentScenario = _lodash2.default.pick(scenario, [ 'description', 'keyword', 'line', 'name', 'tags']); _lodash2.default.assign(this.currentScenario, { id: this.currentFeature.id + ';' + this.convertNameToId(scenario), steps: [] }); this.currentFeature.elements.push(this.currentScenario); } }, { key: 'handleStepResult', value: function handleStepResult( stepResult) { var step = stepResult.step; var status = stepResult.status; var currentStep = { arguments: this.formatStepArguments(step.arguments), keyword: step.keyword, name: step.name, result: { status: status } }; if (step.constructor.name === 'Hook') { currentStep.hidden = true; } else { currentStep.line = step.line; } if (status === _status2.default.PASSED || status === _status2.default.FAILED) { currentStep.result.duration = stepResult.duration; } if (_lodash2.default.size(stepResult.attachments) > 0) { currentStep.embeddings = this.formatAttachments(stepResult.attachments); } if (status === _status2.default.FAILED && stepResult.failureException) { currentStep.result.error_message = stepResult.failureException.stack || stepResult.failureException; } if (stepResult.stepDefinition) { var location = stepResult.stepDefinition.uri + ':' + stepResult.stepDefinition.line; currentStep.match = { location: location }; } this.currentScenario.steps.push(currentStep); } }]);return JsonFormatter;}(_3.default);exports.default = JsonFormatter;