11import { ddescribe , describe , it , iit , expect , beforeEach } from 'angular2/test_lib' ;
22import { DirectiveResolver } from 'angular2/src/core/compiler/directive_resolver' ;
3- import { DirectiveMetadata , Directive , Property , Event } from 'angular2/metadata' ;
3+ import {
4+ DirectiveMetadata ,
5+ Directive ,
6+ Property ,
7+ Event ,
8+ HostBinding ,
9+ HostListener
10+ } from 'angular2/metadata' ;
411
512@Directive ( { selector : 'someDirective' } )
613class SomeDirective {
@@ -11,7 +18,7 @@ class SomeChildDirective extends SomeDirective {
1118}
1219
1320@Directive ( { selector : 'someDirective' , properties : [ 'c' ] } )
14- class SomeDirectiveWithProps {
21+ class SomeDirectiveWithProperties {
1522 @Property ( ) a ;
1623 @Property ( "renamed" ) b ;
1724 c ;
@@ -40,6 +47,23 @@ class SomeDirectiveWithGetterEvents {
4047 }
4148}
4249
50+ @Directive ( { selector : 'someDirective' , host : { '[c]' : 'c' } } )
51+ class SomeDirectiveWithHostBindings {
52+ @HostBinding ( ) a ;
53+ @HostBinding ( "renamed" ) b ;
54+ c ;
55+ }
56+
57+ @Directive ( { selector : 'someDirective' , host : { '(c)' : 'onC()' } } )
58+ class SomeDirectiveWithHostListeners {
59+ @HostListener ( 'a' )
60+ onA ( ) {
61+ }
62+ @HostListener ( 'b' , [ '$event.value' ] )
63+ onB ( value ) {
64+ }
65+ }
66+
4367
4468class SomeDirectiveWithoutMetadata { }
4569
@@ -52,7 +76,8 @@ export function main() {
5276 it ( 'should read out the Directive metadata' , ( ) => {
5377 var directiveMetadata = resolver . resolve ( SomeDirective ) ;
5478 expect ( directiveMetadata )
55- . toEqual ( new DirectiveMetadata ( { selector : 'someDirective' , properties : [ ] , events : [ ] } ) ) ;
79+ . toEqual ( new DirectiveMetadata (
80+ { selector : 'someDirective' , properties : [ ] , events : [ ] , host : { } } ) ) ;
5681 } ) ;
5782
5883 it ( 'should throw if not matching metadata is found' , ( ) => {
@@ -63,39 +88,44 @@ export function main() {
6388 it ( 'should not read parent class Directive metadata' , function ( ) {
6489 var directiveMetadata = resolver . resolve ( SomeChildDirective ) ;
6590 expect ( directiveMetadata )
66- . toEqual (
67- new DirectiveMetadata ( { selector : 'someChildDirective' , properties : [ ] , events : [ ] } ) ) ;
91+ . toEqual ( new DirectiveMetadata (
92+ { selector : 'someChildDirective' , properties : [ ] , events : [ ] , host : { } } ) ) ;
6893 } ) ;
6994
7095 describe ( 'properties' , ( ) => {
7196 it ( 'should append directive properties' , ( ) => {
72- var directiveMetadata = resolver . resolve ( SomeDirectiveWithProps ) ;
73- expect ( directiveMetadata )
74- . toEqual ( new DirectiveMetadata (
75- { selector : 'someDirective' , properties : [ 'c' , 'a' , 'b: renamed' ] , events : [ ] } ) ) ;
97+ var directiveMetadata = resolver . resolve ( SomeDirectiveWithProperties ) ;
98+ expect ( directiveMetadata . properties ) . toEqual ( [ 'c' , 'a' , 'b: renamed' ] ) ;
7699 } ) ;
77100
78101 it ( 'should work with getters and setters' , ( ) => {
79102 var directiveMetadata = resolver . resolve ( SomeDirectiveWithSetterProps ) ;
80- expect ( directiveMetadata )
81- . toEqual ( new DirectiveMetadata (
82- { selector : 'someDirective' , properties : [ 'a: renamed' ] , events : [ ] } ) ) ;
103+ expect ( directiveMetadata . properties ) . toEqual ( [ 'a: renamed' ] ) ;
83104 } ) ;
84105 } ) ;
85106
86107 describe ( 'events' , ( ) => {
87108 it ( 'should append directive events' , ( ) => {
88109 var directiveMetadata = resolver . resolve ( SomeDirectiveWithEvents ) ;
89- expect ( directiveMetadata )
90- . toEqual ( new DirectiveMetadata (
91- { selector : 'someDirective' , properties : [ ] , events : [ 'c' , 'a' , 'b: renamed' ] } ) ) ;
110+ expect ( directiveMetadata . events ) . toEqual ( [ 'c' , 'a' , 'b: renamed' ] ) ;
92111 } ) ;
93112
94113 it ( 'should work with getters and setters' , ( ) => {
95114 var directiveMetadata = resolver . resolve ( SomeDirectiveWithGetterEvents ) ;
96- expect ( directiveMetadata )
97- . toEqual ( new DirectiveMetadata (
98- { selector : 'someDirective' , properties : [ ] , events : [ 'a: renamed' ] } ) ) ;
115+ expect ( directiveMetadata . events ) . toEqual ( [ 'a: renamed' ] ) ;
116+ } ) ;
117+ } ) ;
118+
119+ describe ( 'host' , ( ) => {
120+ it ( 'should append host bindings' , ( ) => {
121+ var directiveMetadata = resolver . resolve ( SomeDirectiveWithHostBindings ) ;
122+ expect ( directiveMetadata . host ) . toEqual ( { '[c]' : 'c' , '[a]' : 'a' , '[renamed]' : 'b' } ) ;
123+ } ) ;
124+
125+ it ( 'should append host listeners' , ( ) => {
126+ var directiveMetadata = resolver . resolve ( SomeDirectiveWithHostListeners ) ;
127+ expect ( directiveMetadata . host )
128+ . toEqual ( { '(c)' : 'onC()' , '(a)' : 'onA()' , '(b)' : 'onB($event.value)' } ) ;
99129 } ) ;
100130 } ) ;
101131 } ) ;
0 commit comments