diff --git a/src/lib/slide-toggle/index.ts b/src/lib/slide-toggle/index.ts index a7454d797f80..51412f905a57 100644 --- a/src/lib/slide-toggle/index.ts +++ b/src/lib/slide-toggle/index.ts @@ -7,7 +7,6 @@ */ import {NgModule} from '@angular/core'; -import {FormsModule} from '@angular/forms'; import {HAMMER_GESTURE_CONFIG} from '@angular/platform-browser'; import {MdSlideToggle} from './slide-toggle'; import { @@ -19,7 +18,7 @@ import { } from '../core'; @NgModule({ - imports: [FormsModule, MdRippleModule, MdCommonModule, PlatformModule], + imports: [MdRippleModule, MdCommonModule, PlatformModule], exports: [MdSlideToggle, MdCommonModule], declarations: [MdSlideToggle], providers: [ diff --git a/src/lib/slide-toggle/slide-toggle.spec.ts b/src/lib/slide-toggle/slide-toggle.spec.ts index b15dae727061..cf4dd0726dd9 100644 --- a/src/lib/slide-toggle/slide-toggle.spec.ts +++ b/src/lib/slide-toggle/slide-toggle.spec.ts @@ -23,6 +23,53 @@ describe('MdSlideToggle', () => { TestBed.compileComponents(); })); + describe('without form modules', () => { + let fixture: ComponentFixture; + let slideToggleInstance: MdSlideToggle; + let labelElement: HTMLLabelElement; + + beforeEach(async(() => { + TestBed.resetTestingModule(); + TestBed.configureTestingModule({ + imports: [MdSlideToggleModule], + declarations: [SlideToggleWithoutForms] + }); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SlideToggleWithoutForms); + fixture.detectChanges(); + + const slideToggleDebug = fixture.debugElement.query(By.directive(MdSlideToggle)); + + slideToggleInstance = slideToggleDebug.componentInstance; + labelElement = fixture.debugElement.query(By.css('label')).nativeElement; + }); + + it('should update the checked state on click', () => { + expect(slideToggleInstance.checked) + .toBe(false, 'Expected the slide-toggle not to be checked initially.'); + + labelElement.click(); + fixture.detectChanges(); + + expect(slideToggleInstance.checked) + .toBe(true, 'Expected the slide-toggle to be checked after click.'); + }); + + it('should update the checked state from binding', () => { + expect(slideToggleInstance.checked) + .toBe(false, 'Expected the slide-toggle not to be checked initially.'); + + fixture.componentInstance.isChecked = true; + fixture.detectChanges(); + + expect(slideToggleInstance.checked) + .toBe(true, 'Expected the slide-toggle to be checked after click.'); + }); + + }); + describe('basic behavior', () => { let fixture: ComponentFixture; @@ -713,3 +760,10 @@ class SlideToggleFormsTestApp { class SlideToggleWithFormControl { formControl = new FormControl(); } + +@Component({ + template: `` +}) +class SlideToggleWithoutForms { + isChecked = false; +}