1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _deleteProperty = require('babel-runtime/core-js/reflect/delete-property');
|
8 |
|
9 | var _deleteProperty2 = _interopRequireDefault(_deleteProperty);
|
10 |
|
11 | exports.default = transform;
|
12 |
|
13 | var _parse = require('./parse');
|
14 |
|
15 | var _parse2 = _interopRequireDefault(_parse);
|
16 |
|
17 | var _babelTemplate = require('babel-template');
|
18 |
|
19 | var _babelTemplate2 = _interopRequireDefault(_babelTemplate);
|
20 |
|
21 | var _babelTraverse = require('babel-traverse');
|
22 |
|
23 | var _babelTraverse2 = _interopRequireDefault(_babelTraverse);
|
24 |
|
25 | var _mochaTemplate = require('./mocha-template');
|
26 |
|
27 | var _mochaTemplate2 = _interopRequireDefault(_mochaTemplate);
|
28 |
|
29 | var _literal = require('./assertions/literal');
|
30 |
|
31 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
32 |
|
33 | var assertionStatementTemplate = (0, _babelTemplate2.default)('\n return Promise.resolve(ORIGINAL)\n .then(function(result) {\n ASSERTIONS\n })\n');
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 | function 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 |
|
81 |
|
82 |
|
83 |
|
84 | function makeAsserter(comment) {
|
85 | if ((0, _literal.test)(comment.value)) {
|
86 | return (0, _literal.build)(comment.value);
|
87 | }
|
88 |
|
89 | return null;
|
90 | }
|
91 |
|