1- import {
2- fakeAsync ,
3- async ,
4- inject ,
5- tick ,
6- TestComponentBuilder ,
7- ComponentFixture ,
8- TestBed ,
9- } from '@angular/core/testing' ;
10- import { XHR } from '@angular/compiler' ;
11- import { Component , ViewMetadata } from '@angular/core' ;
1+ import { fakeAsync , async , tick , ComponentFixture , TestBed } from '@angular/core/testing' ;
2+ import { Component } from '@angular/core' ;
123import { By } from '@angular/platform-browser' ;
13- import { MdSidenav , MdSidenavLayout , MdSidenavModule } from './sidenav' ;
14-
15-
16- /**
17- * Create a ComponentFixture from the builder. This takes a template and a style for sidenav.
18- */
19- function createFixture ( appType : any , builder : TestComponentBuilder ,
20- template : string , style : string ) : ComponentFixture < any > {
21- let fixture : ComponentFixture < any > = null ;
22- // Remove the styles (which remove the animations/transitions).
23- builder
24- . overrideView ( MdSidenavLayout , new ViewMetadata ( {
25- template : template ,
26- styles : [ style || '' ] ,
27- } ) )
28- . createAsync ( appType ) . then ( ( f : ComponentFixture < any > ) => {
29- fixture = f ;
30- } ) ;
31- tick ( ) ;
32-
33- return fixture ;
34- }
4+ import { MdSidenav , MdSidenavModule } from './sidenav' ;
355
366
377function endSidenavTransition ( fixture : ComponentFixture < any > ) {
388 let sidenav : any = fixture . debugElement . query ( By . directive ( MdSidenav ) ) . componentInstance ;
39- sidenav . _onTransitionEnd ( {
9+ sidenav . _onTransitionEnd ( < any > {
4010 target : ( < any > sidenav ) . _elementRef . nativeElement ,
4111 propertyName : 'transform'
4212 } ) ;
@@ -45,10 +15,6 @@ function endSidenavTransition(fixture: ComponentFixture<any>) {
4515
4616
4717describe ( 'MdSidenav' , ( ) => {
48- let template : string ;
49- let style : string ;
50- let builder : TestComponentBuilder ;
51- let xhr : XHR ;
5218
5319 beforeEach ( async ( ( ) => {
5420 TestBed . configureTestingModule ( {
@@ -57,36 +23,17 @@ describe('MdSidenav', () => {
5723 BasicTestApp ,
5824 SidenavLayoutTwoSidenavTestApp ,
5925 SidenavLayoutNoSidenavTestApp ,
26+ SidenavSetToOpenedFalse ,
27+ SidenavSetToOpenedTrue ,
6028 ] ,
6129 } ) ;
6230
6331 TestBed . compileComponents ( ) ;
6432 } ) ) ;
6533
66- beforeEach ( fakeAsync ( inject ( [ TestComponentBuilder , XHR ] , ( tcb : TestComponentBuilder , x : XHR ) => {
67- builder = tcb ;
68- xhr = x ;
69- } ) ) ) ;
70-
71- /**
72- * We need to get the template and styles for the sidenav in an Async test.
73- * FakeAsync would block indefinitely on the XHR if we were to create the component async-ly.
74- * See https://github.com/angular/angular/issues/5601.
75- * We do some style verification so styles have to match.
76- * But we remove the transitions so we only set the regular `sidenav.css` styling.
77- */
78- beforeEach ( async ( ( ) => {
79- xhr . get ( './components/sidenav/sidenav.html' ) . then ( t => {
80- template = t ;
81- } ) ;
82- xhr . get ( './components/sidenav/sidenav.css' ) . then ( css => {
83- style = css ;
84- } ) ;
85- } ) ) ;
86-
8734 describe ( 'methods' , ( ) => {
8835 it ( 'should be able to open and close' , fakeAsync ( ( ) => {
89- let fixture = createFixture ( BasicTestApp , builder , template , style ) ;
36+ let fixture = TestBed . createComponent ( BasicTestApp ) ;
9037
9138 let testComponent : BasicTestApp = fixture . debugElement . componentInstance ;
9239 let openButtonElement = fixture . debugElement . query ( By . css ( '.open' ) ) ;
@@ -135,7 +82,7 @@ describe('MdSidenav', () => {
13582 } ) ) ;
13683
13784 it ( 'open/close() return a promise that resolves after animation end' , fakeAsync ( ( ) => {
138- let fixture = createFixture ( BasicTestApp , builder , template , style ) ;
85+ let fixture = TestBed . createComponent ( BasicTestApp ) ;
13986 let sidenav : MdSidenav = fixture . debugElement
14087 . query ( By . directive ( MdSidenav ) ) . componentInstance ;
14188 let called = false ;
@@ -162,7 +109,7 @@ describe('MdSidenav', () => {
162109 } ) ) ;
163110
164111 it ( 'open/close() twice returns the same promise' , fakeAsync ( ( ) => {
165- let fixture = createFixture ( BasicTestApp , builder , template , style ) ;
112+ let fixture = TestBed . createComponent ( BasicTestApp ) ;
166113 let sidenav : MdSidenav = fixture . debugElement
167114 . query ( By . directive ( MdSidenav ) ) . componentInstance ;
168115
@@ -177,7 +124,7 @@ describe('MdSidenav', () => {
177124 } ) ) ;
178125
179126 it ( 'open() then close() cancel animations when called too fast' , fakeAsync ( ( ) => {
180- let fixture = createFixture ( BasicTestApp , builder , template , style ) ;
127+ let fixture = TestBed . createComponent ( BasicTestApp ) ;
181128 let sidenav : MdSidenav = fixture . debugElement
182129 . query ( By . directive ( MdSidenav ) ) . componentInstance ;
183130
@@ -206,7 +153,7 @@ describe('MdSidenav', () => {
206153 } ) ) ;
207154
208155 it ( 'close() then open() cancel animations when called too fast' , fakeAsync ( ( ) => {
209- let fixture = createFixture ( BasicTestApp , builder , template , style ) ;
156+ let fixture = TestBed . createComponent ( BasicTestApp ) ;
210157 let sidenav : MdSidenav = fixture . debugElement
211158 . query ( By . directive ( MdSidenav ) ) . componentInstance ;
212159
@@ -241,15 +188,15 @@ describe('MdSidenav', () => {
241188
242189 it ( 'does not throw when created without a sidenav' , fakeAsync ( ( ) => {
243190 expect ( ( ) => {
244- let fixture = createFixture ( SidenavLayoutNoSidenavTestApp , builder , template , style ) ;
191+ let fixture = TestBed . createComponent ( BasicTestApp ) ;
245192 fixture . detectChanges ( ) ;
246193 tick ( ) ;
247194 } ) . not . toThrow ( ) ;
248195 } ) ) ;
249196
250197 it ( 'does throw when created with two sidenav on the same side' , fakeAsync ( ( ) => {
251198 expect ( ( ) => {
252- let fixture = createFixture ( SidenavLayoutTwoSidenavTestApp , builder , template , style ) ;
199+ let fixture = TestBed . createComponent ( SidenavLayoutTwoSidenavTestApp ) ;
253200 fixture . detectChanges ( ) ;
254201 tick ( ) ;
255202 } ) . toThrow ( ) ;
@@ -258,74 +205,47 @@ describe('MdSidenav', () => {
258205
259206 describe ( 'attributes' , ( ) => {
260207
261- it ( 'should correctly parse opened="false"' , fakeAsync ( ( ) => {
262- let newBuilder = builder . overrideTemplate ( BasicTestApp , `
263- <md-sidenav-layout>
264- <md-sidenav #sidenav mode="side" opened="false">
265- Closed Sidenav.
266- </md-sidenav>
267- </md-sidenav-layout>` ) ;
268-
269- let fixture = createFixture ( BasicTestApp , newBuilder , template , style ) ;
208+ it ( 'should correctly parse opened="false"' , ( ) => {
209+ let fixture = TestBed . createComponent ( SidenavSetToOpenedFalse ) ;
270210 fixture . detectChanges ( ) ;
271211
272212 let sidenavEl = fixture . debugElement . query ( By . css ( 'md-sidenav' ) ) . nativeElement ;
273213
274214 expect ( sidenavEl . classList ) . toContain ( 'md-sidenav-closed' ) ;
275215 expect ( sidenavEl . classList ) . not . toContain ( 'md-sidenav-opened' ) ;
276- } ) ) ;
277-
278- it ( 'should correctly parse opened="true"' , fakeAsync ( ( ) => {
279- let newBuilder = builder . overrideTemplate ( BasicTestApp , `
280- <md-sidenav-layout>
281- <md-sidenav #sidenav mode="side" opened="true">
282- Closed Sidenav.
283- </md-sidenav>
284- </md-sidenav-layout>` ) ;
216+ } ) ;
285217
286- let fixture = createFixture ( BasicTestApp , newBuilder , template , style ) ;
218+ it ( 'should correctly parse opened="true"' , ( ) => {
219+ let fixture = TestBed . createComponent ( SidenavSetToOpenedTrue ) ;
287220 fixture . detectChanges ( ) ;
288221
289222 let sidenavEl = fixture . debugElement . query ( By . css ( 'md-sidenav' ) ) . nativeElement ;
290223
291224 expect ( sidenavEl . classList ) . not . toContain ( 'md-sidenav-closed' ) ;
292225 expect ( sidenavEl . classList ) . toContain ( 'md-sidenav-opened' ) ;
293- } ) ) ;
226+ } ) ;
294227
295228 } ) ;
296229
297230} ) ;
298231
299232
300233/** Test component that contains an MdSidenavLayout but no MdSidenav. */
301- @Component ( {
302- selector : 'test-app' ,
303- template : `
304- <md-sidenav-layout>
305- </md-sidenav-layout>
306- ` ,
307- } )
308- class SidenavLayoutNoSidenavTestApp {
309- }
310-
234+ @Component ( { template : `<md-sidenav-layout></md-sidenav-layout>` } )
235+ class SidenavLayoutNoSidenavTestApp { }
311236
312237/** Test component that contains an MdSidenavLayout and 2 MdSidenav on the same side. */
313238@Component ( {
314- selector : 'test-app' ,
315239 template : `
316240 <md-sidenav-layout>
317241 <md-sidenav> </md-sidenav>
318242 <md-sidenav> </md-sidenav>
319- </md-sidenav-layout>
320- ` ,
243+ </md-sidenav-layout>` ,
321244} )
322- class SidenavLayoutTwoSidenavTestApp {
323- }
324-
245+ class SidenavLayoutTwoSidenavTestApp { }
325246
326247/** Test component that contains an MdSidenavLayout and one MdSidenav. */
327248@Component ( {
328- selector : 'test-app' ,
329249 template : `
330250 <md-sidenav-layout>
331251 <md-sidenav #sidenav align="start"
@@ -337,8 +257,7 @@ class SidenavLayoutTwoSidenavTestApp {
337257 </md-sidenav>
338258 <button (click)="sidenav.open()" class="open"></button>
339259 <button (click)="sidenav.close()" class="close"></button>
340- </md-sidenav-layout>
341- ` ,
260+ </md-sidenav-layout>` ,
342261} )
343262class BasicTestApp {
344263 openStartCount : number = 0 ;
@@ -363,3 +282,22 @@ class BasicTestApp {
363282 }
364283}
365284
285+ @Component ( {
286+ template : `
287+ <md-sidenav-layout>
288+ <md-sidenav #sidenav mode="side" opened="false">
289+ Closed Sidenav.
290+ </md-sidenav>
291+ </md-sidenav-layout>` ,
292+ } )
293+ class SidenavSetToOpenedFalse { }
294+
295+ @Component ( {
296+ template : `
297+ <md-sidenav-layout>
298+ <md-sidenav #sidenav mode="side" opened="true">
299+ Closed Sidenav.
300+ </md-sidenav>
301+ </md-sidenav-layout>` ,
302+ } )
303+ class SidenavSetToOpenedTrue { }
0 commit comments