diff options
author | 杨宇千 <crupest@outlook.com> | 2019-03-07 21:18:14 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-07 21:18:14 +0800 |
commit | 028af6f786ac2664d301614d57bbff053c3dc9c0 (patch) | |
tree | 6fb1bf8abc6bebdc56e74e73db1e913239e41729 /Timeline/ClientApp/src/app/todo/todo-page/todo-page.component.spec.ts | |
parent | d4410036b62a65cedbe977efdcea023440a3198e (diff) | |
parent | d5322a3c8c3f3bab25686650a4637dbe480b3886 (diff) | |
download | timeline-028af6f786ac2664d301614d57bbff053c3dc9c0.tar.gz timeline-028af6f786ac2664d301614d57bbff053c3dc9c0.tar.bz2 timeline-028af6f786ac2664d301614d57bbff053c3dc9c0.zip |
Merge pull request #9 from crupest/8-module
Reorganize with modules.
Diffstat (limited to 'Timeline/ClientApp/src/app/todo/todo-page/todo-page.component.spec.ts')
-rw-r--r-- | Timeline/ClientApp/src/app/todo/todo-page/todo-page.component.spec.ts | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/Timeline/ClientApp/src/app/todo/todo-page/todo-page.component.spec.ts b/Timeline/ClientApp/src/app/todo/todo-page/todo-page.component.spec.ts new file mode 100644 index 00000000..16c77376 --- /dev/null +++ b/Timeline/ClientApp/src/app/todo/todo-page/todo-page.component.spec.ts @@ -0,0 +1,78 @@ +import { Component, NO_ERRORS_SCHEMA } from '@angular/core'; +import { async, ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; + +import { Observable, from } from 'rxjs'; +import { delay } from 'rxjs/operators'; + +import { TodoItem } from '../todo-item'; +import { TodoPageComponent } from './todo-page.component'; +import { TodoService } from '../todo-service/todo.service'; + + +@Component({ + /* tslint:disable-next-line:component-selector*/ + selector: 'mat-progress-bar', + template: '' +}) +class MatProgressBarStubComponent { } + +function asyncArray<T>(data: T[]): Observable<T> { + return from(data).pipe(delay(0)); +} + +describe('TodoListPageComponent', () => { + let component: TodoPageComponent; + let fixture: ComponentFixture<TodoPageComponent>; + + const mockTodoItems: TodoItem[] = [ + { + number: 0, + title: 'Test title 1', + isClosed: true, + detailUrl: 'test_url1' + }, + { + number: 1, + title: 'Test title 2', + isClosed: false, + detailUrl: 'test_url2' + } + ]; + + beforeEach(async(() => { + const mockTodoService: jasmine.SpyObj<TodoService> = jasmine.createSpyObj('TodoService', ['getWorkItemList']); + + mockTodoService.getWorkItemList.and.returnValue(asyncArray(mockTodoItems)); + + TestBed.configureTestingModule({ + declarations: [TodoPageComponent, MatProgressBarStubComponent], + imports: [NoopAnimationsModule], + providers: [{ provide: TodoService, useValue: mockTodoService }], + schemas: [NO_ERRORS_SCHEMA] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TodoPageComponent); + component = fixture.componentInstance; + }); + + it('should create', () => { + fixture.detectChanges(); + expect(component).toBeTruthy(); + }); + + it('should show progress bar during loading', () => { + fixture.detectChanges(); + expect(fixture.debugElement.query(By.css('mat-progress-bar'))).toBeTruthy(); + }); + + it('should hide progress bar after loading', fakeAsync(() => { + fixture.detectChanges(); + tick(); + fixture.detectChanges(); + expect(fixture.debugElement.query(By.css('mat-progress-bar'))).toBeFalsy(); + })); +}); |