123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- /* eslint no-unused-vars:off */
- var expect = require('chai').expect
- var parse = require('./parse')
- describe('parse() with custom tag parsers', function () {
- function sample () {
- /**
- * @tag {type} name description
- */
- var a
- }
- it('should use `opts.parsers`', function () {
- var parsers = [
- function everything (str) {
- return {
- source: str,
- data: {
- tag: 'tag',
- type: 'type',
- name: 'name',
- optional: false,
- description: 'description'
- }
- }
- }
- ]
- expect(parse(sample, {parsers: parsers})[0])
- .to.eql({
- line: 1,
- description: '',
- source: '@tag {type} name description',
- tags: [{
- tag: 'tag',
- type: 'type',
- name: 'name',
- description: 'description',
- optional: false,
- source: '@tag {type} name description',
- line: 2
- }]
- })
- })
- it('should merge parsers result', function () {
- var parsers = [
- function parser1 (str) {
- return {
- source: '',
- data: {tag: 'tag'}
- }
- },
- function parser2 (str) {
- return {
- source: '',
- data: {type: 'type'}
- }
- },
- function parser3 (str) {
- return {
- source: '',
- data: {
- name: 'name',
- description: 'description'
- }
- }
- }
- ]
- expect(parse(sample, {parsers: parsers})[0])
- .to.eql({
- line: 1,
- description: '',
- source: '@tag {type} name description',
- tags: [{
- tag: 'tag',
- type: 'type',
- name: 'name',
- description: 'description',
- optional: false,
- source: '@tag {type} name description',
- line: 2
- }]
- })
- })
- it('should catch parser exceptions and populate `errors` field', function () {
- var parsers = [
- function parser1 (str) {
- return {
- source: '',
- data: {tag: 'tag'}
- }
- },
- function parser2 (str) {
- throw new Error('error 1')
- },
- function parser3 (str) {
- throw new Error('error 2')
- },
- function parser4 (str) {
- return {
- source: '',
- data: {name: 'name'}
- }
- }
- ]
- expect(parse(sample, {parsers: parsers})[0])
- .to.eql({
- line: 1,
- description: '',
- source: '@tag {type} name description',
- tags: [{
- tag: 'tag',
- type: '',
- name: 'name',
- description: '',
- optional: false,
- source: '@tag {type} name description',
- errors: [
- 'parser2: error 1',
- 'parser3: error 2'
- ],
- line: 2
- }]
- })
- })
- })
|