67 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var mockPackage = require('../mocks/mockPackage');
 | 
						|
var Dgeni = require('dgeni');
 | 
						|
 | 
						|
describe('getJSDocComment service', function() {
 | 
						|
 | 
						|
  var dgeni, injector, getJSDocComment;
 | 
						|
 | 
						|
  function createComment(commentString, start, end, codeTree) {
 | 
						|
    return {
 | 
						|
      range: {
 | 
						|
        toString: function() { return commentString; },
 | 
						|
        start: { line: start },
 | 
						|
        end: { line: end },
 | 
						|
      },
 | 
						|
      treeAfter: codeTree
 | 
						|
    };
 | 
						|
  }
 | 
						|
 | 
						|
  beforeEach(function() {
 | 
						|
    dgeni = new Dgeni([mockPackage()]);
 | 
						|
    injector = dgeni.configureInjector();
 | 
						|
    getJSDocComment = injector.get('getJSDocComment');
 | 
						|
  });
 | 
						|
 | 
						|
  it('should only return an object if the comment starts with /** and ends with */', function() {
 | 
						|
    var result = getJSDocComment(createComment('/** this is a jsdoc comment */'));
 | 
						|
    expect(result).toBeDefined();
 | 
						|
 | 
						|
    result = getJSDocComment(createComment('/* this is a normal comment */'));
 | 
						|
    expect(result).toBeUndefined();
 | 
						|
 | 
						|
    result = getJSDocComment(createComment('this is not a valid comment */'));
 | 
						|
    expect(result).toBeUndefined();
 | 
						|
 | 
						|
    result = getJSDocComment(createComment('nor is this'));
 | 
						|
    expect(result).toBeUndefined();
 | 
						|
 | 
						|
    result = getJSDocComment(createComment('/* or even this'));
 | 
						|
    expect(result).toBeUndefined();
 | 
						|
 | 
						|
    result = getJSDocComment(createComment('/** and this'));
 | 
						|
    expect(result).toBeUndefined();
 | 
						|
  });
 | 
						|
 | 
						|
 | 
						|
  it('should return a result that contains info about the comment', function() {
 | 
						|
    var codeTree = {};
 | 
						|
    var result = getJSDocComment(createComment('/** this is a comment */', 10, 20, codeTree));
 | 
						|
    expect(result.startingLine).toEqual(10);
 | 
						|
    expect(result.endingLine).toEqual(20);
 | 
						|
    expect(result.codeTree).toBe(codeTree);
 | 
						|
  });
 | 
						|
 | 
						|
  it('should strip off leading stars from each line', function() {
 | 
						|
    var result = getJSDocComment(createComment(
 | 
						|
      '/** this is a jsdoc comment */\n' +
 | 
						|
      ' *\n' +
 | 
						|
      ' * some content\n' +
 | 
						|
      ' */'
 | 
						|
    ));
 | 
						|
    expect(result.content).toEqual(
 | 
						|
      'this is a jsdoc comment */\n' +
 | 
						|
      '\n' +
 | 
						|
      'some content'
 | 
						|
    );
 | 
						|
  });
 | 
						|
}); |