@@ -5,6 +5,7 @@ import 'package:barback/barback.dart';
55import 'package:angular2/src/dom/html_adapter.dart' ;
66import 'package:angular2/src/render/api.dart' ;
77import 'package:angular2/src/transform/common/asset_reader.dart' ;
8+ import 'package:angular2/src/transform/common/logging.dart' ;
89import 'package:angular2/src/transform/common/parser.dart' ;
910import 'package:angular2/src/transform/template_compiler/directive_metadata_reader.dart' ;
1011import 'package:angular2/src/transform/template_compiler/generator.dart' ;
@@ -20,6 +21,8 @@ void allTests() {
2021 AssetReader reader = new TestAssetReader ();
2122 var parser = new Parser (reader);
2223
24+ beforeEach (() => setLogger (new PrintLogger ()));
25+
2326 it ('should parse simple expressions in inline templates.' , () async {
2427 var inputPath =
2528 'template_compiler/inline_expression_files/hello.ng_deps.dart' ;
@@ -54,31 +57,29 @@ void allTests() {
5457 });
5558
5659 describe ('DirectiveMetadataReader' , () {
57- Future <DirectiveMetadata > readSingleMetadata (inputPath) async {
60+ Future <DirectiveMetadata > readMetadata (inputPath) async {
5861 var ngDeps = await parser.parse (new AssetId ('a' , inputPath));
59- var metadata = readDirectiveMetadata (ngDeps.registeredTypes.first);
60- expect (metadata.length).toEqual (1 );
61- return metadata.first;
62+ return readDirectiveMetadata (ngDeps.registeredTypes.first);
6263 }
6364
6465 it ('should parse selectors' , () async {
65- var metadata = await readSingleMetadata (
66+ var metadata = await readMetadata (
6667 'template_compiler/directive_metadata_files/selector.ng_deps.dart' );
6768 expect (metadata.selector).toEqual ('hello-app' );
6869 });
6970
7071 it ('should parse compile children values' , () async {
71- var metadata = await readSingleMetadata ('template_compiler/'
72+ var metadata = await readMetadata ('template_compiler/'
7273 'directive_metadata_files/compile_children.ng_deps.dart' );
7374 expect (metadata.compileChildren).toBeTrue ();
7475
75- metadata = await readSingleMetadata (
76+ metadata = await readMetadata (
7677 'template_compiler/directive_metadata_files/selector.ng_deps.dart' );
7778 expect (metadata.compileChildren).toBeFalse ();
7879 });
7980
8081 it ('should parse properties.' , () async {
81- var metadata = await readSingleMetadata ('template_compiler/'
82+ var metadata = await readMetadata ('template_compiler/'
8283 'directive_metadata_files/properties.ng_deps.dart' );
8384 expect (metadata.properties).toBeNotNull ();
8485 expect (metadata.properties.length).toBe (2 );
@@ -89,7 +90,7 @@ void allTests() {
8990 });
9091
9192 it ('should parse host listeners.' , () async {
92- var metadata = await readSingleMetadata ('template_compiler/'
93+ var metadata = await readMetadata ('template_compiler/'
9394 'directive_metadata_files/host_listeners.ng_deps.dart' );
9495 expect (metadata.hostListeners).toBeNotNull ();
9596 expect (metadata.hostListeners.length).toBe (2 );
@@ -98,6 +99,14 @@ void allTests() {
9899 expect (metadata.hostListeners).toContain ('keyDown' );
99100 expect (metadata.hostListeners['keyDown' ]).toEqual ('onKeyDown(\$ event)' );
100101 });
102+
103+ it ('should fail when a class is annotated with multiple Directives.' ,
104+ () async {
105+ var ngDeps = await parser.parse (new AssetId ('a' , 'template_compiler/'
106+ 'directive_metadata_files/too_many_directives.ng_deps.dart' ));
107+ expect (() => readDirectiveMetadata (ngDeps.registeredTypes.first))
108+ .toThrowWith (anInstanceOf: PrintLoggerError );
109+ });
101110 });
102111}
103112
0 commit comments