1 import { HttpClientTestingModule } from '@angular/common/http/testing';
2 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
3 import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
4 import { RouterTestingModule } from '@angular/router/testing';
6 import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
7 import { TabsModule } from 'ngx-bootstrap/tabs';
8 import { ToastrModule } from 'ngx-toastr';
9 import { of } from 'rxjs';
11 import { configureTestBed, i18nProviders } from '../../../../testing/unit-test-helper';
12 import { CoreModule } from '../../../core/core.module';
13 import { HostService } from '../../../shared/api/host.service';
14 import { Permissions } from '../../../shared/models/permissions';
15 import { AuthStorageService } from '../../../shared/services/auth-storage.service';
16 import { SharedModule } from '../../../shared/shared.module';
17 import { CephModule } from '../../ceph.module';
18 import { CephSharedModule } from '../../shared/ceph-shared.module';
19 import { HostsComponent } from './hosts.component';
21 describe('HostsComponent', () => {
22 let component: HostsComponent;
23 let fixture: ComponentFixture<HostsComponent>;
24 let hostListSpy: jasmine.Spy;
26 const fakeAuthStorageService = {
27 getPermissions: () => {
28 return new Permissions({ hosts: ['read', 'update', 'create', 'delete'] });
34 BrowserAnimationsModule,
37 HttpClientTestingModule,
39 BsDropdownModule.forRoot(),
41 ToastrModule.forRoot(),
45 providers: [{ provide: AuthStorageService, useValue: fakeAuthStorageService }, i18nProviders],
50 fixture = TestBed.createComponent(HostsComponent);
51 component = fixture.componentInstance;
52 hostListSpy = spyOn(TestBed.get(HostService), 'list');
53 fixture.detectChanges();
56 it('should create', () => {
57 expect(component).toBeTruthy();
60 it('should render hosts list even with not permission mapped services', async(() => {
61 const hostname = 'ceph.dev';
74 type: 'notPermissionMappedService',
79 ceph_version: 'ceph version Development',
80 labels: ['foo', 'bar']
84 hostListSpy.and.callFake(() => of(payload));
86 fixture.whenStable().then(() => {
87 fixture.detectChanges();
89 const spans = fixture.debugElement.nativeElement.querySelectorAll(
90 '.datatable-body-cell-label span'
92 expect(spans[0].textContent).toBe(hostname);