When feature toggle is active then SDNC preload files is enable.
[vid.git] / vid-webpack-master / src / app / shared / components / genericForm / formControlsServices / vfModuleGenerator / vfModule.control.generator.spec.ts
index 351f839..49deb3a 100644 (file)
@@ -1,10 +1,10 @@
 import {getTestBed, TestBed} from '@angular/core/testing';
 import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
 import {NgRedux} from '@angular-redux/store';
-import {BasicControlGenerator} from "../basic.control.generator";
+import {ControlGeneratorUtil, SDN_C_PRE_LOAD} from "../control.generator.util.service";
 import {AaiService} from "../../../../services/aaiService/aai.service";
 import {GenericFormService} from "../../generic-form.service";
-import {FormBuilder} from "@angular/forms";
+import {FormBuilder, FormControl, FormGroup} from "@angular/forms";
 import {LogService} from "../../../../utils/log/log.service";
 import {
   FormControlModel,
@@ -13,6 +13,11 @@ import {
 } from "../../../../models/formControlModels/formControl.model";
 import {FormControlNames, VfModuleControlGenerator} from "./vfModule.control.generator";
 import {FeatureFlagsService} from "../../../../services/featureFlag/feature-flags.service";
+import {VfModuleInstance} from "../../../../models/vfModuleInstance";
+import {VfModule} from "../../../../models/vfModule";
+import {SharedControllersService} from "../sharedControlles/shared.controllers.service";
+import {AppState} from "../../../../store/reducers";
+import {SharedTreeService} from "../../../../../drawingBoard/service-planning/objectsToTree/shared.tree.service";
 
 class MockAppStore<T> {
   getState() {
@@ -25,9 +30,6 @@ class MockAppStore<T> {
           "FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
           "FLAG_SHOW_VERIFY_SERVICE": false,
           "FLAG_SERVICE_MODEL_CACHE": true,
-          "CREATE_INSTANCE_TEST": false,
-          "FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
-          "EMPTY_DRAWING_BOARD_TEST": false,
           "FLAG_ADD_MSO_TESTAPI_FIELD": true
         },
         "type": "[FLAGS] Update"
@@ -918,16 +920,19 @@ describe('VFModule Control Generator', () => {
   let injector;
   let service: VfModuleControlGenerator;
   let httpMock: HttpTestingController;
+  let store : NgRedux<AppState>;
 
   beforeAll(done => (async () => {
     TestBed.configureTestingModule({
       imports: [HttpClientTestingModule],
       providers: [VfModuleControlGenerator,
         GenericFormService,
-        BasicControlGenerator,
+        SharedControllersService,
+        ControlGeneratorUtil,
         AaiService,
         FormBuilder,
         LogService,
+        SharedTreeService,
         {provide:FeatureFlagsService, useClass: MockFeatureFlagsService},
         {provide: NgRedux, useClass: MockAppStore}]
     });
@@ -936,6 +941,7 @@ describe('VFModule Control Generator', () => {
     injector = getTestBed();
     service = injector.get(VfModuleControlGenerator);
     httpMock = injector.get(HttpTestingController);
+    store = injector.get(NgRedux);
     jest.spyOn(console, 'error');
 
   })().then(done).catch(done.fail));
@@ -978,6 +984,46 @@ describe('VFModule Control Generator', () => {
     }
   });
 
+
+  const cases = [
+    [true, true, true, null, true, true],
+    [true, true, false, null, true, false], //Scenario to check that UI field doesn't appear.
+    [false, true, false, "vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0_vol", true, true],
+    [false, true, true, "vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0_vol", true, true],
+    [false, false, true, null, false, false],
+  ];
+
+  test.each(cases)('Given Ecomp Gen Name: %p and VG Name %p , ' +
+    'is A La Carte %p - expect the name value for VG to be %p , ' +
+    'VG Name should be defined: %p , and should the field be visible: %p',
+    (ecomGenName, vGName, isALaCarte, expectedName, shouldWeVerifyDefinitionOfField, isVisible) => {
+    const moduleName = "vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0";
+    service.vfModuleModel = new VfModule();
+    service.vfModuleModel.name = moduleName;
+    service.vfModuleModel.volumeGroupAllowed = vGName;
+    let vnf : Object =  {isEcompGeneratedNaming: ecomGenName};
+    const serviceId: string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+    const vnfStoreKey: string = 'VF_vGeraldine 0';
+    const uuidData: Object = {
+      modelName :  moduleName,
+      vFModuleStoreKey : "vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0vmvzo",
+    };
+    const vfModuleModel :VfModuleInstance = service.getVfModuleInstance(serviceId, vnfStoreKey, uuidData,true);
+    let existingMatchingFieldInForm = buildVfModuleFormControlModel(vfModuleModel ,serviceId, vnf, isALaCarte);
+      if (shouldWeVerifyDefinitionOfField) {
+        expect(existingMatchingFieldInForm).toBeDefined();
+        expect(existingMatchingFieldInForm.value).toEqual(expectedName);
+        expect(existingMatchingFieldInForm.isVisible).toEqual(isVisible);
+      } else {
+        expect(existingMatchingFieldInForm).toBeUndefined();
+      }
+    });
+
+  let buildVfModuleFormControlModel = function(vfModuleModel :any, serviceId: string, vnf, isALaCarte) :FormControlModel {
+    let controls: FormControlModel[] = service.pushInstanceAndVGToForm([], vfModuleModel, serviceId, vnf, isALaCarte);
+    return controls.find(ctrl => ctrl.controlName === FormControlNames.VOLUME_GROUP_NAME);
+  };
+
   test('getMacroFormControls check for mandatory controls', () => {
     const serviceId: string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
     const vnfStoreKey: string = 'VF_vGeraldine 0';
@@ -1022,7 +1068,7 @@ describe('VFModule Control Generator', () => {
       FormControlNames.LEGACY_REGION,
       FormControlNames.TENANT_ID,
       FormControlNames.ROLLBACK_ON_FAILURE,
-      FormControlNames.SDN_C_PRE_LOAD
+      SDN_C_PRE_LOAD,
     ];
 
     expect(controls.length).toEqual(7);
@@ -1057,7 +1103,7 @@ describe('VFModule Control Generator', () => {
       FormControlNames.TENANT_ID, // TENANT_ID must be after LEGACY_REGION
       FormControlNames.LEGACY_REGION,
       FormControlNames.ROLLBACK_ON_FAILURE,
-      FormControlNames.SDN_C_PRE_LOAD
+      SDN_C_PRE_LOAD,
     ];
 
     for(let i = 0 ; i < orderedControls.length ; i++) {
@@ -1114,12 +1160,36 @@ describe('VFModule Control Generator', () => {
       FormControlNames.LEGACY_REGION,
       FormControlNames.TENANT_ID,
       FormControlNames.ROLLBACK_ON_FAILURE,
-      FormControlNames.SDN_C_PRE_LOAD
+      SDN_C_PRE_LOAD,
     ];
 
     for(let i = 0 ; i < orderedControls.length ; i++) {
       expect(controls[i].controlName).toEqual(orderedControls[i]);
     }
   });
+
+
+  test('when flag is active - response should contains upload file', ()=>{
+    spyOn(store, 'getState').and.returnValue( {
+      "global": {
+        "flags": {
+          "FLAG_2006_VFM_SDNC_PRELOAD_FILES" : true
+        }
+      }
+    });
+
+    const extraContent = service.getSdncExtraContents();
+    console.log("extraContent", extraContent);
+    const uploadFileData = <any>extraContent[0];
+
+    expect(uploadFileData.type).toEqual('UPLOAD_FILE');
+    expect(uploadFileData.dataTestId).toEqual('sdnc_pereload_upload_link');
+    expect(uploadFileData.uploadMethod).toBeDefined();
+    expect(uploadFileData.isDisabled).toBeDefined();
+    expect(uploadFileData.onSuccess).toBeDefined();
+    expect(uploadFileData.onFailed).toBeDefined();
+
+  })
+
 });