Implement deferred libraries to work with dependency injection and other angular codegen. This is done by not initializing the library in the parent ng_deps file when it is declared as deferred, rewriting the import and, chaining a future that initializes the library in any files that are using deferred libraries which need angular codegen.
		
			
				
	
	
		
			59 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| library angular2.test.transform.deferred_rewriter.all_tests;
 | |
| 
 | |
| import 'package:barback/barback.dart';
 | |
| import 'package:angular2/src/transform/deferred_rewriter/transformer.dart';
 | |
| import 'package:angular2/src/transform/common/annotation_matcher.dart';
 | |
| import 'package:angular2/src/transform/common/asset_reader.dart';
 | |
| import 'package:angular2/src/transform/common/logging.dart' as log;
 | |
| import 'package:code_transformers/messages/build_logger.dart';
 | |
| import 'package:dart_style/dart_style.dart';
 | |
| import 'package:guinness/guinness.dart';
 | |
| import 'package:path/path.dart' as path;
 | |
| import '../common/read_file.dart';
 | |
| 
 | |
| var formatter = new DartFormatter();
 | |
| 
 | |
| main() {
 | |
|   allTests();
 | |
| }
 | |
| 
 | |
| void allTests() {
 | |
|   _testRewriteDeferredLibraries(
 | |
|       'should return null when no deferred libraries found.',
 | |
|       'no_deferred_libraries/index.dart');
 | |
|   _testRewriteDeferredLibraries(
 | |
|       'should return null when deferred libraries with no ng_deps.',
 | |
|       'no_ng_deps_libraries/index.dart');
 | |
|   _testRewriteDeferredLibraries(
 | |
|       'should rewrite deferred libraries with ng_deps.',
 | |
|       'simple_deferred_example/index.dart');
 | |
|   _testRewriteDeferredLibraries(
 | |
|       'should not rewrite deferred libraries without ng_deps.',
 | |
|       'deferred_example_no_ng_deps/index.dart');
 | |
|   _testRewriteDeferredLibraries(
 | |
|       'should rewrite deferred libraries with ng_deps leave other deferred library alone.',
 | |
|       'complex_deferred_example/index.dart');
 | |
| }
 | |
| 
 | |
| void _testRewriteDeferredLibraries(String name, String inputPath) {
 | |
|   it(name, () async {
 | |
|     var inputId = _assetIdForPath(inputPath);
 | |
|     var reader = new TestAssetReader();
 | |
|     var expectedPath = path.join(
 | |
|         path.dirname(inputPath), 'expected', path.basename(inputPath));
 | |
|     var expectedId = _assetIdForPath(expectedPath);
 | |
| 
 | |
|     var output = await rewriteDeferredLibraries(reader, inputId);
 | |
|     var input = await reader.readAsString(expectedId);
 | |
|     if (input == null) {
 | |
|       // Null input signals no output. Ensure that is true.
 | |
|       expect(output).toBeNull();
 | |
|     } else {
 | |
|       expect(formatter.format(output)).toEqual(formatter.format(input));
 | |
|     }
 | |
|   });
 | |
| }
 | |
| 
 | |
| AssetId _assetIdForPath(String path) =>
 | |
|     new AssetId('angular2', 'test/transform/deferred_rewriter/$path');
 |