UNPKG

@webex/jsdoctrinetest

Version:
69 lines (64 loc) 2.21 kB
"use strict"; var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property"); var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault"); _Object$defineProperty(exports, "__esModule", { value: true }); exports.default = transform; var _deleteProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/delete-property")); var _template = _interopRequireDefault(require("@babel/template")); var _traverse = _interopRequireDefault(require("@babel/traverse")); var _parse = _interopRequireDefault(require("./parse")); var _mochaTemplate = _interopRequireDefault(require("./mocha-template")); var _literal = require("./assertions/literal"); /*! * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file. */ var assertionStatementTemplate = (0, _template.default)("\n return Promise.resolve(ORIGINAL)\n .then(function(result) {\n ASSERTIONS\n })\n"); /** * @param {Object} options * @param {ast} options.comment * @param {string} options.name * @param {string} options.filename * @param {string} options.type * @returns {ast} */ function transform(_ref) { var comment = _ref.comment, name = _ref.name, filename = _ref.filename, type = _ref.type; var ast = (0, _parse.default)(comment); (0, _traverse.default)(ast, { enter: function enter(path) { if (path.node.trailingComments) { var assertions = path.node.trailingComments.map(makeAsserter); if (assertions.length) { (0, _deleteProperty.default)(path.node, 'trailingComments'); path.replaceWith(assertionStatementTemplate({ ORIGINAL: path.node, ASSERTIONS: assertions })); } } } }); return (0, _mochaTemplate.default)({ testCase: ast, name: name, filename: filename, type: type }); } /** * Takes a trailing comment from an example block and changes it to an assertion * @param {CommentBlock} comment * @returns {ast} */ function makeAsserter(comment) { if ((0, _literal.test)(comment.value)) { return (0, _literal.build)(comment.value); } return null; } //# sourceMappingURL=transform.js.map