aboutsummaryrefslogtreecommitdiff
path: root/Timeline/ClientApp/src/app/todo/todo-page/todo-page.component.spec.ts
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2019-03-07 20:56:50 +0800
committercrupest <crupest@outlook.com>2019-03-07 20:56:50 +0800
commit00757c9b23d1c614960d74b54054ccc35129150c (patch)
treed52f6ae18aad3146ea785d2f6797671772bcd1b5 /Timeline/ClientApp/src/app/todo/todo-page/todo-page.component.spec.ts
parent4b37c96de2c7d3fe046a6f342d2da8ef03d3c807 (diff)
downloadtimeline-00757c9b23d1c614960d74b54054ccc35129150c.tar.gz
timeline-00757c9b23d1c614960d74b54054ccc35129150c.tar.bz2
timeline-00757c9b23d1c614960d74b54054ccc35129150c.zip
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.ts78
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();
+ }));
+});