80 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			80 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								var mockPackage = require('../mocks/mockPackage');
							 | 
						||
| 
								 | 
							
								var Dgeni = require('dgeni');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe('atParser service', function() {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var dgeni, injector, parser;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var fileContent =
							 | 
						||
| 
								 | 
							
								    'import {CONST} from "facade/lang";\n' +
							 | 
						||
| 
								 | 
							
								    '\n' +
							 | 
						||
| 
								 | 
							
								    '/**\n' +
							 | 
						||
| 
								 | 
							
								     '* A parameter annotation that creates a synchronous eager dependency.\n' +
							 | 
						||
| 
								 | 
							
								     '*\n' +
							 | 
						||
| 
								 | 
							
								     '*    class AComponent {\n' +
							 | 
						||
| 
								 | 
							
								     '*      constructor(@Inject("aServiceToken") aService) {}\n' +
							 | 
						||
| 
								 | 
							
								     '*    }\n' +
							 | 
						||
| 
								 | 
							
								     '*\n' +
							 | 
						||
| 
								 | 
							
								     '*/\n' +
							 | 
						||
| 
								 | 
							
								    'export class Inject {\n' +
							 | 
						||
| 
								 | 
							
								      'token;\n' +
							 | 
						||
| 
								 | 
							
								      '@CONST()\n' +
							 | 
						||
| 
								 | 
							
								      'constructor(token) {\n' +
							 | 
						||
| 
								 | 
							
								        'this.token = token;\n' +
							 | 
						||
| 
								 | 
							
								      '}\n' +
							 | 
						||
| 
								 | 
							
								    '}';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  beforeEach(function() {
							 | 
						||
| 
								 | 
							
								    dgeni = new Dgeni([mockPackage()]);
							 | 
						||
| 
								 | 
							
								    injector = dgeni.configureInjector();
							 | 
						||
| 
								 | 
							
								    parser = injector.get('atParser');
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('should extract the comments from the file', function() {
							 | 
						||
| 
								 | 
							
								    var result = parser.parseModule({
							 | 
						||
| 
								 | 
							
								      content: fileContent,
							 | 
						||
| 
								 | 
							
								      relativePath: 'di/src/annotations.js'
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    expect(result.comments[0].range.toString()).toEqual(
							 | 
						||
| 
								 | 
							
								      '/**\n' +
							 | 
						||
| 
								 | 
							
								       '* A parameter annotation that creates a synchronous eager dependency.\n' +
							 | 
						||
| 
								 | 
							
								       '*\n' +
							 | 
						||
| 
								 | 
							
								       '*    class AComponent {\n' +
							 | 
						||
| 
								 | 
							
								       '*      constructor(@Inject("aServiceToken") aService) {}\n' +
							 | 
						||
| 
								 | 
							
								       '*    }\n' +
							 | 
						||
| 
								 | 
							
								       '*\n' +
							 | 
						||
| 
								 | 
							
								       '*/'
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('should extract a module AST from the file', function() {
							 | 
						||
| 
								 | 
							
								    var result = parser.parseModule({
							 | 
						||
| 
								 | 
							
								      content: fileContent,
							 | 
						||
| 
								 | 
							
								      relativePath: 'di/src/annotations.js'
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    expect(result.moduleTree.moduleName).toEqual('di/annotations');
							 | 
						||
| 
								 | 
							
								    expect(result.moduleTree.scriptItemList[0].type).toEqual('IMPORT_DECLARATION');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    expect(result.moduleTree.scriptItemList[1].type).toEqual('EXPORT_DECLARATION');
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('should attach comments to their following AST', function() {
							 | 
						||
| 
								 | 
							
								    var result = parser.parseModule({
							 | 
						||
| 
								 | 
							
								      content: fileContent,
							 | 
						||
| 
								 | 
							
								      relativePath: 'di/src/annotations.js'
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    expect(result.moduleTree.scriptItemList[1].commentBefore.range.toString()).toEqual(
							 | 
						||
| 
								 | 
							
								      '/**\n' +
							 | 
						||
| 
								 | 
							
								       '* A parameter annotation that creates a synchronous eager dependency.\n' +
							 | 
						||
| 
								 | 
							
								       '*\n' +
							 | 
						||
| 
								 | 
							
								       '*    class AComponent {\n' +
							 | 
						||
| 
								 | 
							
								       '*      constructor(@Inject("aServiceToken") aService) {}\n' +
							 | 
						||
| 
								 | 
							
								       '*    }\n' +
							 | 
						||
| 
								 | 
							
								       '*\n' +
							 | 
						||
| 
								 | 
							
								       '*/'
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								});
							 |