1+ import { isPresent } from 'angular2/src/facade/lang' ;
2+ import { ListWrapper } from 'angular2/src/facade/collection' ;
13import { ddescribe , describe , it , iit , expect , beforeEach } from 'angular2/test_lib' ;
24import { DirectiveMetadataReader } from 'angular2/src/core/compiler/directive_metadata_reader' ;
35import { Decorator , Component , Viewport } from 'angular2/src/core/annotations/annotations' ;
46import { DirectiveMetadata } from 'angular2/src/core/compiler/directive_metadata' ;
7+ import { Injectable , Injector } from 'angular2/di' ;
58
9+ @Injectable ( )
10+ class SomeInjectable { }
611
712@Decorator ( { selector : 'someDecorator' } )
813class SomeDecorator { }
914
10- @Component ( { selector : 'someComponent' } )
15+ @Component ( { selector : 'someComponent' , injectables : [ SomeInjectable ] } )
1116class SomeComponent { }
1217
1318@Viewport ( { selector : 'someViewport' } )
@@ -27,19 +32,30 @@ export function main() {
2732 it ( 'should read out the Decorator annotation' , ( ) => {
2833 var directiveMetadata = reader . read ( SomeDecorator ) ;
2934 expect ( directiveMetadata ) . toEqual (
30- new DirectiveMetadata ( SomeDecorator , new Decorator ( { selector : 'someDecorator' } ) ) ) ;
35+ new DirectiveMetadata ( SomeDecorator , new Decorator ( { selector : 'someDecorator' } ) , null ) ) ;
3136 } ) ;
3237
3338 it ( 'should read out the Viewport annotation' , ( ) => {
3439 var directiveMetadata = reader . read ( SomeViewport ) ;
3540 expect ( directiveMetadata ) . toEqual (
36- new DirectiveMetadata ( SomeViewport , new Viewport ( { selector : 'someViewport' } ) ) ) ;
41+ new DirectiveMetadata ( SomeViewport , new Viewport ( { selector : 'someViewport' } ) , null ) ) ;
3742 } ) ;
3843
3944 it ( 'should read out the Component annotation' , ( ) => {
40- var directiveMetadata = reader . read ( SomeComponent ) ;
41- expect ( directiveMetadata ) . toEqual (
42- new DirectiveMetadata ( SomeComponent , new Component ( { selector : 'someComponent' } ) ) ) ;
45+ var m = reader . read ( SomeComponent ) ;
46+ // For some reason `toEqual` fails to compare ResolvedBinding objects.
47+ // Have to decompose and compare.
48+ expect ( m . type ) . toEqual ( SomeComponent ) ;
49+ expect ( m . annotation )
50+ . toEqual ( new Component ( { selector : 'someComponent' , injectables : [ SomeInjectable ] } ) ) ;
51+ var resolvedList = ListWrapper . reduce ( m . resolvedInjectables , function ( prev , elem ) {
52+ if ( isPresent ( elem ) ) {
53+ ListWrapper . push ( prev , elem ) ;
54+ }
55+ return prev ;
56+ } , [ ] ) ;
57+ expect ( resolvedList . length ) . toBe ( 1 ) ;
58+ expect ( resolvedList [ 0 ] . key . token ) . toBe ( SomeInjectable ) ;
4359 } ) ;
4460
4561 it ( 'should throw if not matching annotation is found' , ( ) => {
0 commit comments