@webex/jsdoctrinetest
Version:
69 lines (64 loc) • 2.21 kB
JavaScript
"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