Skip to content

Commit ac2f784

Browse files
devversionjelbourn
authored andcommitted
chore: add e2e tests for md-slide-toggle (#2161)
* chore: add e2e tests for md-slide-toggle * Adds some basic e2e tests for the md-slide-toggle component. Closes #1963. * Add space key test
1 parent 4126a83 commit ac2f784

File tree

6 files changed

+80
-0
lines changed

6 files changed

+80
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
describe('slide-toggle', () => {
2+
3+
beforeEach(() => browser.get('slide-toggle'));
4+
5+
it('should render a slide-toggle', () => {
6+
expect(element(by.css('md-slide-toggle')).isPresent()).toBe(true);
7+
});
8+
9+
it('should change the checked state on click', () => {
10+
let slideToggleEl = element(by.css('#normal-slide-toggle'));
11+
let inputEl = element(by.css('#normal-slide-toggle input'));
12+
13+
expect(inputEl.getAttribute('checked')).toBeFalsy('Expect slide-toggle to be unchecked');
14+
15+
slideToggleEl.click();
16+
17+
expect(inputEl.getAttribute('checked')).toBeTruthy('Expect slide-toggle to be checked');
18+
});
19+
20+
it('should change the checked state on click', () => {
21+
let slideToggleEl = element(by.css('#normal-slide-toggle'));
22+
let inputEl = element(by.css('#normal-slide-toggle input'));
23+
24+
expect(inputEl.getAttribute('checked')).toBeFalsy('Expect slide-toggle to be unchecked');
25+
26+
slideToggleEl.click();
27+
28+
expect(inputEl.getAttribute('checked')).toBeTruthy('Expect slide-toggle to be checked');
29+
});
30+
31+
it('should not change the checked state on click when disabled', () => {
32+
let slideToggleEl = element(by.css('#disabled-slide-toggle'));
33+
let inputEl = element(by.css('#disabled-slide-toggle input'));
34+
35+
expect(inputEl.getAttribute('checked')).toBeFalsy('Expect slide-toggle to be unchecked');
36+
37+
slideToggleEl.click();
38+
39+
expect(inputEl.getAttribute('checked')).toBeFalsy('Expect slide-toggle to be unchecked');
40+
});
41+
42+
it('should move the thumb on state change', () => {
43+
let slideToggleEl = element(By.css('#normal-slide-toggle'));
44+
let thumbEl = element(by.css('#normal-slide-toggle .md-slide-toggle-thumb-container'));
45+
46+
let previousX = thumbEl.getLocation().then(pos => pos.x);
47+
48+
slideToggleEl.click();
49+
50+
let newX = thumbEl.getLocation().then(pos => pos.x);
51+
52+
expect(previousX).not.toBe(newX);
53+
});
54+
55+
it('should toggle the slide-toggle on space key', () => {
56+
let inputEl = element(by.css('#normal-slide-toggle input'));
57+
58+
expect(inputEl.getAttribute('checked')).toBeFalsy('Expect slide-toggle to be unchecked');
59+
60+
inputEl.sendKeys(protractor.Key.SPACE);
61+
62+
expect(inputEl.getAttribute('checked')).toBeTruthy('Expect slide-toggle to be checked');
63+
});
64+
65+
});

src/e2e-app/e2e-app-module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {ProgressBarE2E} from './progress-bar/progress-bar-e2e';
1515
import {ProgressCircleE2E} from './progress-circle/progress-circle-e2e';
1616
import {MaterialModule} from '@angular/material';
1717
import {E2E_APP_ROUTES} from './e2e-app/routes';
18+
import {SlideToggleE2E} from './slide-toggle/slide-toggle-e2e';
1819

1920

2021
@NgModule({
@@ -38,6 +39,7 @@ import {E2E_APP_ROUTES} from './e2e-app/routes';
3839
ListE2E,
3940
ProgressBarE2E,
4041
ProgressCircleE2E,
42+
SlideToggleE2E
4143
],
4244
bootstrap: [E2EApp],
4345
providers: [

src/e2e-app/e2e-app/e2e-app.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
<a md-list-item [routerLink]="['progress-bar']">Progress bar</a>
99
<a md-list-item [routerLink]="['progress-circle']">Progress circle</a>
1010
<a md-list-item [routerLink]="['radio']">Radios</a>
11+
<a md-list-item [routerLink]="['slide-toggle']">Slide Toggle</a>
1112
<a md-list-item [routerLink]="['tabs']">Tabs</a>
1213

1314
<router-outlet></router-outlet>

src/e2e-app/e2e-app/routes.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {GridListE2E} from '../grid-list/grid-list-e2e';
1111
import {ListE2E} from '../list/list-e2e';
1212
import {ProgressBarE2E} from '../progress-bar/progress-bar-e2e';
1313
import {ProgressCircleE2E} from '../progress-circle/progress-circle-e2e';
14+
import {SlideToggleE2E} from '../slide-toggle/slide-toggle-e2e';
1415

1516
export const E2E_APP_ROUTES: Routes = [
1617
{path: '', component: Home},
@@ -25,4 +26,5 @@ export const E2E_APP_ROUTES: Routes = [
2526
{path: 'list', component: ListE2E},
2627
{path: 'progress-bar', component: ProgressBarE2E},
2728
{path: 'progress-circle', component: ProgressCircleE2E},
29+
{path: 'slide-toggle', component: SlideToggleE2E}
2830
];
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<md-slide-toggle id="normal-slide-toggle">Slide Toggle</md-slide-toggle>
2+
<md-slide-toggle id="disabled-slide-toggle" disabled>Disabled Slide Toggle</md-slide-toggle>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import {Component} from '@angular/core';
2+
3+
@Component({
4+
moduleId: module.id,
5+
selector: 'slide-toggle-e2e',
6+
templateUrl: 'slide-toggle-e2e.html',
7+
})
8+
export class SlideToggleE2E { }

0 commit comments

Comments
 (0)