@@ -4,6 +4,7 @@ import {By} from '@angular/platform-browser';
44import { ConnectedOverlayDirective , OverlayModule } from './overlay-directives' ;
55import { OverlayContainer } from './overlay-container' ;
66import { ConnectedPositionStrategy } from './position/connected-position-strategy' ;
7+ import { ConnectedOverlayPositionChange } from './position/connected-position' ;
78
89
910describe ( 'Overlay directives' , ( ) => {
@@ -110,18 +111,6 @@ describe('Overlay directives', () => {
110111 expect ( backdrop . classList ) . toContain ( 'md-test-class' ) ;
111112 } ) ;
112113
113- it ( 'should emit backdropClick appropriately' , ( ) => {
114- fixture . componentInstance . hasBackdrop = true ;
115- fixture . componentInstance . isOpen = true ;
116- fixture . detectChanges ( ) ;
117-
118- const backdrop = overlayContainerElement . querySelector ( '.md-overlay-backdrop' ) as HTMLElement ;
119- backdrop . click ( ) ;
120- fixture . detectChanges ( ) ;
121-
122- expect ( fixture . componentInstance . backdropClicked ) . toBe ( true ) ;
123- } ) ;
124-
125114 it ( 'should set the offsetX' , ( ) => {
126115 const trigger = fixture . debugElement . query ( By . css ( 'button' ) ) . nativeElement ;
127116 const startX = trigger . getBoundingClientRect ( ) . left ;
@@ -154,15 +143,42 @@ describe('Overlay directives', () => {
154143
155144 } ) ;
156145
146+ describe ( 'outputs' , ( ) => {
147+ it ( 'should emit backdropClick appropriately' , ( ) => {
148+ fixture . componentInstance . hasBackdrop = true ;
149+ fixture . componentInstance . isOpen = true ;
150+ fixture . detectChanges ( ) ;
151+
152+ const backdrop = overlayContainerElement . querySelector ( '.md-overlay-backdrop' ) as HTMLElement ;
153+ backdrop . click ( ) ;
154+ fixture . detectChanges ( ) ;
155+
156+ expect ( fixture . componentInstance . backdropClicked ) . toBe ( true ) ;
157+ } ) ;
158+
159+ it ( 'should emit positionChange appropriately' , ( ) => {
160+ expect ( fixture . componentInstance . positionChangeHandler ) . not . toHaveBeenCalled ( ) ;
161+ fixture . componentInstance . isOpen = true ;
162+ fixture . detectChanges ( ) ;
163+
164+ expect ( fixture . componentInstance . positionChangeHandler ) . toHaveBeenCalled ( ) ;
165+ expect ( fixture . componentInstance . positionChangeHandler . calls . mostRecent ( ) . args [ 0 ] )
166+ . toEqual ( jasmine . any ( ConnectedOverlayPositionChange ) ,
167+ `Expected directive to emit an instance of ConnectedOverlayPositionChange.` ) ;
168+ } ) ;
169+
170+ } ) ;
171+
157172} ) ;
158173
159174
160175@Component ( {
161176 template : `
162177 <button overlay-origin #trigger="overlayOrigin">Toggle menu</button>
163178 <template connected-overlay [origin]="trigger" [open]="isOpen" [width]="width" [height]="height"
164- [hasBackdrop]="hasBackdrop" backdropClass="md-test-class"
165- (backdropClick)="backdropClicked=true" [offsetX]="offsetX" [offsetY]="offsetY">
179+ [hasBackdrop]="hasBackdrop" backdropClass="md-test-class"
180+ (backdropClick)="backdropClicked=true" [offsetX]="offsetX" [offsetY]="offsetY"
181+ (positionChange)="positionChangeHandler($event)">
166182 <p>Menu content</p>
167183 </template>` ,
168184} )
@@ -174,6 +190,7 @@ class ConnectedOverlayDirectiveTest {
174190 offsetY : number = 0 ;
175191 hasBackdrop : boolean ;
176192 backdropClicked = false ;
193+ positionChangeHandler = jasmine . createSpy ( 'positionChangeHandler' ) ;
177194
178195 @ViewChild ( ConnectedOverlayDirective ) connectedOverlayDirective : ConnectedOverlayDirective ;
179196}
0 commit comments