diff --git a/src/components/progress-circle/progress-circle.spec.ts b/src/components/progress-circle/progress-circle.spec.ts index 63ccf546b817..dbbf6baa31f9 100644 --- a/src/components/progress-circle/progress-circle.spec.ts +++ b/src/components/progress-circle/progress-circle.spec.ts @@ -1,132 +1,101 @@ -import {inject, TestComponentBuilder, TestBed, async} from '@angular/core/testing'; -import {Component, DebugElement} from '@angular/core'; +import {TestBed, async} from '@angular/core/testing'; +import {Component} from '@angular/core'; import {By} from '@angular/platform-browser'; import {MdProgressCircleModule} from './progress-circle'; describe('MdProgressCircular', () => { - let builder: TestComponentBuilder; beforeEach(async(() => { TestBed.configureTestingModule({ imports: [MdProgressCircleModule], - declarations: [TestApp], + declarations: [ + BasicProgressSpinner, + IndeterminateProgressSpinner, + ProgressSpinnerWithValueAndBoundMode, + IndeterminateProgressSpinnerWithNgIf, + ], }); TestBed.compileComponents(); })); - beforeEach(inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { - builder = tcb; - })); + it('should apply a mode of "determinate" if no mode is provided.', () => { + let fixture = TestBed.createComponent(BasicProgressSpinner); + fixture.detectChanges(); - it('should apply a mode of "determinate" if no mode is provided.', (done: () => void) => { - builder - .overrideTemplate(TestApp, '') - .createAsync(TestApp) - .then((fixture) => { - fixture.detectChanges(); - let progressElement = getChildDebugElement(fixture.debugElement, 'md-progress-circle'); - expect(progressElement.componentInstance.mode).toBe('determinate'); - done(); - }); + let progressElement = fixture.debugElement.query(By.css('md-progress-circle')); + expect(progressElement.componentInstance.mode).toBe('determinate'); }); - it('should not modify the mode if a valid mode is provided.', (done: () => void) => { - builder - .overrideTemplate(TestApp, '') - .createAsync(TestApp) - .then((fixture) => { - fixture.detectChanges(); - let progressElement = getChildDebugElement(fixture.debugElement, 'md-progress-circle'); - expect(progressElement.componentInstance.mode).toBe('indeterminate'); - done(); - }); + it('should not modify the mode if a valid mode is provided.', () => { + let fixture = TestBed.createComponent(IndeterminateProgressSpinner); + fixture.detectChanges(); + + let progressElement = fixture.debugElement.query(By.css('md-progress-circle')); + expect(progressElement.componentInstance.mode).toBe('indeterminate'); }); - it('should define a default value of undefined for the value attribute', (done: () => void) => { - builder - .overrideTemplate(TestApp, '') - .createAsync(TestApp) - .then((fixture) => { - fixture.detectChanges(); - let progressElement = getChildDebugElement(fixture.debugElement, 'md-progress-circle'); - expect(progressElement.componentInstance.value).toBeUndefined(); - done(); - }); + it('should define a default value of undefined for the value attribute', () => { + let fixture = TestBed.createComponent(BasicProgressSpinner); + fixture.detectChanges(); + + let progressElement = fixture.debugElement.query(By.css('md-progress-circle')); + expect(progressElement.componentInstance.value).toBeUndefined(); }); - it('should set the value to undefined when the mode is set to indeterminate', - (done: () => void) => { - builder - .overrideTemplate(TestApp, ``) - .createAsync(TestApp) - .then((fixture) => { - let progressElement = getChildDebugElement(fixture.debugElement, 'md-progress-circle'); - fixture.debugElement.componentInstance.mode = 'determinate'; - fixture.detectChanges(); - expect(progressElement.componentInstance.value).toBe(50); - fixture.debugElement.componentInstance.mode = 'indeterminate'; - fixture.detectChanges(); - expect(progressElement.componentInstance.value).toBe(undefined); - done(); - }); + it('should set the value to undefined when the mode is set to indeterminate', () => { + let fixture = TestBed.createComponent(ProgressSpinnerWithValueAndBoundMode); + let progressElement = fixture.debugElement.query(By.css('md-progress-circle')); + fixture.debugElement.componentInstance.mode = 'determinate'; + fixture.detectChanges(); + + expect(progressElement.componentInstance.value).toBe(50); + fixture.debugElement.componentInstance.mode = 'indeterminate'; + fixture.detectChanges(); + expect(progressElement.componentInstance.value).toBe(undefined); }); - it('should clamp the value of the progress between 0 and 100', (done: () => void) => { - builder - .overrideTemplate(TestApp, '') - .createAsync(TestApp) - .then((fixture) => { - fixture.detectChanges(); - let progressElement = getChildDebugElement(fixture.debugElement, 'md-progress-circle'); - let progressComponent = progressElement.componentInstance; - - progressComponent.value = 50; - expect(progressComponent.value).toBe(50); - - progressComponent.value = 999; - expect(progressComponent.value).toBe(100); - - progressComponent.value = -10; - expect(progressComponent.value).toBe(0); - done(); - }); + it('should clamp the value of the progress between 0 and 100', () => { + let fixture = TestBed.createComponent(BasicProgressSpinner); + fixture.detectChanges(); + + let progressElement = fixture.debugElement.query(By.css('md-progress-circle')); + let progressComponent = progressElement.componentInstance; + + progressComponent.value = 50; + expect(progressComponent.value).toBe(50); + + progressComponent.value = 999; + expect(progressComponent.value).toBe(100); + + progressComponent.value = -10; + expect(progressComponent.value).toBe(0); }); - it('should clean up the indeterminate animation when the element is destroyed', - (done: () => void) => { - let template = ``; - - builder - .overrideTemplate(TestApp, template) - .createAsync(TestApp) - .then((fixture) => { - fixture.detectChanges(); - let progressElement = getChildDebugElement(fixture.debugElement, 'md-progress-circle'); - expect(progressElement.componentInstance.interdeterminateInterval).toBeTruthy(); - - fixture.debugElement.componentInstance.isHidden = true; - fixture.detectChanges(); - expect(progressElement.componentInstance.interdeterminateInterval).toBeFalsy(); - done(); - }); - }); + it('should clean up the indeterminate animation when the element is destroyed', () => { + let fixture = TestBed.createComponent(IndeterminateProgressSpinnerWithNgIf); + fixture.detectChanges(); + + let progressElement = fixture.debugElement.query(By.css('md-progress-circle')); + expect(progressElement.componentInstance.interdeterminateInterval).toBeTruthy(); + + fixture.debugElement.componentInstance.isHidden = true; + fixture.detectChanges(); + expect(progressElement.componentInstance.interdeterminateInterval).toBeFalsy(); + }); }); -/** Gets a child DebugElement by tag name. */ -function getChildDebugElement(parent: DebugElement, selector: string): DebugElement { - return parent.query(By.css(selector)); -} +@Component({template: ''}) +class BasicProgressSpinner { } + +@Component({template: ''}) +class IndeterminateProgressSpinner { } +@Component({template: ''}) +class ProgressSpinnerWithValueAndBoundMode { } -/** Test component that contains an MdButton. */ -@Component({ - template: '', -}) -class TestApp { -} +@Component({template: ` + `}) +class IndeterminateProgressSpinnerWithNgIf { }