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' ;
12
3
import { 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' ;
35
5
36
6
37
7
function endSidenavTransition ( fixture : ComponentFixture < any > ) {
38
8
let sidenav : any = fixture . debugElement . query ( By . directive ( MdSidenav ) ) . componentInstance ;
39
- sidenav . _onTransitionEnd ( {
9
+ sidenav . _onTransitionEnd ( < any > {
40
10
target : ( < any > sidenav ) . _elementRef . nativeElement ,
41
11
propertyName : 'transform'
42
12
} ) ;
@@ -45,10 +15,6 @@ function endSidenavTransition(fixture: ComponentFixture<any>) {
45
15
46
16
47
17
describe ( 'MdSidenav' , ( ) => {
48
- let template : string ;
49
- let style : string ;
50
- let builder : TestComponentBuilder ;
51
- let xhr : XHR ;
52
18
53
19
beforeEach ( async ( ( ) => {
54
20
TestBed . configureTestingModule ( {
@@ -57,36 +23,17 @@ describe('MdSidenav', () => {
57
23
BasicTestApp ,
58
24
SidenavLayoutTwoSidenavTestApp ,
59
25
SidenavLayoutNoSidenavTestApp ,
26
+ SidenavSetToOpenedFalse ,
27
+ SidenavSetToOpenedTrue ,
60
28
] ,
61
29
} ) ;
62
30
63
31
TestBed . compileComponents ( ) ;
64
32
} ) ) ;
65
33
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
-
87
34
describe ( 'methods' , ( ) => {
88
35
it ( 'should be able to open and close' , fakeAsync ( ( ) => {
89
- let fixture = createFixture ( BasicTestApp , builder , template , style ) ;
36
+ let fixture = TestBed . createComponent ( BasicTestApp ) ;
90
37
91
38
let testComponent : BasicTestApp = fixture . debugElement . componentInstance ;
92
39
let openButtonElement = fixture . debugElement . query ( By . css ( '.open' ) ) ;
@@ -135,7 +82,7 @@ describe('MdSidenav', () => {
135
82
} ) ) ;
136
83
137
84
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 ) ;
139
86
let sidenav : MdSidenav = fixture . debugElement
140
87
. query ( By . directive ( MdSidenav ) ) . componentInstance ;
141
88
let called = false ;
@@ -162,7 +109,7 @@ describe('MdSidenav', () => {
162
109
} ) ) ;
163
110
164
111
it ( 'open/close() twice returns the same promise' , fakeAsync ( ( ) => {
165
- let fixture = createFixture ( BasicTestApp , builder , template , style ) ;
112
+ let fixture = TestBed . createComponent ( BasicTestApp ) ;
166
113
let sidenav : MdSidenav = fixture . debugElement
167
114
. query ( By . directive ( MdSidenav ) ) . componentInstance ;
168
115
@@ -177,7 +124,7 @@ describe('MdSidenav', () => {
177
124
} ) ) ;
178
125
179
126
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 ) ;
181
128
let sidenav : MdSidenav = fixture . debugElement
182
129
. query ( By . directive ( MdSidenav ) ) . componentInstance ;
183
130
@@ -206,7 +153,7 @@ describe('MdSidenav', () => {
206
153
} ) ) ;
207
154
208
155
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 ) ;
210
157
let sidenav : MdSidenav = fixture . debugElement
211
158
. query ( By . directive ( MdSidenav ) ) . componentInstance ;
212
159
@@ -241,15 +188,15 @@ describe('MdSidenav', () => {
241
188
242
189
it ( 'does not throw when created without a sidenav' , fakeAsync ( ( ) => {
243
190
expect ( ( ) => {
244
- let fixture = createFixture ( SidenavLayoutNoSidenavTestApp , builder , template , style ) ;
191
+ let fixture = TestBed . createComponent ( BasicTestApp ) ;
245
192
fixture . detectChanges ( ) ;
246
193
tick ( ) ;
247
194
} ) . not . toThrow ( ) ;
248
195
} ) ) ;
249
196
250
197
it ( 'does throw when created with two sidenav on the same side' , fakeAsync ( ( ) => {
251
198
expect ( ( ) => {
252
- let fixture = createFixture ( SidenavLayoutTwoSidenavTestApp , builder , template , style ) ;
199
+ let fixture = TestBed . createComponent ( SidenavLayoutTwoSidenavTestApp ) ;
253
200
fixture . detectChanges ( ) ;
254
201
tick ( ) ;
255
202
} ) . toThrow ( ) ;
@@ -258,74 +205,47 @@ describe('MdSidenav', () => {
258
205
259
206
describe ( 'attributes' , ( ) => {
260
207
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 ) ;
270
210
fixture . detectChanges ( ) ;
271
211
272
212
let sidenavEl = fixture . debugElement . query ( By . css ( 'md-sidenav' ) ) . nativeElement ;
273
213
274
214
expect ( sidenavEl . classList ) . toContain ( 'md-sidenav-closed' ) ;
275
215
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
+ } ) ;
285
217
286
- let fixture = createFixture ( BasicTestApp , newBuilder , template , style ) ;
218
+ it ( 'should correctly parse opened="true"' , ( ) => {
219
+ let fixture = TestBed . createComponent ( SidenavSetToOpenedTrue ) ;
287
220
fixture . detectChanges ( ) ;
288
221
289
222
let sidenavEl = fixture . debugElement . query ( By . css ( 'md-sidenav' ) ) . nativeElement ;
290
223
291
224
expect ( sidenavEl . classList ) . not . toContain ( 'md-sidenav-closed' ) ;
292
225
expect ( sidenavEl . classList ) . toContain ( 'md-sidenav-opened' ) ;
293
- } ) ) ;
226
+ } ) ;
294
227
295
228
} ) ;
296
229
297
230
} ) ;
298
231
299
232
300
233
/** 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 { }
311
236
312
237
/** Test component that contains an MdSidenavLayout and 2 MdSidenav on the same side. */
313
238
@Component ( {
314
- selector : 'test-app' ,
315
239
template : `
316
240
<md-sidenav-layout>
317
241
<md-sidenav> </md-sidenav>
318
242
<md-sidenav> </md-sidenav>
319
- </md-sidenav-layout>
320
- ` ,
243
+ </md-sidenav-layout>` ,
321
244
} )
322
- class SidenavLayoutTwoSidenavTestApp {
323
- }
324
-
245
+ class SidenavLayoutTwoSidenavTestApp { }
325
246
326
247
/** Test component that contains an MdSidenavLayout and one MdSidenav. */
327
248
@Component ( {
328
- selector : 'test-app' ,
329
249
template : `
330
250
<md-sidenav-layout>
331
251
<md-sidenav #sidenav align="start"
@@ -337,8 +257,7 @@ class SidenavLayoutTwoSidenavTestApp {
337
257
</md-sidenav>
338
258
<button (click)="sidenav.open()" class="open"></button>
339
259
<button (click)="sidenav.close()" class="close"></button>
340
- </md-sidenav-layout>
341
- ` ,
260
+ </md-sidenav-layout>` ,
342
261
} )
343
262
class BasicTestApp {
344
263
openStartCount : number = 0 ;
@@ -363,3 +282,22 @@ class BasicTestApp {
363
282
}
364
283
}
365
284
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