From c0c2375a0b658e60920c668c90f717b12a7e2512 Mon Sep 17 00:00:00 2001 From: Tiago Melo Date: Wed, 16 May 2018 11:38:02 +0100 Subject: [PATCH] mgr/dashboard: Adapt unit tests to Jest Signed-off-by: Tiago Melo --- .../frontend/src/app/app.component.spec.ts | 50 ++++--- .../ceph/block/iscsi/iscsi.component.spec.ts | 32 +++-- .../block/rbd-form/rbd-form.component.spec.ts | 52 ++++--- .../block/rbd-list/rbd-list.component.spec.ts | 40 ++++-- .../cephfs/cephfs/cephfs.component.spec.ts | 46 +++--- .../cluster/monitor/monitor.component.spec.ts | 23 +-- .../dashboard/dashboard.component.spec.ts | 13 +- .../health-pie/health-pie.component.spec.ts | 21 ++- .../dashboard/health/health.component.spec.ts | 56 ++++++-- .../pool-list/pool-list.component.spec.ts | 13 +- .../rgw-user-list.component.spec.ts | 33 ++--- .../core/auth/login/login.component.spec.ts | 21 ++- .../core/auth/logout/logout.component.spec.ts | 19 +-- .../deletion-modal.component.spec.ts | 134 +++++++++--------- .../sparkline/sparkline.component.spec.ts | 16 +-- .../services/module-status-guard.service.ts | 8 +- .../shared/services/summary.service.spec.ts | 6 +- 17 files changed, 325 insertions(+), 258 deletions(-) diff --git a/src/pybind/mgr/dashboard/frontend/src/app/app.component.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/app.component.spec.ts index 3cca10d09170b..e00243e4adb91 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/app.component.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/app.component.spec.ts @@ -1,28 +1,38 @@ -import { async, TestBed } from '@angular/core/testing'; +import { NO_ERRORS_SCHEMA } from '@angular/core'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; import { ToastModule } from 'ng2-toastr'; import { AppComponent } from './app.component'; -import { BlockModule } from './ceph/block/block.module'; -import { ClusterModule } from './ceph/cluster/cluster.module'; -import { CoreModule } from './core/core.module'; -import { SharedModule } from './shared/shared.module'; +import { AuthStorageService } from './shared/services/auth-storage.service'; describe('AppComponent', () => { - beforeEach( - async(() => { - TestBed.configureTestingModule({ - imports: [ - RouterTestingModule, - CoreModule, - SharedModule, - ToastModule.forRoot(), - ClusterModule, - BlockModule - ], - declarations: [AppComponent] - }).compileComponents(); - }) - ); + let component: AppComponent; + let fixture: ComponentFixture; + + const fakeService = { + isLoggedIn: () => { + return true; + } + }; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [RouterTestingModule, ToastModule.forRoot()], + declarations: [AppComponent], + schemas: [NO_ERRORS_SCHEMA], + providers: [{ provide: AuthStorageService, useValue: fakeService }] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AppComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); }); diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi/iscsi.component.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi/iscsi.component.spec.ts index 526c951b511ae..78de242809a47 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi/iscsi.component.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi/iscsi.component.spec.ts @@ -1,7 +1,12 @@ +import { NO_ERRORS_SCHEMA } from '@angular/core'; import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { AppModule } from '../../../app.module'; import { TcmuIscsiService } from '../../../shared/api/tcmu-iscsi.service'; +import { CephShortVersionPipe } from '../../../shared/pipes/ceph-short-version.pipe'; +import { DimlessPipe } from '../../../shared/pipes/dimless.pipe'; +import { ListPipe } from '../../../shared/pipes/list.pipe'; +import { RelativeDatePipe } from '../../../shared/pipes/relative-date.pipe'; +import { FormatterService } from '../../../shared/services/formatter.service'; import { IscsiComponent } from './iscsi.component'; describe('IscsiComponent', () => { @@ -13,17 +18,24 @@ describe('IscsiComponent', () => { return new Promise(function(resolve, reject) { return; }); - }, + } }; - beforeEach( - async(() => { - TestBed.configureTestingModule({ - imports: [AppModule], - providers: [{ provide: TcmuIscsiService, useValue: fakeService }] - }).compileComponents(); - }) - ); + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [], + declarations: [IscsiComponent], + schemas: [NO_ERRORS_SCHEMA], + providers: [ + CephShortVersionPipe, + DimlessPipe, + FormatterService, + RelativeDatePipe, + ListPipe, + { provide: TcmuIscsiService, useValue: fakeService } + ] + }).compileComponents(); + })); beforeEach(() => { fixture = TestBed.createComponent(IscsiComponent); diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-form/rbd-form.component.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-form/rbd-form.component.spec.ts index 8c7c3fc27afb8..3b97e91314576 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-form/rbd-form.component.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-form/rbd-form.component.spec.ts @@ -1,33 +1,51 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { NO_ERRORS_SCHEMA } from '@angular/core'; import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { ReactiveFormsModule } from '@angular/forms'; import { RouterTestingModule } from '@angular/router/testing'; -import { ToastModule } from 'ng2-toastr'; +import 'rxjs/add/observable/of'; +import { Observable } from 'rxjs/Observable'; -import { ApiModule } from '../../../shared/api/api.module'; -import { ComponentsModule } from '../../../shared/components/components.module'; -import { ServicesModule } from '../../../shared/services/services.module'; +import { PoolService } from '../../../shared/api/pool.service'; +import { RbdService } from '../../../shared/api/rbd.service'; +import { DimlessBinaryPipe } from '../../../shared/pipes/dimless-binary.pipe'; +import { FormatterService } from '../../../shared/services/formatter.service'; +import { NotificationService } from '../../../shared/services/notification.service'; +import { TaskManagerMessageService } from '../../../shared/services/task-manager-message.service'; +import { TaskManagerService } from '../../../shared/services/task-manager.service'; import { RbdFormComponent } from './rbd-form.component'; describe('RbdFormComponent', () => { let component: RbdFormComponent; let fixture: ComponentFixture; + const fakeService = { + subscribe: (name, metadata, onTaskFinished: (finishedTask: any) => any) => { + return null; + }, + defaultFeatures: () => Observable.of([]), + list: (attrs = []) => { + return new Promise(function(resolve, reject) { + return; + }); + } + }; + beforeEach(async(() => { TestBed.configureTestingModule({ - imports: [ - ReactiveFormsModule, - HttpClientTestingModule, - RouterTestingModule, - ComponentsModule, - ServicesModule, - ApiModule, - ToastModule.forRoot() - ], - declarations: [ RbdFormComponent ] - }) - .compileComponents(); + imports: [ReactiveFormsModule, RouterTestingModule], + declarations: [RbdFormComponent], + schemas: [NO_ERRORS_SCHEMA], + providers: [ + DimlessBinaryPipe, + FormatterService, + TaskManagerMessageService, + { provide: NotificationService, useValue: fakeService }, + { provide: PoolService, useValue: fakeService }, + { provide: RbdService, useValue: fakeService }, + { provide: TaskManagerService, useValue: fakeService } + ] + }).compileComponents(); })); beforeEach(() => { diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-list/rbd-list.component.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-list/rbd-list.component.spec.ts index 97518ebf15dbe..6b535b3681312 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-list/rbd-list.component.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-list/rbd-list.component.spec.ts @@ -5,11 +5,13 @@ import { RouterTestingModule } from '@angular/router/testing'; import { ToastModule } from 'ng2-toastr'; import { AlertModule, - BsDropdownModule, BsModalRef, + BsDropdownModule, + BsModalRef, ModalModule, TabsModule, TooltipModule } from 'ngx-bootstrap'; +import 'rxjs/add/observable/throw'; import { Observable } from 'rxjs/Observable'; import { RbdService } from '../../../shared/api/rbd.service'; @@ -38,9 +40,8 @@ describe('RbdListComponent', () => { RouterTestingModule, HttpClientTestingModule ], - declarations: [ RbdListComponent, RbdDetailsComponent, RbdSnapshotListComponent ] - }) - .compileComponents(); + declarations: [RbdListComponent, RbdDetailsComponent, RbdSnapshotListComponent] + }).compileComponents(); })); beforeEach(() => { @@ -62,22 +63,31 @@ describe('RbdListComponent', () => { called = false; rbdService = new RbdService(null); notificationService = new NotificationService(null, null); - component = new RbdListComponent(rbdService, null, null, null, null, notificationService, - null, null); - spyOn(rbdService, 'delete').and.returnValue(Observable.throw({status: 500})); + component = new RbdListComponent( + rbdService, + null, + null, + null, + null, + notificationService, + null, + null + ); + spyOn(rbdService, 'delete').and.returnValue(Observable.throw({ status: 500 })); spyOn(notificationService, 'notifyTask').and.stub(); component.modalRef = new BsModalRef(); component.modalRef.content = { - stopLoadingSpinner: () => called = true + stopLoadingSpinner: () => (called = true) }; }); - it('should make sure that if the deletion fails stopLoadingSpinner is called', - fakeAsync(() => { - expect(called).toBe(false); - component.deleteRbd('sth', 'test'); - tick(500); - expect(called).toBe(true); - })); + it('should make sure that if the deletion fails stopLoadingSpinner is called', fakeAsync( + () => { + expect(called).toBe(false); + component.deleteRbd('sth', 'test'); + tick(500); + expect(called).toBe(true); + } + )); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs/cephfs.component.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs/cephfs.component.spec.ts index e85f85f52040d..9d6fe4122470c 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs/cephfs.component.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs/cephfs.component.spec.ts @@ -1,13 +1,13 @@ +import { NO_ERRORS_SCHEMA } from '@angular/core'; import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; -import { ChartsModule } from 'ng2-charts/ng2-charts'; -import { BsDropdownModule, ProgressbarModule } from 'ngx-bootstrap'; import { Observable } from 'rxjs/Observable'; import { CephfsService } from '../../../shared/api/cephfs.service'; -import { SharedModule } from '../../../shared/shared.module'; -import { CephfsChartComponent } from '../cephfs-chart/cephfs-chart.component'; +import { DimlessBinaryPipe } from '../../../shared/pipes/dimless-binary.pipe'; +import { DimlessPipe } from '../../../shared/pipes/dimless.pipe'; +import { FormatterService } from '../../../shared/services/formatter.service'; import { CephfsComponent } from './cephfs.component'; describe('CephfsComponent', () => { @@ -15,35 +15,31 @@ describe('CephfsComponent', () => { let fixture: ComponentFixture; const fakeFilesystemService = { - getCephfs: id => { - return Observable.create(observer => { + getCephfs: (id) => { + return Observable.create((observer) => { return () => console.log('disposed'); }); }, - getMdsCounters: id => { - return Observable.create(observer => { + getMdsCounters: (id) => { + return Observable.create((observer) => { return () => console.log('disposed'); }); } }; - beforeEach( - async(() => { - TestBed.configureTestingModule({ - imports: [ - SharedModule, - ChartsModule, - RouterTestingModule, - BsDropdownModule.forRoot(), - ProgressbarModule.forRoot() - ], - declarations: [CephfsComponent, CephfsChartComponent], - providers: [ - { provide: CephfsService, useValue: fakeFilesystemService } - ] - }).compileComponents(); - }) - ); + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [RouterTestingModule], + schemas: [NO_ERRORS_SCHEMA], + declarations: [CephfsComponent, DimlessPipe], + providers: [ + DimlessPipe, + DimlessBinaryPipe, + FormatterService, + { provide: CephfsService, useValue: fakeFilesystemService } + ] + }).compileComponents(); + })); beforeEach(() => { fixture = TestBed.createComponent(CephfsComponent); diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/monitor/monitor.component.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/monitor/monitor.component.spec.ts index 906581e76b982..8f59bf394afca 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/monitor/monitor.component.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/monitor/monitor.component.spec.ts @@ -1,23 +1,30 @@ +import { NO_ERRORS_SCHEMA } from '@angular/core'; import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { AppModule } from '../../../app.module'; +import { MonitorService } from '../../../shared/api/monitor.service'; import { MonitorComponent } from './monitor.component'; describe('MonitorComponent', () => { let component: MonitorComponent; let fixture: ComponentFixture; - beforeEach( - async(() => { - TestBed.configureTestingModule({ - imports: [AppModule] - }).compileComponents(); - }) - ); + const fakeService = {}; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [MonitorComponent], + schemas: [NO_ERRORS_SCHEMA], + providers: [{ provide: MonitorService, useValue: fakeService }] + }).compileComponents(); + })); beforeEach(() => { fixture = TestBed.createComponent(MonitorComponent); component = fixture.componentInstance; fixture.detectChanges(); }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); }); diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/dashboard/dashboard.component.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/dashboard/dashboard.component.spec.ts index 80500c0b9ae3a..62bc8f672e8f0 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/dashboard/dashboard.component.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/dashboard/dashboard.component.spec.ts @@ -1,3 +1,4 @@ +import { NO_ERRORS_SCHEMA } from '@angular/core'; import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { DashboardComponent } from './dashboard.component'; @@ -8,9 +9,9 @@ describe('DashboardComponent', () => { beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ DashboardComponent ] - }) - .compileComponents(); + declarations: [DashboardComponent], + schemas: [NO_ERRORS_SCHEMA] + }).compileComponents(); })); beforeEach(() => { @@ -19,7 +20,7 @@ describe('DashboardComponent', () => { fixture.detectChanges(); }); - // it('should create', () => { - // expect(component).toBeTruthy(); - // }); + it('should create', () => { + expect(component).toBeTruthy(); + }); }); diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/health-pie/health-pie.component.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/health-pie/health-pie.component.spec.ts index dca539f041c2f..ae24ccc0859fa 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/health-pie/health-pie.component.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/health-pie/health-pie.component.spec.ts @@ -1,22 +1,21 @@ +import { NO_ERRORS_SCHEMA } from '@angular/core'; import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { ChartsModule } from 'ng2-charts/ng2-charts'; - -import { SharedModule } from '../../../shared/shared.module'; +import { DimlessBinaryPipe } from '../../../shared/pipes/dimless-binary.pipe'; +import { FormatterService } from '../../../shared/services/formatter.service'; import { HealthPieComponent } from './health-pie.component'; describe('HealthPieComponent', () => { let component: HealthPieComponent; let fixture: ComponentFixture; - beforeEach( - async(() => { - TestBed.configureTestingModule({ - imports: [ChartsModule, SharedModule], - declarations: [HealthPieComponent] - }).compileComponents(); - }) - ); + beforeEach(async(() => { + TestBed.configureTestingModule({ + schemas: [NO_ERRORS_SCHEMA], + declarations: [HealthPieComponent], + providers: [DimlessBinaryPipe, FormatterService] + }).compileComponents(); + })); beforeEach(() => { fixture = TestBed.createComponent(HealthPieComponent); diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/health/health.component.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/health/health.component.spec.ts index 847cabdfbd78a..012136cc450f9 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/health/health.component.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/health/health.component.spec.ts @@ -1,10 +1,17 @@ -import { HttpClientModule } from '@angular/common/http'; +import { NO_ERRORS_SCHEMA } from '@angular/core'; import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { TabsModule } from 'ngx-bootstrap/tabs'; +import { Observable } from 'rxjs/Observable'; import { DashboardService } from '../../../shared/api/dashboard.service'; import { SharedModule } from '../../../shared/shared.module'; +import { LogColorPipe } from '../log-color.pipe'; +import { MdsSummaryPipe } from '../mds-summary.pipe'; +import { MgrSummaryPipe } from '../mgr-summary.pipe'; +import { MonSummaryPipe } from '../mon-summary.pipe'; +import { OsdSummaryPipe } from '../osd-summary.pipe'; +import { PgStatusStylePipe } from '../pg-status-style.pipe'; +import { PgStatusPipe } from '../pg-status.pipe'; import { HealthComponent } from './health.component'; describe('HealthComponent', () => { @@ -12,24 +19,47 @@ describe('HealthComponent', () => { let fixture: ComponentFixture; const fakeService = { - getHealth() { - return {}; + getHealth: () => { + return Observable.of({ + health: {}, + df: { + stats: {} + }, + pools: [] + }); } }; - beforeEach( - async(() => { - TestBed.configureTestingModule({ - providers: [{ provide: DashboardService, useValue: fakeService }], - imports: [SharedModule], - declarations: [HealthComponent] - }).compileComponents(); - }) - ); + beforeEach(async(() => { + TestBed.configureTestingModule({ + providers: [{ provide: DashboardService, useValue: fakeService }], + imports: [SharedModule], + declarations: [ + HealthComponent, + MonSummaryPipe, + OsdSummaryPipe, + MdsSummaryPipe, + MgrSummaryPipe, + PgStatusStylePipe, + LogColorPipe, + PgStatusPipe + ], + schemas: [NO_ERRORS_SCHEMA] + }).compileComponents(); + })); beforeEach(() => { fixture = TestBed.createComponent(HealthComponent); component = fixture.componentInstance; + + component.contentData = { + health: {} + }; + fixture.detectChanges(); }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); }); diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-list/pool-list.component.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-list/pool-list.component.spec.ts index b5b32d5fa616c..45857a69f0b1e 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-list/pool-list.component.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-list/pool-list.component.spec.ts @@ -10,16 +10,13 @@ describe('PoolListComponent', () => { let component: PoolListComponent; let fixture: ComponentFixture; + const fakeService = {}; + beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ PoolListComponent ], - imports: [ - SharedModule, - TabsModule.forRoot(), - HttpClientTestingModule - ], - }) - .compileComponents(); + declarations: [PoolListComponent], + imports: [SharedModule, TabsModule.forRoot(), HttpClientTestingModule] + }).compileComponents(); })); beforeEach(() => { diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-list/rgw-user-list.component.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-list/rgw-user-list.component.spec.ts index 04cafb7ad3cd4..60732772f3718 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-list/rgw-user-list.component.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-list/rgw-user-list.component.spec.ts @@ -1,37 +1,28 @@ -import { HttpClientModule } from '@angular/common/http'; +import { NO_ERRORS_SCHEMA } from '@angular/core'; import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; -import { BsDropdownModule } from 'ngx-bootstrap'; -import { BsModalService } from 'ngx-bootstrap/modal'; -import { TabsModule } from 'ngx-bootstrap/tabs'; +import { BsModalService } from 'ngx-bootstrap'; -import { SharedModule } from '../../../shared/shared.module'; -import { RgwUserDetailsComponent } from '../rgw-user-details/rgw-user-details.component'; +import { RgwUserService } from '../../../shared/api/rgw-user.service'; import { RgwUserListComponent } from './rgw-user-list.component'; describe('RgwUserListComponent', () => { let component: RgwUserListComponent; let fixture: ComponentFixture; + const fakeService = {}; + beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ - RgwUserListComponent, - RgwUserDetailsComponent - ], - imports: [ - HttpClientModule, - RouterTestingModule, - BsDropdownModule.forRoot(), - TabsModule.forRoot(), - SharedModule - ], + declarations: [RgwUserListComponent], + imports: [RouterTestingModule], providers: [ - BsModalService - ] - }) - .compileComponents(); + { provide: RgwUserService, useValue: fakeService }, + { provide: BsModalService, useValue: fakeService } + ], + schemas: [NO_ERRORS_SCHEMA] + }).compileComponents(); })); beforeEach(() => { diff --git a/src/pybind/mgr/dashboard/frontend/src/app/core/auth/login/login.component.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/core/auth/login/login.component.spec.ts index 665a3db0e4291..4b557b5421a75 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/core/auth/login/login.component.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/core/auth/login/login.component.spec.ts @@ -1,28 +1,23 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { FormsModule } from '@angular/forms'; import { RouterTestingModule } from '@angular/router/testing'; -import { SharedModule } from '../../../shared/shared.module'; +import { AuthService } from '../../../shared/api/auth.service'; +import { AuthStorageService } from '../../../shared/services/auth-storage.service'; import { LoginComponent } from './login.component'; describe('LoginComponent', () => { let component: LoginComponent; let fixture: ComponentFixture; + const fakeService = {}; + beforeEach(async(() => { TestBed.configureTestingModule({ - imports: [ - FormsModule, - SharedModule, - RouterTestingModule, - HttpClientTestingModule - ], - declarations: [ - LoginComponent - ] - }) - .compileComponents(); + imports: [FormsModule, RouterTestingModule], + declarations: [LoginComponent], + providers: [{ provide: AuthService, useValue: fakeService }, AuthStorageService] + }).compileComponents(); })); beforeEach(() => { diff --git a/src/pybind/mgr/dashboard/frontend/src/app/core/auth/logout/logout.component.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/core/auth/logout/logout.component.spec.ts index 318ca820af2d3..e66bf6aca041a 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/core/auth/logout/logout.component.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/core/auth/logout/logout.component.spec.ts @@ -1,26 +1,21 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; -import { SharedModule } from '../../../shared/shared.module'; +import { AuthService } from '../../../shared/api/auth.service'; import { LogoutComponent } from './logout.component'; describe('LogoutComponent', () => { let component: LogoutComponent; let fixture: ComponentFixture; + const fakeService = {}; + beforeEach(async(() => { TestBed.configureTestingModule({ - imports: [ - SharedModule, - RouterTestingModule, - HttpClientTestingModule - ], - declarations: [ - LogoutComponent - ] - }) - .compileComponents(); + imports: [RouterTestingModule], + declarations: [LogoutComponent], + providers: [{ provide: AuthService, useValue: fakeService }] + }).compileComponents(); })); beforeEach(() => { diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/components/deletion-modal/deletion-modal.component.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/components/deletion-modal/deletion-modal.component.spec.ts index bce74a2be3fc5..9ac9876826a81 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/shared/components/deletion-modal/deletion-modal.component.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/components/deletion-modal/deletion-modal.component.spec.ts @@ -1,4 +1,4 @@ -import { Component, NgModule, TemplateRef, ViewChild } from '@angular/core'; +import { Component, NgModule, NO_ERRORS_SCHEMA, TemplateRef, ViewChild } from '@angular/core'; import { async, ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing'; import { ReactiveFormsModule } from '@angular/forms'; @@ -7,7 +7,6 @@ import { Observable } from 'rxjs/Observable'; import { Subscriber } from 'rxjs/Subscriber'; import { ModalComponent } from '../modal/modal.component'; -import { SubmitButtonComponent } from '../submit-button/submit-button.component'; import { DeletionModalComponent } from './deletion-modal.component'; @NgModule({ @@ -101,11 +100,10 @@ describe('DeletionModalComponent', () => { beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ MockComponent, DeletionModalComponent, ModalComponent, - SubmitButtonComponent], - imports: [ModalModule.forRoot(), ReactiveFormsModule, MockModule], - }) - .compileComponents(); + declarations: [MockComponent, DeletionModalComponent], + schemas: [NO_ERRORS_SCHEMA], + imports: [ModalModule.forRoot(), ReactiveFormsModule, MockModule] + }).compileComponents(); })); beforeEach(() => { @@ -137,8 +135,13 @@ describe('DeletionModalComponent', () => { component.modalRef = undefined; }; - const expectSetup = (metaType, observer: boolean, method: boolean, pattern, - template: boolean) => { + const expectSetup = ( + metaType, + observer: boolean, + method: boolean, + pattern, + template: boolean + ) => { expect(component.modalRef).toBeTruthy(); expect(component.metaType).toBe(metaType); expect(!!component.deletionObserver).toBe(observer); @@ -152,70 +155,74 @@ describe('DeletionModalComponent', () => { }); it('should throw error if no modal reference is given', () => { - expect(() => component.setUp({ - metaType: undefined, - modalRef: undefined - })).toThrowError('No modal reference'); + expect(() => + component.setUp({ + metaType: undefined, + modalRef: undefined + }) + ).toThrowError('No modal reference'); }); it('should throw error if no meta type is given', () => { - expect(() => component.setUp({ - metaType: undefined, - modalRef: mockComponent.ctrlRef - })).toThrowError('No meta type'); + expect(() => + component.setUp({ + metaType: undefined, + modalRef: mockComponent.ctrlRef + }) + ).toThrowError('No meta type'); }); it('should throw error if no deletion method is given', () => { - expect(() => component.setUp({ - metaType: 'Sth', - modalRef: mockComponent.ctrlRef - })).toThrowError('No deletion method'); + expect(() => + component.setUp({ + metaType: 'Sth', + modalRef: mockComponent.ctrlRef + }) + ).toThrowError('No deletion method'); }); - it('should throw no errors if metaType, modalRef and a deletion method were given', - () => { - component.setUp({ - metaType: 'Observer', - modalRef: mockComponent.ctrlRef, - deletionObserver: mockComponent.fakeDelete() - }); - expectSetup('Observer', true, false, 'yes', false); - clearSetup(); - component.setUp({ - metaType: 'Controller', - modalRef: mockComponent.ctrlRef, - deletionMethod: mockComponent.fakeDeleteController - }); - expectSetup('Controller', false, true, 'yes', false); - }); + it('should throw no errors if metaType, modalRef and a deletion method were given', () => { + component.setUp({ + metaType: 'Observer', + modalRef: mockComponent.ctrlRef, + deletionObserver: mockComponent.fakeDelete() + }); + expectSetup('Observer', true, false, 'yes', false); + clearSetup(); + component.setUp({ + metaType: 'Controller', + modalRef: mockComponent.ctrlRef, + deletionMethod: mockComponent.fakeDeleteController + }); + expectSetup('Controller', false, true, 'yes', false); + }); - it('should test optional parameters - pattern and description', - () => { - component.setUp({ - metaType: 'Pattern only', - modalRef: mockComponent.ctrlRef, - deletionObserver: mockComponent.fakeDelete(), - pattern: '{sth/!$_8()' - }); - expectSetup('Pattern only', true, false, '{sth/!$_8()', false); - clearSetup(); - component.setUp({ - metaType: 'Description only', - modalRef: mockComponent.ctrlRef, - deletionObserver: mockComponent.fakeDelete(), - description: mockComponent.modalDescription - }); - expectSetup('Description only', true, false, 'yes', true); - clearSetup(); - component.setUp({ - metaType: 'Description and pattern', - modalRef: mockComponent.ctrlRef, - deletionObserver: mockComponent.fakeDelete(), - description: mockComponent.modalDescription, - pattern: '{sth/!$_8()' - }); - expectSetup('Description and pattern', true, false, '{sth/!$_8()', true); + it('should test optional parameters - pattern and description', () => { + component.setUp({ + metaType: 'Pattern only', + modalRef: mockComponent.ctrlRef, + deletionObserver: mockComponent.fakeDelete(), + pattern: '{sth/!$_8()' + }); + expectSetup('Pattern only', true, false, '{sth/!$_8()', false); + clearSetup(); + component.setUp({ + metaType: 'Description only', + modalRef: mockComponent.ctrlRef, + deletionObserver: mockComponent.fakeDelete(), + description: mockComponent.modalDescription + }); + expectSetup('Description only', true, false, 'yes', true); + clearSetup(); + component.setUp({ + metaType: 'Description and pattern', + modalRef: mockComponent.ctrlRef, + deletionObserver: mockComponent.fakeDelete(), + description: mockComponent.modalDescription, + pattern: '{sth/!$_8()' }); + expectSetup('Description and pattern', true, false, '{sth/!$_8()', true); + }); }); it('should test if the ctrl driven mock is set correctly through mock component', () => { @@ -338,5 +345,4 @@ describe('DeletionModalComponent', () => { }); }); }); - }); diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/components/sparkline/sparkline.component.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/components/sparkline/sparkline.component.spec.ts index 4a879c3fcbd12..5c90e0e084080 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/shared/components/sparkline/sparkline.component.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/components/sparkline/sparkline.component.spec.ts @@ -1,19 +1,19 @@ +import { NO_ERRORS_SCHEMA } from '@angular/core'; import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { AppModule } from '../../../app.module'; import { SparklineComponent } from './sparkline.component'; describe('SparklineComponent', () => { let component: SparklineComponent; let fixture: ComponentFixture; - beforeEach( - async(() => { - TestBed.configureTestingModule({ - imports: [AppModule] - }).compileComponents(); - }) - ); + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [SparklineComponent], + schemas: [NO_ERRORS_SCHEMA], + imports: [] + }).compileComponents(); + })); beforeEach(() => { fixture = TestBed.createComponent(SparklineComponent); diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/services/module-status-guard.service.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/module-status-guard.service.ts index e325d92702a25..8ef40c416396c 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/shared/services/module-status-guard.service.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/module-status-guard.service.ts @@ -9,6 +9,7 @@ import { } from '@angular/router'; import 'rxjs/add/observable/of'; +import 'rxjs/add/operator/catch'; import { Observable } from 'rxjs/Observable'; /** @@ -38,9 +39,7 @@ import { Observable } from 'rxjs/Observable'; */ @Injectable() export class ModuleStatusGuardService implements CanActivate, CanActivateChild { - - constructor(private http: HttpClient, - private router: Router) {} + constructor(private http: HttpClient, private router: Router) {} canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { return this.doCheck(route); @@ -52,7 +51,8 @@ export class ModuleStatusGuardService implements CanActivate, CanActivateChild { private doCheck(route: ActivatedRouteSnapshot) { const config = route.data['moduleStatusGuardConfig']; - return this.http.get(`/api/${config.apiPath}/status`) + return this.http + .get(`/api/${config.apiPath}/status`) .map((resp: any) => { if (!resp.available) { this.router.navigate([config.redirectTo, resp.message || '']); diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/services/summary.service.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/summary.service.spec.ts index 23af9836a147a..2f0c4f9cc33c6 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/shared/services/summary.service.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/summary.service.spec.ts @@ -1,14 +1,14 @@ import { HttpClientTestingModule } from '@angular/common/http/testing'; import { inject, TestBed } from '@angular/core/testing'; -import { SharedModule } from '../shared.module'; +import { AuthStorageService } from './auth-storage.service'; import { SummaryService } from './summary.service'; describe('SummaryService', () => { beforeEach(() => { TestBed.configureTestingModule({ - providers: [SummaryService], - imports: [HttpClientTestingModule, SharedModule] + providers: [SummaryService, AuthStorageService], + imports: [HttpClientTestingModule] }); }); -- 2.39.5