1- import { async , TestBed , inject , ComponentFixture } from '@angular/core/testing' ;
1+ import { async , ComponentFixture , inject , TestBed } from '@angular/core/testing' ;
22import { Component , ViewChild } from '@angular/core' ;
33import {
4- FormsModule ,
5- ReactiveFormsModule ,
64 FormControl ,
7- NgForm ,
8- Validators ,
9- FormGroupDirective ,
105 FormGroup ,
6+ FormGroupDirective ,
7+ FormsModule ,
8+ NgForm ,
9+ ReactiveFormsModule ,
10+ Validators
1111} from '@angular/forms' ;
1212import { By } from '@angular/platform-browser' ;
1313import { NoopAnimationsModule } from '@angular/platform-browser/animations' ;
@@ -18,52 +18,53 @@ import {PlatformModule} from '../core/platform/index';
1818import { wrappedErrorMessage } from '../core/testing/wrapped-error-message' ;
1919import { dispatchFakeEvent } from '../core/testing/dispatch-events' ;
2020import {
21+ MdInputContainerDuplicatedHintError ,
2122 MdInputContainerMissingMdInputError ,
22- MdInputContainerPlaceholderConflictError ,
23- MdInputContainerDuplicatedHintError
23+ MdInputContainerPlaceholderConflictError
2424} from './input-container-errors' ;
2525
2626
2727describe ( 'MdInputContainer' , function ( ) {
2828 beforeEach ( async ( ( ) => {
2929 TestBed . configureTestingModule ( {
3030 imports : [
31- MdInputModule . forRoot ( ) ,
32- PlatformModule . forRoot ( ) ,
3331 FormsModule ,
32+ MdInputModule ,
33+ NoopAnimationsModule ,
34+ PlatformModule ,
3435 ReactiveFormsModule ,
35- NoopAnimationsModule
3636 ] ,
3737 declarations : [
38- MdInputContainerPlaceholderRequiredTestComponent ,
39- MdInputContainerPlaceholderElementTestComponent ,
40- MdInputContainerPlaceholderAttrTestComponent ,
38+ MdInputContainerBaseTestController ,
39+ MdInputContainerDateTestController ,
4140 MdInputContainerHintLabel2TestController ,
4241 MdInputContainerHintLabelTestController ,
43- MdInputContainerInvalidTypeTestController ,
44- MdInputContainerInvalidPlaceholderTestController ,
4542 MdInputContainerInvalidHint2TestController ,
4643 MdInputContainerInvalidHintTestController ,
47- MdInputContainerBaseTestController ,
48- MdInputContainerWithId ,
49- MdInputContainerDateTestController ,
50- MdInputContainerTextTestController ,
51- MdInputContainerPasswordTestController ,
44+ MdInputContainerInvalidPlaceholderTestController ,
45+ MdInputContainerInvalidTypeTestController ,
46+ MdInputContainerMissingMdInputTestController ,
47+ MdInputContainerMultipleHintMixedTestController ,
48+ MdInputContainerMultipleHintTestController ,
5249 MdInputContainerNumberTestController ,
53- MdInputContainerZeroTestController ,
54- MdTextareaWithBindings ,
50+ MdInputContainerPasswordTestController ,
51+ MdInputContainerPlaceholderAttrTestComponent ,
52+ MdInputContainerPlaceholderElementTestComponent ,
53+ MdInputContainerPlaceholderRequiredTestComponent ,
54+ MdInputContainerTextTestController ,
5555 MdInputContainerWithDisabled ,
56+ MdInputContainerWithDynamicPlaceholder ,
57+ MdInputContainerWithFormControl ,
58+ MdInputContainerWithFormErrorMessages ,
59+ MdInputContainerWithFormGroupErrorMessages ,
60+ MdInputContainerWithId ,
61+ MdInputContainerWithPrefixAndSuffix ,
5662 MdInputContainerWithRequired ,
63+ MdInputContainerWithStaticPlaceholder ,
5764 MdInputContainerWithType ,
5865 MdInputContainerWithValueBinding ,
59- MdInputContainerWithFormControl ,
60- MdInputContainerWithStaticPlaceholder ,
61- MdInputContainerMissingMdInputTestController ,
62- MdInputContainerMultipleHintTestController ,
63- MdInputContainerMultipleHintMixedTestController ,
64- MdInputContainerWithDynamicPlaceholder ,
65- MdInputContainerWithFormErrorMessages ,
66- MdInputContainerWithFormGroupErrorMessages
66+ MdInputContainerZeroTestController ,
67+ MdTextareaWithBindings ,
6768 ] ,
6869 } ) ;
6970
@@ -685,6 +686,29 @@ describe('MdInputContainer', function () {
685686
686687 } ) ;
687688
689+ it ( 'should not have prefix and suffix elements when none are specified' , ( ) => {
690+ let fixture = TestBed . createComponent ( MdInputContainerWithId ) ;
691+ fixture . detectChanges ( ) ;
692+
693+ let prefixEl = fixture . debugElement . query ( By . css ( '.mat-input-prefix' ) ) ;
694+ let suffixEl = fixture . debugElement . query ( By . css ( '.mat-input-suffix' ) ) ;
695+
696+ expect ( prefixEl ) . toBeNull ( ) ;
697+ expect ( suffixEl ) . toBeNull ( ) ;
698+ } ) ;
699+
700+ it ( 'should add prefix and suffix elements when specified' , ( ) => {
701+ let fixture = TestBed . createComponent ( MdInputContainerWithPrefixAndSuffix ) ;
702+ fixture . detectChanges ( ) ;
703+
704+ let prefixEl = fixture . debugElement . query ( By . css ( '.mat-input-prefix' ) ) ;
705+ let suffixEl = fixture . debugElement . query ( By . css ( '.mat-input-suffix' ) ) ;
706+
707+ expect ( prefixEl ) . not . toBeNull ( ) ;
708+ expect ( suffixEl ) . not . toBeNull ( ) ;
709+ expect ( prefixEl . nativeElement . innerText . trim ( ) ) . toEqual ( 'Prefix' ) ;
710+ expect ( suffixEl . nativeElement . innerText . trim ( ) ) . toEqual ( 'Suffix' ) ;
711+ } ) ;
688712} ) ;
689713
690714@Component ( {
@@ -927,7 +951,6 @@ class MdInputContainerWithFormErrorMessages {
927951 renderError = true ;
928952}
929953
930-
931954@Component ( {
932955 template : `
933956 <form [formGroup]="formGroup" novalidate>
@@ -945,3 +968,14 @@ class MdInputContainerWithFormGroupErrorMessages {
945968 name : new FormControl ( '' , Validators . required )
946969 } ) ;
947970}
971+
972+ @Component ( {
973+ template : `
974+ <md-input-container>
975+ <div mdPrefix>Prefix</div>
976+ <input mdInput>
977+ <div mdSuffix>Suffix</div>
978+ </md-input-container>
979+ `
980+ } )
981+ class MdInputContainerWithPrefixAndSuffix { }
0 commit comments