]> git.apps.os.sepia.ceph.com Git - ceph.git/blob
08e56debf0a741b77efce45be0809e5ad6e68a75
[ceph.git] /
1 import { HttpClientTestingModule } from '@angular/common/http/testing';
2 import { ReactiveFormsModule } from '@angular/forms';
3 import { RouterTestingModule } from '@angular/router/testing';
4 import { ComponentFixture, TestBed } from '@angular/core/testing';
5
6 import { ToastrModule } from 'ngx-toastr';
7
8 import { NgbActiveModal, NgbTypeaheadModule } from '@ng-bootstrap/ng-bootstrap';
9
10 import { CdFormGroup } from '~/app/shared/forms/cd-form-group';
11 import { SharedModule } from '~/app/shared/shared.module';
12 import { NvmeofSubsystemsFormComponent } from './nvmeof-subsystems-form.component';
13 import { FormHelper } from '~/testing/unit-test-helper';
14 import { MAX_NAMESPACE, NvmeofService } from '~/app/shared/api/nvmeof.service';
15
16 describe('NvmeofSubsystemsFormComponent', () => {
17   let component: NvmeofSubsystemsFormComponent;
18   let fixture: ComponentFixture<NvmeofSubsystemsFormComponent>;
19   let nvmeofService: NvmeofService;
20   let form: CdFormGroup;
21   let formHelper: FormHelper;
22   const mockTimestamp = 1720693470789;
23
24   beforeEach(async () => {
25     spyOn(Date, 'now').and.returnValue(mockTimestamp);
26     await TestBed.configureTestingModule({
27       declarations: [NvmeofSubsystemsFormComponent],
28       providers: [NgbActiveModal],
29       imports: [
30         HttpClientTestingModule,
31         NgbTypeaheadModule,
32         ReactiveFormsModule,
33         RouterTestingModule,
34         SharedModule,
35         ToastrModule.forRoot()
36       ]
37     }).compileComponents();
38
39     fixture = TestBed.createComponent(NvmeofSubsystemsFormComponent);
40     component = fixture.componentInstance;
41     component.ngOnInit();
42     form = component.subsystemForm;
43     formHelper = new FormHelper(form);
44     fixture.detectChanges();
45   });
46
47   it('should create', () => {
48     expect(component).toBeTruthy();
49   });
50
51   describe('should test form', () => {
52     beforeEach(() => {
53       nvmeofService = TestBed.inject(NvmeofService);
54       spyOn(nvmeofService, 'createSubsystem').and.stub();
55     });
56
57     it('should be creating request correctly', () => {
58       const expectedNqn = 'nqn.2001-07.com.ceph:' + mockTimestamp;
59       component.onSubmit();
60       expect(nvmeofService.createSubsystem).toHaveBeenCalledWith({
61         nqn: expectedNqn,
62         max_namespaces: MAX_NAMESPACE,
63         enable_ha: true
64       });
65     });
66
67     it('should give error on invalid nqn', () => {
68       formHelper.setValue('nqn', 'nqn:2001-07.com.ceph:');
69       component.onSubmit();
70       formHelper.expectError('nqn', 'pattern');
71     });
72
73     it('should give error on invalid max_namespaces', () => {
74       formHelper.setValue('max_namespaces', -56);
75       component.onSubmit();
76       formHelper.expectError('max_namespaces', 'pattern');
77     });
78
79     it(`should give error on max_namespaces greater than ${MAX_NAMESPACE}`, () => {
80       formHelper.setValue('max_namespaces', 2000);
81       component.onSubmit();
82       formHelper.expectError('max_namespaces', 'max');
83     });
84
85     it('should give error on max_namespaces lesser than 1', () => {
86       formHelper.setValue('max_namespaces', 0);
87       component.onSubmit();
88       formHelper.expectError('max_namespaces', 'min');
89     });
90   });
91 });