1
1
import { HarnessLoader } from '@angular/cdk-experimental/testing' ;
2
2
import { TestbedHarnessEnvironment } from '@angular/cdk-experimental/testing/testbed' ;
3
- import { Component } from '@angular/core' ;
3
+ import { Component , CUSTOM_ELEMENTS_SCHEMA } from '@angular/core' ;
4
4
import { ComponentFixture , TestBed } from '@angular/core/testing' ;
5
5
import { MatSliderModule } from '@angular/material/slider' ;
6
+ import { MatSliderModule as MatMdcSliderModule } from '../module' ;
7
+ import { MatSliderHarness as MatMdcSliderHarness } from './mdc-slider-harness' ;
6
8
import { MatSliderHarness } from './slider-harness' ;
7
9
8
10
let fixture : ComponentFixture < SliderHarnessTest > ;
@@ -25,18 +27,37 @@ describe('MatSliderHarness', () => {
25
27
sliderHarness = MatSliderHarness ;
26
28
} ) ;
27
29
28
- runTests ( ) ;
30
+ // Standard slider supports vertical and inverted sliders.
31
+ createTests ( true , true ) ;
29
32
} ) ;
30
33
31
34
describe (
32
35
'MDC-based' ,
33
36
( ) => {
34
- // TODO: run tests for MDC based slider once implemented.
37
+ beforeEach ( async ( ) => {
38
+ await TestBed
39
+ . configureTestingModule ( {
40
+ imports : [ MatMdcSliderModule ] ,
41
+ declarations : [ SliderHarnessTest ] ,
42
+ schemas : [ CUSTOM_ELEMENTS_SCHEMA ]
43
+ } )
44
+ . compileComponents ( ) ;
45
+
46
+ fixture = TestBed . createComponent ( SliderHarnessTest ) ;
47
+ fixture . detectChanges ( ) ;
48
+ loader = TestbedHarnessEnvironment . loader ( fixture ) ;
49
+ // Public APIs are the same as "MatSliderHarness", but cast is necessary because
50
+ // of different private fields.
51
+ sliderHarness = MatMdcSliderHarness as any ;
52
+ } ) ;
53
+
54
+ // MDC slider does not support vertical or inverted sliders.
55
+ createTests ( false , false ) ;
35
56
} ) ;
36
57
} ) ;
37
58
38
59
/** Shared tests to run on both the original and MDC-based sliders. */
39
- function runTests ( ) {
60
+ function createTests ( supportsVertical : boolean , supportsInvert : boolean ) {
40
61
it ( 'should load all slider harnesses' , async ( ) => {
41
62
const sliders = await loader . getAllHarnesses ( sliderHarness ) ;
42
63
expect ( sliders . length ) . toBe ( 3 ) ;
@@ -84,7 +105,7 @@ function runTests() {
84
105
85
106
it ( 'should get display value of slider' , async ( ) => {
86
107
const sliders = await loader . getAllHarnesses ( sliderHarness ) ;
87
- expect ( await sliders [ 0 ] . getDisplayValue ( ) ) . toBe ( '50' ) ;
108
+ expect ( await sliders [ 0 ] . getDisplayValue ( ) ) . toBe ( null ) ;
88
109
expect ( await sliders [ 1 ] . getDisplayValue ( ) ) . toBe ( 'Null' ) ;
89
110
expect ( await sliders [ 2 ] . getDisplayValue ( ) ) . toBe ( '#225' ) ;
90
111
} ) ;
@@ -93,18 +114,20 @@ function runTests() {
93
114
const sliders = await loader . getAllHarnesses ( sliderHarness ) ;
94
115
expect ( await sliders [ 0 ] . getOrientation ( ) ) . toBe ( 'horizontal' ) ;
95
116
expect ( await sliders [ 1 ] . getOrientation ( ) ) . toBe ( 'horizontal' ) ;
96
- expect ( await sliders [ 2 ] . getOrientation ( ) ) . toBe ( 'vertical' ) ;
117
+ expect ( await sliders [ 2 ] . getOrientation ( ) ) . toBe ( supportsVertical ? 'vertical' : 'horizontal ') ;
97
118
} ) ;
98
119
99
120
it ( 'should be able to focus slider' , async ( ) => {
100
- const [ slider ] = await loader . getAllHarnesses ( sliderHarness ) ;
121
+ // the first slider is disabled.
122
+ const slider = ( await loader . getAllHarnesses ( sliderHarness ) ) [ 1 ] ;
101
123
expect ( getActiveElementTagName ( ) ) . not . toBe ( 'mat-slider' ) ;
102
124
await slider . focus ( ) ;
103
125
expect ( getActiveElementTagName ( ) ) . toBe ( 'mat-slider' ) ;
104
126
} ) ;
105
127
106
128
it ( 'should be able to blur slider' , async ( ) => {
107
- const [ slider ] = await loader . getAllHarnesses ( sliderHarness ) ;
129
+ // the first slider is disabled.
130
+ const slider = ( await loader . getAllHarnesses ( sliderHarness ) ) [ 1 ] ;
108
131
expect ( getActiveElementTagName ( ) ) . not . toBe ( 'mat-slider' ) ;
109
132
await slider . focus ( ) ;
110
133
expect ( getActiveElementTagName ( ) ) . toBe ( 'mat-slider' ) ;
@@ -139,43 +162,45 @@ function runTests() {
139
162
expect ( await sliders [ 1 ] . getValue ( ) ) . toBe ( 80 ) ;
140
163
} ) ;
141
164
142
- it ( 'should be able to set value of inverted slider' , async ( ) => {
165
+ it ( 'should get disabled state of slider' , async ( ) => {
143
166
const sliders = await loader . getAllHarnesses ( sliderHarness ) ;
144
- expect ( await sliders [ 1 ] . getValue ( ) ) . toBe ( 0 ) ;
145
- expect ( await sliders [ 2 ] . getValue ( ) ) . toBe ( 225 ) ;
167
+ expect ( await sliders [ 0 ] . isDisabled ( ) ) . toBe ( true ) ;
168
+ expect ( await sliders [ 1 ] . isDisabled ( ) ) . toBe ( false ) ;
169
+ expect ( await sliders [ 2 ] . isDisabled ( ) ) . toBe ( false ) ;
170
+ } ) ;
146
171
147
- fixture . componentInstance . invertSliders = true ;
148
- fixture . detectChanges ( ) ;
172
+ if ( supportsInvert ) {
173
+ it ( 'should be able to set value of inverted slider' , async ( ) => {
174
+ const sliders = await loader . getAllHarnesses ( sliderHarness ) ;
175
+ expect ( await sliders [ 1 ] . getValue ( ) ) . toBe ( 0 ) ;
176
+ expect ( await sliders [ 2 ] . getValue ( ) ) . toBe ( 225 ) ;
149
177
150
- await sliders [ 1 ] . setValue ( 75 ) ;
151
- await sliders [ 2 ] . setValue ( 210 ) ;
178
+ fixture . componentInstance . invertSliders = true ;
179
+ fixture . detectChanges ( ) ;
152
180
153
- expect ( await sliders [ 1 ] . getValue ( ) ) . toBe ( 75 ) ;
154
- expect ( await sliders [ 2 ] . getValue ( ) ) . toBe ( 210 ) ;
155
- } ) ;
181
+ await sliders [ 1 ] . setValue ( 75 ) ;
182
+ await sliders [ 2 ] . setValue ( 210 ) ;
156
183
157
- it ( 'should be able to set value of inverted slider in rtl' , async ( ) => {
158
- const sliders = await loader . getAllHarnesses ( sliderHarness ) ;
159
- expect ( await sliders [ 1 ] . getValue ( ) ) . toBe ( 0 ) ;
160
- expect ( await sliders [ 2 ] . getValue ( ) ) . toBe ( 225 ) ;
184
+ expect ( await sliders [ 1 ] . getValue ( ) ) . toBe ( 75 ) ;
185
+ expect ( await sliders [ 2 ] . getValue ( ) ) . toBe ( 210 ) ;
186
+ } ) ;
161
187
162
- fixture . componentInstance . invertSliders = true ;
163
- fixture . componentInstance . dir = 'rtl' ;
164
- fixture . detectChanges ( ) ;
188
+ it ( 'should be able to set value of inverted slider in rtl' , async ( ) => {
189
+ const sliders = await loader . getAllHarnesses ( sliderHarness ) ;
190
+ expect ( await sliders [ 1 ] . getValue ( ) ) . toBe ( 0 ) ;
191
+ expect ( await sliders [ 2 ] . getValue ( ) ) . toBe ( 225 ) ;
165
192
166
- await sliders [ 1 ] . setValue ( 75 ) ;
167
- await sliders [ 2 ] . setValue ( 210 ) ;
193
+ fixture . componentInstance . invertSliders = true ;
194
+ fixture . componentInstance . dir = 'rtl' ;
195
+ fixture . detectChanges ( ) ;
168
196
169
- expect ( await sliders [ 1 ] . getValue ( ) ) . toBe ( 75 ) ;
170
- expect ( await sliders [ 2 ] . getValue ( ) ) . toBe ( 210 ) ;
171
- } ) ;
197
+ await sliders [ 1 ] . setValue ( 75 ) ;
198
+ await sliders [ 2 ] . setValue ( 210 ) ;
172
199
173
- it ( 'should get disabled state of slider' , async ( ) => {
174
- const sliders = await loader . getAllHarnesses ( sliderHarness ) ;
175
- expect ( await sliders [ 0 ] . isDisabled ( ) ) . toBe ( true ) ;
176
- expect ( await sliders [ 1 ] . isDisabled ( ) ) . toBe ( false ) ;
177
- expect ( await sliders [ 2 ] . isDisabled ( ) ) . toBe ( false ) ;
178
- } ) ;
200
+ expect ( await sliders [ 1 ] . getValue ( ) ) . toBe ( 75 ) ;
201
+ expect ( await sliders [ 2 ] . getValue ( ) ) . toBe ( 210 ) ;
202
+ } ) ;
203
+ }
179
204
}
180
205
181
206
function getActiveElementTagName ( ) {
@@ -187,12 +212,12 @@ function getActiveElementTagName() {
187
212
<mat-slider value="50" disabled></mat-slider>
188
213
<div [dir]="dir">
189
214
<mat-slider [id]="sliderId" [displayWith]="displayFn"
190
- [invert]="invertSliders"></mat-slider>
215
+ [invert]="invertSliders" thumbLabel ></mat-slider>
191
216
</div>
192
217
<mat-slider min="200" max="250" value="225" [displayWith]="displayFn" vertical
193
- [invert]="invertSliders">
218
+ [invert]="invertSliders" thumbLabel >
194
219
</mat-slider>
195
- `
220
+ ` ,
196
221
} )
197
222
class SliderHarnessTest {
198
223
sliderId = 'my-slider' ;
0 commit comments