UNPKG

2.33 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _deleteProperty = require('babel-runtime/core-js/reflect/delete-property');
8
9var _deleteProperty2 = _interopRequireDefault(_deleteProperty);
10
11exports.default = transform;
12
13var _parse = require('./parse');
14
15var _parse2 = _interopRequireDefault(_parse);
16
17var _babelTemplate = require('babel-template');
18
19var _babelTemplate2 = _interopRequireDefault(_babelTemplate);
20
21var _babelTraverse = require('babel-traverse');
22
23var _babelTraverse2 = _interopRequireDefault(_babelTraverse);
24
25var _mochaTemplate = require('./mocha-template');
26
27var _mochaTemplate2 = _interopRequireDefault(_mochaTemplate);
28
29var _literal = require('./assertions/literal');
30
31function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
32
33var assertionStatementTemplate = (0, _babelTemplate2.default)('\n return Promise.resolve(ORIGINAL)\n .then(function(result) {\n ASSERTIONS\n })\n');
34
35/**
36 * @param {Object} options
37 * @param {ast} options.comment
38 * @param {string} options.name
39 * @param {string} options.filename
40 * @param {string} options.type
41 * @returns {ast}
42 */
43/*!
44 * Copyright (c) 2015-2017 Cisco Systems, Inc. See LICENSE file.
45 */
46
47function transform(_ref) {
48 var comment = _ref.comment,
49 name = _ref.name,
50 filename = _ref.filename,
51 type = _ref.type;
52
53 var ast = (0, _parse2.default)(comment);
54
55 (0, _babelTraverse2.default)(ast, {
56 enter: function enter(path) {
57 if (path.node.trailingComments) {
58 var assertions = path.node.trailingComments.map(makeAsserter);
59 if (assertions.length) {
60 (0, _deleteProperty2.default)(path.node, 'trailingComments');
61
62 path.replaceWith(assertionStatementTemplate({
63 ORIGINAL: path.node,
64 ASSERTIONS: assertions
65 }));
66 }
67 }
68 }
69 });
70
71 return (0, _mochaTemplate2.default)({
72 testCase: ast,
73 name: name,
74 filename: filename,
75 type: type
76 });
77}
78
79/**
80 * Takes a trailing comment from an example block and changes it to an assertion
81 * @param {CommentBlock} comment
82 * @returns {ast}
83 */
84function makeAsserter(comment) {
85 if ((0, _literal.test)(comment.value)) {
86 return (0, _literal.build)(comment.value);
87 }
88
89 return null;
90}
91//# sourceMappingURL=transform.js.map