]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-daemon-list/rgw-daemon-list.component.spec.ts
import 15.2.4
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / ceph / rgw / rgw-daemon-list / rgw-daemon-list.component.spec.ts
index 65b7102c8698f1605aeac0e70f7eaa5f8a4845b5..19aacc0acd95da6e65ea6df7511777de139abf79 100644 (file)
@@ -1,10 +1,15 @@
 import { HttpClientTestingModule } from '@angular/common/http/testing';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
 import { RouterTestingModule } from '@angular/router/testing';
 
 import { TabsModule } from 'ngx-bootstrap/tabs';
+import { of } from 'rxjs';
 
 import { configureTestBed, i18nProviders } from '../../../../testing/unit-test-helper';
+import { RgwSiteService } from '../../../shared/api/rgw-site.service';
+import { Permissions } from '../../../shared/models/permissions';
+import { AuthStorageService } from '../../../shared/services/auth-storage.service';
 import { SharedModule } from '../../../shared/shared.module';
 import { PerformanceCounterModule } from '../../performance-counter/performance-counter.module';
 import { RgwDaemonDetailsComponent } from '../rgw-daemon-details/rgw-daemon-details.component';
@@ -13,10 +18,20 @@ import { RgwDaemonListComponent } from './rgw-daemon-list.component';
 describe('RgwDaemonListComponent', () => {
   let component: RgwDaemonListComponent;
   let fixture: ComponentFixture<RgwDaemonListComponent>;
+  let getPermissionsSpy: jasmine.Spy;
+  let getRealmsSpy: jasmine.Spy;
+  const permissions = new Permissions({ grafana: ['read'] });
+  const expectTabsAndHeading = (length: number, heading: string) => {
+    const tabs = fixture.debugElement.nativeElement.querySelectorAll('tab');
+
+    expect(tabs.length).toEqual(length);
+    expect(tabs[length - 1].getAttribute('heading')).toEqual(heading);
+  };
 
   configureTestBed({
     declarations: [RgwDaemonListComponent, RgwDaemonDetailsComponent],
     imports: [
+      BrowserAnimationsModule,
       HttpClientTestingModule,
       TabsModule.forRoot(),
       PerformanceCounterModule,
@@ -27,12 +42,37 @@ describe('RgwDaemonListComponent', () => {
   });
 
   beforeEach(() => {
+    getPermissionsSpy = spyOn(TestBed.get(AuthStorageService), 'getPermissions');
+    getPermissionsSpy.and.returnValue(new Permissions({}));
+    getRealmsSpy = spyOn(TestBed.get(RgwSiteService), 'get');
+    getRealmsSpy.and.returnValue(of([]));
     fixture = TestBed.createComponent(RgwDaemonListComponent);
     component = fixture.componentInstance;
-    fixture.detectChanges();
   });
 
   it('should create', () => {
+    fixture.detectChanges();
     expect(component).toBeTruthy();
   });
+
+  it('should only show Daemons List tab', () => {
+    fixture.detectChanges();
+
+    expectTabsAndHeading(1, 'Daemons List');
+  });
+
+  it('should show Overall Performance tab', () => {
+    getPermissionsSpy.and.returnValue(permissions);
+    fixture.detectChanges();
+
+    expectTabsAndHeading(2, 'Overall Performance');
+  });
+
+  it('should show Sync Performance tab', () => {
+    getPermissionsSpy.and.returnValue(permissions);
+    getRealmsSpy.and.returnValue(of(['realm1']));
+    fixture.detectChanges();
+
+    expectTabsAndHeading(3, 'Sync Performance');
+  });
 });