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' +
 | |
|        '*/'
 | |
|     );
 | |
|   });
 | |
| }); |