@@ -2,8 +2,9 @@ import {TestBed, ComponentFixture, fakeAsync, tick, inject} from '@angular/core/
2
2
import { Component , ViewChild } from '@angular/core' ;
3
3
import { MdRipple , MdRippleModule , MD_DISABLE_RIPPLES , RippleState } from './index' ;
4
4
import { ViewportRuler } from '../overlay/position/viewport-ruler' ;
5
- import { RIPPLE_FADE_OUT_DURATION , RIPPLE_FADE_IN_DURATION } from './ripple-renderer' ;
5
+ import { RIPPLE_FADE_OUT_DURATION , RIPPLE_FADE_IN_DURATION , RippleConfig } from './ripple-renderer' ;
6
6
import { dispatchMouseEvent } from '../testing/dispatch-events' ;
7
+ import { MD_RIPPLES_CONFIG } from './ripple' ;
7
8
8
9
/** Extracts the numeric value of a pixel size string like '123px'. */
9
10
const pxStringToFloat = ( s : string ) => {
@@ -390,6 +391,54 @@ describe('MdRipple', () => {
390
391
391
392
} ) ;
392
393
394
+ describe ( 'with a global config' , ( ) => {
395
+ let rippleDirective : MdRipple ;
396
+
397
+ function createTestComponent ( rippleConfig : RippleConfig ) {
398
+ // Reset the previously configured testing module to be able set new providers.
399
+ // The testing module has been initialized in the root describe group for the ripples.
400
+ TestBed . resetTestingModule ( ) ;
401
+ TestBed . configureTestingModule ( {
402
+ imports : [ MdRippleModule ] ,
403
+ declarations : [ BasicRippleContainer ] ,
404
+ providers : [ { provide : MD_RIPPLES_CONFIG , useValue : rippleConfig } ]
405
+ } ) ;
406
+
407
+ fixture = TestBed . createComponent ( BasicRippleContainer ) ;
408
+ fixture . detectChanges ( ) ;
409
+
410
+ rippleTarget = fixture . nativeElement . querySelector ( '[mat-ripple]' ) ;
411
+ rippleDirective = fixture . componentInstance . ripple ;
412
+ }
413
+
414
+ it ( 'should be able to overwrite the speedFactor' , fakeAsync ( ( ) => {
415
+ createTestComponent ( { speedFactor : 0.5 } ) ;
416
+
417
+ dispatchMouseEvent ( rippleTarget , 'mousedown' ) ;
418
+ dispatchMouseEvent ( rippleTarget , 'mouseup' ) ;
419
+
420
+ expect ( rippleTarget . querySelectorAll ( '.mat-ripple-element' ) . length ) . toBe ( 1 ) ;
421
+
422
+ // Calculates the duration for fading-in and fading-out the ripple.
423
+ tick ( RIPPLE_FADE_IN_DURATION * 2 + RIPPLE_FADE_OUT_DURATION ) ;
424
+
425
+ expect ( rippleTarget . querySelectorAll ( '.mat-ripple-element' ) . length ) . toBe ( 0 ) ;
426
+ } ) ) ;
427
+
428
+ it ( 'should be able to overwrite the color' , fakeAsync ( ( ) => {
429
+ createTestComponent ( { color : 'red' } ) ;
430
+
431
+ dispatchMouseEvent ( rippleTarget , 'mousedown' ) ;
432
+ dispatchMouseEvent ( rippleTarget , 'mouseup' ) ;
433
+
434
+ let rippleElement = rippleTarget . querySelector ( '.mat-ripple-element' ) as HTMLElement ;
435
+
436
+ expect ( rippleElement ) . toBeTruthy ( ) ;
437
+ expect ( rippleElement . style . backgroundColor ) . toBe ( 'red' ) ;
438
+ } ) ) ;
439
+
440
+ } ) ;
441
+
393
442
describe ( 'configuring behavior' , ( ) => {
394
443
let controller : RippleContainerWithInputBindings ;
395
444
let rippleComponent : MdRipple ;
0 commit comments