@@ -21,7 +21,7 @@ import {
2121 MdAutocomplete ,
2222 MdAutocompleteModule ,
2323 MdAutocompleteTrigger ,
24- MdAutocompleteSelect ,
24+ MdAutocompleteSelectedEvent ,
2525} from './index' ;
2626import { MdInputModule } from '../input/index' ;
2727import { Subscription } from 'rxjs/Subscription' ;
@@ -1551,7 +1551,7 @@ describe('MdAutocomplete', () => {
15511551 } ) ;
15521552 } ) ) ;
15531553
1554- it ( 'should call emit an event when an option is selected' , fakeAsync ( ( ) => {
1554+ it ( 'should emit an event when an option is selected' , fakeAsync ( ( ) => {
15551555 let fixture = TestBed . createComponent ( AutocompleteWithSelectEvent ) ;
15561556
15571557 fixture . detectChanges ( ) ;
@@ -1560,19 +1560,45 @@ describe('MdAutocomplete', () => {
15601560 fixture . detectChanges ( ) ;
15611561
15621562 let options = overlayContainerElement . querySelectorAll ( 'md-option' ) as NodeListOf < HTMLElement > ;
1563- let spy = fixture . componentInstance . select ;
1563+ let spy = fixture . componentInstance . optionSelected ;
15641564
15651565 options [ 1 ] . click ( ) ;
15661566 tick ( ) ;
15671567 fixture . detectChanges ( ) ;
15681568
15691569 expect ( spy ) . toHaveBeenCalledTimes ( 1 ) ;
15701570
1571- let event = spy . calls . mostRecent ( ) . args [ 0 ] as MdAutocompleteSelect ;
1571+ let event = spy . calls . mostRecent ( ) . args [ 0 ] as MdAutocompleteSelectedEvent ;
15721572
15731573 expect ( event . source ) . toBe ( fixture . componentInstance . autocomplete ) ;
15741574 expect ( event . option . value ) . toBe ( 'Washington' ) ;
15751575 } ) ) ;
1576+
1577+ it ( 'should emit an event when a newly-added option is selected' , fakeAsync ( ( ) => {
1578+ let fixture = TestBed . createComponent ( AutocompleteWithSelectEvent ) ;
1579+
1580+ fixture . detectChanges ( ) ;
1581+ fixture . componentInstance . trigger . openPanel ( ) ;
1582+ tick ( ) ;
1583+ fixture . detectChanges ( ) ;
1584+
1585+ fixture . componentInstance . states . push ( 'Puerto Rico' ) ;
1586+ fixture . detectChanges ( ) ;
1587+
1588+ let options = overlayContainerElement . querySelectorAll ( 'md-option' ) as NodeListOf < HTMLElement > ;
1589+ let spy = fixture . componentInstance . optionSelected ;
1590+
1591+ options [ 3 ] . click ( ) ;
1592+ tick ( ) ;
1593+ fixture . detectChanges ( ) ;
1594+
1595+ expect ( spy ) . toHaveBeenCalledTimes ( 1 ) ;
1596+
1597+ let event = spy . calls . mostRecent ( ) . args [ 0 ] as MdAutocompleteSelectedEvent ;
1598+
1599+ expect ( event . source ) . toBe ( fixture . componentInstance . autocomplete ) ;
1600+ expect ( event . option . value ) . toBe ( 'Puerto Rico' ) ;
1601+ } ) ) ;
15761602} ) ;
15771603
15781604@Component ( {
@@ -1857,7 +1883,8 @@ class AutocompleteWithGroups {
18571883 <md-input-container>
18581884 <input mdInput placeholder="State" [mdAutocomplete]="auto" [(ngModel)]="selectedState">
18591885 </md-input-container>
1860- <md-autocomplete #auto="mdAutocomplete" (select)="select($event)">
1886+
1887+ <md-autocomplete #auto="mdAutocomplete" (optionSelected)="optionSelected($event)">
18611888 <md-option *ngFor="let state of states" [value]="state">
18621889 <span>{{ state }}</span>
18631890 </md-option>
@@ -1867,7 +1894,7 @@ class AutocompleteWithGroups {
18671894class AutocompleteWithSelectEvent {
18681895 selectedState : string ;
18691896 states = [ 'New York' , 'Washington' , 'Oregon' ] ;
1870- select = jasmine . createSpy ( 'select callback' ) ;
1897+ optionSelected = jasmine . createSpy ( 'optionSelected callback' ) ;
18711898
18721899 @ViewChild ( MdAutocompleteTrigger ) trigger : MdAutocompleteTrigger ;
18731900 @ViewChild ( MdAutocomplete ) autocomplete : MdAutocomplete ;
0 commit comments