1- import {
2- addProviders ,
3- inject ,
4- async ,
5- TestComponentBuilder ,
6- ComponentFixture ,
7- TestBed ,
8- } from '@angular/core/testing' ;
1+ import { async , ComponentFixture , TestBed } from '@angular/core/testing' ;
92import { ReactiveFormsModule , FormControl } from '@angular/forms' ;
103import { Component , DebugElement , ViewEncapsulation } from '@angular/core' ;
114import { By } from '@angular/platform-browser' ;
125import { MdSlider , MdSliderModule } from './slider' ;
136import { HAMMER_GESTURE_CONFIG } from '@angular/platform-browser' ;
147import { TestGestureConfig } from './test-gesture-config' ;
158
9+
1610describe ( 'MdSlider' , ( ) => {
17- let builder : TestComponentBuilder ;
1811 let gestureConfig : TestGestureConfig ;
1912
2013 beforeEach ( async ( ( ) => {
@@ -31,22 +24,17 @@ describe('MdSlider', () => {
3124 SliderWithThumbLabel ,
3225 SliderWithTwoWayBinding ,
3326 ] ,
27+ providers : [
28+ { provide : HAMMER_GESTURE_CONFIG , useFactory : ( ) => {
29+ gestureConfig = new TestGestureConfig ( ) ;
30+ return gestureConfig ;
31+ } }
32+ ] ,
3433 } ) ;
3534
36- addProviders ( [
37- { provide : HAMMER_GESTURE_CONFIG , useFactory : ( ) => {
38- gestureConfig = new TestGestureConfig ( ) ;
39- return gestureConfig ;
40- } }
41- ] ) ;
42-
4335 TestBed . compileComponents ( ) ;
4436 } ) ) ;
4537
46- beforeEach ( inject ( [ TestComponentBuilder ] , ( tcb : TestComponentBuilder ) => {
47- builder = tcb ;
48- } ) ) ;
49-
5038 describe ( 'standard slider' , ( ) => {
5139 let fixture : ComponentFixture < StandardSlider > ;
5240 let sliderDebugElement : DebugElement ;
@@ -59,24 +47,22 @@ describe('MdSlider', () => {
5947 let thumbElement : HTMLElement ;
6048 let thumbDimensions : ClientRect ;
6149
62- beforeEach ( async ( ( ) => {
63- builder . createAsync ( StandardSlider ) . then ( f => {
64- fixture = f ;
65- fixture . detectChanges ( ) ;
66-
67- sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
68- sliderNativeElement = sliderDebugElement . nativeElement ;
69- sliderInstance = sliderDebugElement . componentInstance ;
70-
71- trackFillElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track-fill' ) ;
72- trackFillDimensions = trackFillElement . getBoundingClientRect ( ) ;
73- sliderTrackElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track' ) ;
74- sliderDimensions = sliderTrackElement . getBoundingClientRect ( ) ;
75-
76- thumbElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-thumb-position' ) ;
77- thumbDimensions = thumbElement . getBoundingClientRect ( ) ;
78- } ) ;
79- } ) ) ;
50+ beforeEach ( ( ) => {
51+ fixture = TestBed . createComponent ( StandardSlider ) ;
52+ fixture . detectChanges ( ) ;
53+
54+ sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
55+ sliderNativeElement = sliderDebugElement . nativeElement ;
56+ sliderInstance = sliderDebugElement . componentInstance ;
57+
58+ trackFillElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track-fill' ) ;
59+ trackFillDimensions = trackFillElement . getBoundingClientRect ( ) ;
60+ sliderTrackElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track' ) ;
61+ sliderDimensions = sliderTrackElement . getBoundingClientRect ( ) ;
62+
63+ thumbElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-thumb-position' ) ;
64+ thumbDimensions = thumbElement . getBoundingClientRect ( ) ;
65+ } ) ;
8066
8167 it ( 'should set the default values' , ( ) => {
8268 expect ( sliderInstance . value ) . toBe ( 0 ) ;
@@ -207,16 +193,14 @@ describe('MdSlider', () => {
207193 let sliderNativeElement : HTMLElement ;
208194 let sliderInstance : MdSlider ;
209195
210- beforeEach ( async ( ( ) => {
211- builder . createAsync ( DisabledSlider ) . then ( f => {
212- fixture = f ;
213- fixture . detectChanges ( ) ;
214-
215- sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
216- sliderNativeElement = sliderDebugElement . nativeElement ;
217- sliderInstance = sliderDebugElement . componentInstance ;
218- } ) ;
219- } ) ) ;
196+ beforeEach ( ( ) => {
197+ fixture = TestBed . createComponent ( DisabledSlider ) ;
198+ fixture . detectChanges ( ) ;
199+
200+ sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
201+ sliderNativeElement = sliderDebugElement . nativeElement ;
202+ sliderInstance = sliderDebugElement . componentInstance ;
203+ } ) ;
220204
221205 it ( 'should be disabled' , ( ) => {
222206 expect ( sliderInstance . disabled ) . toBeTruthy ( ) ;
@@ -265,20 +249,18 @@ describe('MdSlider', () => {
265249 let trackFillElement : HTMLElement ;
266250 let thumbElement : HTMLElement ;
267251
268- beforeEach ( async ( ( ) => {
269- builder . createAsync ( SliderWithMinAndMax ) . then ( f => {
270- fixture = f ;
271- fixture . detectChanges ( ) ;
272-
273- sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
274- sliderNativeElement = sliderDebugElement . nativeElement ;
275- sliderInstance = sliderDebugElement . injector . get ( MdSlider ) ;
276- sliderTrackElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track' ) ;
277- sliderDimensions = sliderTrackElement . getBoundingClientRect ( ) ;
278- trackFillElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track-fill' ) ;
279- thumbElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-thumb-position' ) ;
280- } ) ;
281- } ) ) ;
252+ beforeEach ( ( ) => {
253+ fixture = TestBed . createComponent ( SliderWithMinAndMax ) ;
254+ fixture . detectChanges ( ) ;
255+
256+ sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
257+ sliderNativeElement = sliderDebugElement . nativeElement ;
258+ sliderInstance = sliderDebugElement . injector . get ( MdSlider ) ;
259+ sliderTrackElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track' ) ;
260+ sliderDimensions = sliderTrackElement . getBoundingClientRect ( ) ;
261+ trackFillElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track-fill' ) ;
262+ thumbElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-thumb-position' ) ;
263+ } ) ;
282264
283265 it ( 'should set the default values from the attributes' , ( ) => {
284266 expect ( sliderInstance . value ) . toBe ( 4 ) ;
@@ -341,15 +323,13 @@ describe('MdSlider', () => {
341323 let sliderTrackElement : HTMLElement ;
342324
343325 beforeEach ( async ( ( ) => {
344- builder . createAsync ( SliderWithValue ) . then ( f => {
345- fixture = f ;
346- fixture . detectChanges ( ) ;
347-
348- sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
349- sliderNativeElement = sliderDebugElement . nativeElement ;
350- sliderInstance = sliderDebugElement . injector . get ( MdSlider ) ;
351- sliderTrackElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track' ) ;
352- } ) ;
326+ fixture = TestBed . createComponent ( SliderWithValue ) ;
327+ fixture . detectChanges ( ) ;
328+
329+ sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
330+ sliderNativeElement = sliderDebugElement . nativeElement ;
331+ sliderInstance = sliderDebugElement . injector . get ( MdSlider ) ;
332+ sliderTrackElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track' ) ;
353333 } ) ) ;
354334
355335 it ( 'should set the default value from the attribute' , ( ) => {
@@ -379,20 +359,18 @@ describe('MdSlider', () => {
379359 let trackFillElement : HTMLElement ;
380360 let thumbElement : HTMLElement ;
381361
382- beforeEach ( async ( ( ) => {
383- builder . createAsync ( SliderWithStep ) . then ( f => {
384- fixture = f ;
385- fixture . detectChanges ( ) ;
386-
387- sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
388- sliderNativeElement = sliderDebugElement . nativeElement ;
389- sliderInstance = sliderDebugElement . injector . get ( MdSlider ) ;
390- sliderTrackElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track' ) ;
391- sliderDimensions = sliderTrackElement . getBoundingClientRect ( ) ;
392- trackFillElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track-fill' ) ;
393- thumbElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-thumb-position' ) ;
394- } ) ;
395- } ) ) ;
362+ beforeEach ( ( ) => {
363+ fixture = TestBed . createComponent ( SliderWithStep ) ;
364+ fixture . detectChanges ( ) ;
365+
366+ sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
367+ sliderNativeElement = sliderDebugElement . nativeElement ;
368+ sliderInstance = sliderDebugElement . injector . get ( MdSlider ) ;
369+ sliderTrackElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track' ) ;
370+ sliderDimensions = sliderTrackElement . getBoundingClientRect ( ) ;
371+ trackFillElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track-fill' ) ;
372+ thumbElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-thumb-position' ) ;
373+ } ) ;
396374
397375 it ( 'should set the correct step value on click' , ( ) => {
398376 expect ( sliderInstance . value ) . toBe ( 0 ) ;
@@ -448,16 +426,14 @@ describe('MdSlider', () => {
448426 let lastTickContainer : HTMLElement ;
449427
450428 beforeEach ( async ( ( ) => {
451- builder . createAsync ( SliderWithAutoTickInterval ) . then ( f => {
452- fixture = f ;
453- fixture . detectChanges ( ) ;
454-
455- sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
456- sliderNativeElement = sliderDebugElement . nativeElement ;
457- tickContainer = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-tick-container' ) ;
458- lastTickContainer =
459- < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-last-tick-container' ) ;
460- } ) ;
429+ fixture = TestBed . createComponent ( SliderWithAutoTickInterval ) ;
430+ fixture . detectChanges ( ) ;
431+
432+ sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
433+ sliderNativeElement = sliderDebugElement . nativeElement ;
434+ tickContainer = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-tick-container' ) ;
435+ lastTickContainer =
436+ < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-last-tick-container' ) ;
461437 } ) ) ;
462438
463439 it ( 'should set the correct tick separation' , ( ) => {
@@ -493,18 +469,16 @@ describe('MdSlider', () => {
493469 let tickContainer : HTMLElement ;
494470 let lastTickContainer : HTMLElement ;
495471
496- beforeEach ( async ( ( ) => {
497- builder . createAsync ( SliderWithSetTickInterval ) . then ( f => {
498- fixture = f ;
499- fixture . detectChanges ( ) ;
500-
501- sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
502- sliderNativeElement = sliderDebugElement . nativeElement ;
503- tickContainer = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-tick-container' ) ;
504- lastTickContainer =
505- < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-last-tick-container' ) ;
506- } ) ;
507- } ) ) ;
472+ beforeEach ( ( ) => {
473+ fixture = TestBed . createComponent ( SliderWithSetTickInterval ) ;
474+ fixture . detectChanges ( ) ;
475+
476+ sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
477+ sliderNativeElement = sliderDebugElement . nativeElement ;
478+ tickContainer = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-tick-container' ) ;
479+ lastTickContainer =
480+ < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-last-tick-container' ) ;
481+ } ) ;
508482
509483 it ( 'should set the correct tick separation' , ( ) => {
510484 // The slider width is 112px, the first step is at value 18 (step of 3 * tick interval of 6),
@@ -529,19 +503,17 @@ describe('MdSlider', () => {
529503 let sliderContainerElement : Element ;
530504 let thumbLabelTextElement : Element ;
531505
532- beforeEach ( async ( ( ) => {
533- builder . createAsync ( SliderWithThumbLabel ) . then ( f => {
534- fixture = f ;
535- fixture . detectChanges ( ) ;
536-
537- sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
538- sliderNativeElement = sliderDebugElement . nativeElement ;
539- sliderInstance = sliderDebugElement . componentInstance ;
540- sliderTrackElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track' ) ;
541- sliderContainerElement = sliderNativeElement . querySelector ( '.md-slider-container' ) ;
542- thumbLabelTextElement = sliderNativeElement . querySelector ( '.md-slider-thumb-label-text' ) ;
543- } ) ;
544- } ) ) ;
506+ beforeEach ( ( ) => {
507+ fixture = TestBed . createComponent ( SliderWithThumbLabel ) ;
508+ fixture . detectChanges ( ) ;
509+
510+ sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
511+ sliderNativeElement = sliderDebugElement . nativeElement ;
512+ sliderInstance = sliderDebugElement . componentInstance ;
513+ sliderTrackElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track' ) ;
514+ sliderContainerElement = sliderNativeElement . querySelector ( '.md-slider-container' ) ;
515+ thumbLabelTextElement = sliderNativeElement . querySelector ( '.md-slider-thumb-label-text' ) ;
516+ } ) ;
545517
546518 it ( 'should add the thumb label class to the slider container' , ( ) => {
547519 expect ( sliderContainerElement . classList ) . toContain ( 'md-slider-thumb-label-showing' ) ;
@@ -599,19 +571,17 @@ describe('MdSlider', () => {
599571 let sliderTrackElement : HTMLElement ;
600572 let testComponent : SliderWithTwoWayBinding ;
601573
602- beforeEach ( async ( ( ) => {
603- builder . createAsync ( SliderWithTwoWayBinding ) . then ( f => {
604- fixture = f ;
605- fixture . detectChanges ( ) ;
574+ beforeEach ( ( ) => {
575+ fixture = TestBed . createComponent ( SliderWithTwoWayBinding ) ;
576+ fixture . detectChanges ( ) ;
606577
607- testComponent = fixture . debugElement . componentInstance ;
578+ testComponent = fixture . debugElement . componentInstance ;
608579
609- sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
610- sliderNativeElement = sliderDebugElement . nativeElement ;
611- sliderInstance = sliderDebugElement . injector . get ( MdSlider ) ;
612- sliderTrackElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track' ) ;
613- } ) ;
614- } ) ) ;
580+ sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
581+ sliderNativeElement = sliderDebugElement . nativeElement ;
582+ sliderInstance = sliderDebugElement . injector . get ( MdSlider ) ;
583+ sliderTrackElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track' ) ;
584+ } ) ;
615585
616586 it ( 'should update the control when the value is updated' , ( ) => {
617587 expect ( testComponent . control . value ) . toBe ( 0 ) ;
@@ -654,13 +624,12 @@ describe('MdSlider', () => {
654624} ) ;
655625
656626// The transition has to be removed in order to test the updated positions without setTimeout.
627+ const noTransitionStyle =
628+ '.md-slider-track-fill, .md-slider-thumb-position { transition: none !important; }' ;
629+
657630@Component ( {
658631 template : `<md-slider></md-slider>` ,
659- styles : [ `
660- .md-slider-track-fill, .md-slider-thumb-position {
661- transition: none !important;
662- }
663- ` ] ,
632+ styles : [ noTransitionStyle ] ,
664633 encapsulation : ViewEncapsulation . None
665634} )
666635class StandardSlider { }
@@ -672,11 +641,7 @@ class DisabledSlider { }
672641
673642@Component ( {
674643 template : `<md-slider min="4" max="6"></md-slider>` ,
675- styles : [ `
676- .md-slider-track-fill, .md-slider-thumb-position {
677- transition: none !important;
678- }
679- ` ] ,
644+ styles : [ noTransitionStyle ] ,
680645 encapsulation : ViewEncapsulation . None
681646} )
682647class SliderWithMinAndMax { }
@@ -688,32 +653,20 @@ class SliderWithValue { }
688653
689654@Component ( {
690655 template : `<md-slider step="25"></md-slider>` ,
691- styles : [ `
692- .md-slider-track-fill, .md-slider-thumb-position {
693- transition: none !important;
694- }
695- ` ] ,
656+ styles : [ noTransitionStyle ] ,
696657 encapsulation : ViewEncapsulation . None
697658} )
698659class SliderWithStep { }
699660
700- @Component ( {
701- template : `<md-slider step="5" tick-interval="auto"></md-slider>`
702- } )
661+ @Component ( { template : `<md-slider step="5" tick-interval="auto"></md-slider>` } )
703662class SliderWithAutoTickInterval { }
704663
705- @Component ( {
706- template : `<md-slider step="3" tick-interval="6"></md-slider>`
707- } )
664+ @Component ( { template : `<md-slider step="3" tick-interval="6"></md-slider>` } )
708665class SliderWithSetTickInterval { }
709666
710667@Component ( {
711668 template : `<md-slider thumb-label></md-slider>` ,
712- styles : [ `
713- .md-slider-thumb-label, .md-slider-thumb-label-text {
714- transition: none !important;
715- }
716- ` ] ,
669+ styles : [ noTransitionStyle ] ,
717670 encapsulation : ViewEncapsulation . None
718671} )
719672class SliderWithThumbLabel { }
0 commit comments