1 import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing';
2 import { HttpClientModule } from '@angular/common/http';
3 import { of } from 'rxjs';
4 import { RouterTestingModule } from '@angular/router/testing';
5 import { SharedModule } from '~/app/shared/shared.module';
7 import { NvmeofService } from '../../../shared/api/nvmeof.service';
8 import { AuthStorageService } from '~/app/shared/services/auth-storage.service';
9 import { ModalCdsService } from '~/app/shared/services/modal-cds.service';
10 import { TaskWrapperService } from '~/app/shared/services/task-wrapper.service';
11 import { NvmeofSubsystemsComponent } from './nvmeof-subsystems.component';
12 import { NvmeofSubsystemsDetailsComponent } from '../nvmeof-subsystems-details/nvmeof-subsystems-details.component';
13 import { ComboBoxModule, GridModule } from 'carbon-components-angular';
14 import { CephServiceSpec } from '~/app/shared/models/service.interface';
16 const mockSubsystems = [
18 nqn: 'nqn.2001-07.com.ceph:1720603703820',
20 serial_number: 'Ceph30487186726692',
21 model_number: 'Ceph bdev Controller',
33 service_name: 'nvmeof.rbd.default',
34 service_type: 'nvmeof',
41 service_name: 'nvmeof.rbd.foo',
42 service_type: 'nvmeof',
52 const mockformattedGwGroups = [
61 class MockNvmeOfService {
63 return of(mockSubsystems);
70 formatGwGroupsList(_data: CephServiceSpec[][]) {
71 return mockformattedGwGroups;
75 return of(mockGroups);
79 class MockAuthStorageService {
81 return { nvmeof: {} };
85 class MockModalService {}
87 class MockTaskWrapperService {}
89 describe('NvmeofSubsystemsComponent', () => {
90 let component: NvmeofSubsystemsComponent;
91 let fixture: ComponentFixture<NvmeofSubsystemsComponent>;
93 beforeEach(async () => {
94 await TestBed.configureTestingModule({
95 declarations: [NvmeofSubsystemsComponent, NvmeofSubsystemsDetailsComponent],
96 imports: [HttpClientModule, RouterTestingModule, SharedModule, ComboBoxModule, GridModule],
98 { provide: NvmeofService, useClass: MockNvmeOfService },
99 { provide: AuthStorageService, useClass: MockAuthStorageService },
100 { provide: ModalCdsService, useClass: MockModalService },
101 { provide: TaskWrapperService, useClass: MockTaskWrapperService }
103 }).compileComponents();
105 fixture = TestBed.createComponent(NvmeofSubsystemsComponent);
106 component = fixture.componentInstance;
107 component.ngOnInit();
108 fixture.detectChanges();
111 it('should create', () => {
112 expect(component).toBeTruthy();
115 it('should retrieve subsystems', fakeAsync(() => {
116 component.getSubsystems();
118 const expected = mockSubsystems.map((s) => ({
120 gw_group: component.group,
121 auth: 'No authentication',
124 expect(component.subsystems).toEqual(expected);
127 it('should load gateway groups correctly', () => {
128 expect(component.gwGroups.length).toBe(2);
131 it('should set first group as default initially', () => {
132 expect(component.group).toBe(mockGroups[0][0].spec.group);