2018-01-24 14:10:41 +03:00

108 lines
2.0 KiB
JavaScript

const remark = require('remark');
const parse = require('../../../src/parsers/javascript');
function toComments(source, filename, opts) {
source = typeof source === 'string' ? source : '(' + source.toString() + ')';
return parse(
{
file: filename || 'test.js',
source
},
opts || {}
);
}
test('parse - leading comment', function() {
expect(
toComments(function() {
/** one */
/** two */
function two() {}
}).map(function(c) {
return c.description;
})
).toEqual([remark().parse('one'), remark().parse('two')]);
});
test('parse - trailing comment', function() {
expect(
toComments(function() {
/** one */
function one() {}
/** two */
}).map(function(c) {
return c.description;
})
).toEqual([remark().parse('one'), remark().parse('two')]);
});
test('parse - unknown tag', function() {
expect(
toComments(function() {
/** @unknown */
})[0].tags[0].title
).toBe('unknown');
});
test('parse - error', function() {
expect(
toComments(function() {
/** @param {foo */
})[0].errors
).toEqual([
{ message: 'Braces are not balanced' },
{ message: 'Missing or invalid tag name' }
]);
});
test('parse - document exported', function() {
expect(
toComments(
`
export class C {}
`
).length
).toBe(0);
expect(
toComments(
`
export class C {}
`,
'test.js',
{ documentExported: true }
).length
).toBe(1);
expect(
toComments(
`
export class C {
method() {}
}
`,
'test.js',
{ documentExported: true }
).length
).toBe(2);
});
test('parse - constructor comments', function() {
expect(
toComments(`
class Test {
/** @hideconstructor */
constructor() {}
}
`).length
).toBe(0);
expect(
toComments(`
/** Test */
export class Test {
/** @hideconstructor */
constructor() {}
}
`)[0].constructorComment
).toBeDefined();
});