Skip to content

Commit 655b474

Browse files
committed
test(material-experimental/mdc-slider): add unit tests for sliders with values (#22193)
1 parent 9209a3d commit 655b474

File tree

1 file changed

+90
-7
lines changed

1 file changed

+90
-7
lines changed

src/material-experimental/mdc-slider/slider.spec.ts

Lines changed: 90 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
dispatchPointerEvent,
1313
dispatchTouchEvent,
1414
} from '@angular/cdk/testing/private';
15-
import {Component, DebugElement, Type} from '@angular/core';
15+
import {Component, Type} from '@angular/core';
1616
import {ComponentFixture, fakeAsync, TestBed, tick, waitForAsync} from '@angular/core/testing';
1717
import {By} from '@angular/platform-browser';
1818
import {Thumb} from '@material/slider';
@@ -82,16 +82,14 @@ describe('MDC-based MatSlider' , () => {
8282
});
8383

8484
describe('standard range slider', () => {
85-
let fixture: ComponentFixture<StandardRangeSlider>;
86-
let sliderDebugElement: DebugElement;
8785
let sliderInstance: MatSlider;
8886
let startInputInstance: MatSliderThumb;
8987
let endInputInstance: MatSliderThumb;
9088

9189
beforeEach(waitForAsync(() => {
92-
fixture = createComponent(StandardRangeSlider);
90+
const fixture = createComponent(StandardRangeSlider);
9391
fixture.detectChanges();
94-
sliderDebugElement = fixture.debugElement.query(By.directive(MatSlider));
92+
const sliderDebugElement = fixture.debugElement.query(By.directive(MatSlider));
9593
sliderInstance = sliderDebugElement.componentInstance;
9694
startInputInstance = sliderInstance._getInput(Thumb.START);
9795
endInputInstance = sliderInstance._getInput(Thumb.END);
@@ -235,15 +233,14 @@ describe('MDC-based MatSlider' , () => {
235233
});
236234

237235
describe('ripple states', () => {
238-
let fixture: ComponentFixture<StandardSlider>;
239236
let inputInstance: MatSliderThumb;
240237
let thumbInstance: MatSliderVisualThumb;
241238
let thumbElement: HTMLElement;
242239
let thumbX: number;
243240
let thumbY: number;
244241

245242
beforeEach(waitForAsync(() => {
246-
fixture = createComponent(StandardSlider);
243+
const fixture = createComponent(StandardSlider);
247244
fixture.detectChanges();
248245
const sliderDebugElement = fixture.debugElement.query(By.directive(MatSlider));
249246
const sliderInstance = sliderDebugElement.componentInstance;
@@ -457,6 +454,73 @@ describe('MDC-based MatSlider' , () => {
457454
expect(endInputInstance.value).toBe(75);
458455
});
459456
});
457+
458+
describe('slider with set value', () => {
459+
let sliderInstance: MatSlider;
460+
let inputInstance: MatSliderThumb;
461+
462+
beforeEach(waitForAsync(() => {
463+
const fixture = createComponent(SliderWithValue);
464+
fixture.detectChanges();
465+
const sliderDebugElement = fixture.debugElement.query(By.directive(MatSlider));
466+
sliderInstance = sliderDebugElement.componentInstance;
467+
inputInstance = sliderInstance._getInput(Thumb.END);
468+
}));
469+
470+
it('should set the default value from the attribute', () => {
471+
expect(inputInstance.value).toBe(50);
472+
});
473+
474+
it('should set the correct value on mousedown', () => {
475+
setValueByClick(sliderInstance, 19, platform.IOS);
476+
expect(inputInstance.value).toBe(19);
477+
});
478+
479+
it('should set the correct value on slide', () => {
480+
slideToValue(sliderInstance, 77, Thumb.END, platform.IOS);
481+
expect(inputInstance.value).toBe(77);
482+
});
483+
});
484+
485+
describe('range slider with set value', () => {
486+
let sliderInstance: MatSlider;
487+
let startInputInstance: MatSliderThumb;
488+
let endInputInstance: MatSliderThumb;
489+
490+
beforeEach(waitForAsync(() => {
491+
const fixture = createComponent(RangeSliderWithValue);
492+
fixture.detectChanges();
493+
const sliderDebugElement = fixture.debugElement.query(By.directive(MatSlider));
494+
sliderInstance = sliderDebugElement.componentInstance;
495+
startInputInstance = sliderInstance._getInput(Thumb.START);
496+
endInputInstance = sliderInstance._getInput(Thumb.END);
497+
}));
498+
499+
it('should set the default value from the attribute', () => {
500+
expect(startInputInstance.value).toBe(25);
501+
expect(endInputInstance.value).toBe(75);
502+
});
503+
504+
it('should set the correct start value on mousedown behind the start thumb', () => {
505+
setValueByClick(sliderInstance, 19, platform.IOS);
506+
expect(startInputInstance.value).toBe(19);
507+
});
508+
509+
it('should set the correct start value on mousedown in front of the end thumb', () => {
510+
setValueByClick(sliderInstance, 77, platform.IOS);
511+
expect(endInputInstance.value).toBe(77);
512+
});
513+
514+
it('should set the correct start value on slide', () => {
515+
slideToValue(sliderInstance, 73, Thumb.START, platform.IOS);
516+
expect(startInputInstance.value).toBe(73);
517+
});
518+
519+
it('should set the correct end value on slide', () => {
520+
slideToValue(sliderInstance, 99, Thumb.END, platform.IOS);
521+
expect(endInputInstance.value).toBe(99);
522+
});
523+
});
460524
});
461525

462526

@@ -517,6 +581,25 @@ class SliderWithMinAndMax {}
517581
})
518582
class RangeSliderWithMinAndMax {}
519583

584+
@Component({
585+
template: `
586+
<mat-slider>
587+
<input value="50" matSliderThumb>
588+
</mat-slider>
589+
`,
590+
})
591+
class SliderWithValue {}
592+
593+
@Component({
594+
template: `
595+
<mat-slider>
596+
<input value="25" matSliderStartThumb>
597+
<input value="75" matSliderEndThumb>
598+
</mat-slider>
599+
`,
600+
})
601+
class RangeSliderWithValue {}
602+
520603
/** The pointer event types used by the MDC Slider. */
521604
const enum PointerEventType {
522605
POINTER_DOWN = 'pointerdown',

0 commit comments

Comments
 (0)