describe('should test form', () => {
beforeEach(() => {
nvmeofService = TestBed.inject(NvmeofService);
- spyOn(nvmeofService, 'addSubsystemInitiators').and.stub();
+ spyOn(nvmeofService, 'addSubsystemInitiators').and.returnValue(of({}));
});
it('should be creating request correctly', () => {
hosts: [{ dhchap_key: '', host_nqn: 'host2' }]
});
});
+
+ it('should not submit when hostType is SPECIFIC and no host is provided', () => {
+ const subsystemNQN = 'nqn.test';
+ component.subsystemNQN = subsystemNQN;
+ component.group = 'test-group';
+
+ const payload: any = {
+ hostType: HOST_TYPE.SPECIFIC,
+ addedHosts: []
+ };
+
+ component.onSubmit(payload);
+
+ expect(nvmeofService.addSubsystemInitiators).not.toHaveBeenCalled();
+ expect(component.isSubmitLoading).toBe(false);
+ });
});
});
}
onSubmit(payload: InitiatorsFormPayload) {
- this.isSubmitLoading = true;
const taskUrl = `nvmeof/initiator/add`;
- const hostKeyList = payload.hostDchapKeyList || [];
- const addedHosts = payload.addedHosts || [];
+ const hostKeyList = (payload.hostDchapKeyList || []).filter((host) => !!host?.host_nqn?.trim());
+ const addedHosts = (payload.addedHosts || []).filter((host) => !!host?.trim());
const hosts =
payload.hostType === HOST_TYPE.SPECIFIC
? hostKeyList.length
: addedHosts.map((host_nqn: string) => ({ host_nqn, dhchap_key: '' }))
: [];
+ if (payload.hostType === HOST_TYPE.SPECIFIC && hosts.length === 0) {
+ const hostStepIndex = Math.max(
+ this.tearsheet?.getStepIndexByLabel(STEP_LABELS.HOSTS) ?? 0,
+ 0
+ );
+ const hostStepForm = this.tearsheet?.stepContents?.toArray()?.[hostStepIndex]?.stepComponent
+ ?.formGroup;
+
+ hostStepForm?.markAllAsTouched();
+ hostStepForm?.get('hostname')?.markAsTouched();
+ hostStepForm?.get('hostname')?.updateValueAndValidity({ emitEvent: true });
+ if (this.tearsheet) {
+ this.tearsheet.currentStep = hostStepIndex;
+ }
+ return;
+ }
+
+ this.isSubmitLoading = true;
+
const request: SubsystemInitiatorRequest = {
allow_all: payload.hostType === HOST_TYPE.ALL,
hosts,
}
handleSubmit() {
+ this.stepContents?.forEach((wrapper, index) => {
+ const form = wrapper.stepComponent?.formGroup;
+ if (!form) return;
+
+ form.markAllAsTouched();
+ form.updateValueAndValidity({ emitEvent: true });
+ this._updateStepInvalid(index, form.invalid);
+ });
+
if (this.steps.some((step) => step?.invalid)) return;
const mergedPayloads = this.getMergedPayload();