allow LOB multi-selection for vnf - fix cypress 31/104231/13
authorEinat Vinouze <einat.vinouze@intl.att.com>
Thu, 26 Mar 2020 15:22:01 +0000 (17:22 +0200)
committerEinat Vinouze <einat.vinouze@intl.att.com>
Wed, 1 Apr 2020 08:45:20 +0000 (11:45 +0300)
Issue-ID: VID-785

Change-Id: I3a11bad5b6da532b23049ce09ea439849143e941
Signed-off-by: Einat Vinouze <einat.vinouze@intl.att.com>
16 files changed:
features.properties.md
vid-app-common/src/main/java/org/onap/vid/properties/Features.java
vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVnfALaCarteCypress2.java
vid-automation/src/main/java/vid/automation/test/infra/Features.java
vid-automation/src/test/resources/a-la-carte/redux-a-la-carte-no-testapi.json
vid-automation/src/test/resources/a-la-carte/redux-a-la-carte.json
vid-webpack-master/cypress/integration/iFrames/ala-carte.e2e.ts
vid-webpack-master/cypress/integration/iFrames/drawingBoard.e2e.ts
vid-webpack-master/cypress/integration/iFrames/instantiation-templates.e2e.ts
vid-webpack-master/cypress/integration/iFrames/vnf.popup.e2e.ts
vid-webpack-master/cypress/support/steps/fill.vnf.popup.step.ts
vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/networkGenerator/network.control.generator.ts
vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/sharedControlles/shared.controllers.service.spec.ts
vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/sharedControlles/shared.controllers.service.ts
vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGenerator/vnf.control.generator.ts
vid-webpack-master/src/app/shared/services/featureFlag/feature-flags.service.ts

index dedb0e3..3e7c6cd 100644 (file)
   When off, user is requested to specify LCP-Region and Tenant for each VF Module.
   
 * FLAG_2006_NETWORK_PLATFORM_MULTI_SELECT
-  When flag is true the platform will appear as a multi select field, if false the platform will be dropdown list.
+  When flag is true the platform will appear as a multi select field, if false the platform will be limited to a single value.
   
 * FLAG_2006_NETWORK_LOB_MULTI_SELECT
-  When flag is true the LOB will appear as a multi select field, if false the platform will be dropdown list.
-  
+  When flag is true the LOB will appear as a multi select field, if false the Line Of Business will be limited to a single value.
  
+ * FLAG_2006_VNF_LOB_MULTI_SELECT
+   When flag is true the LOB will appear as a multi select field, if false the Line Of Business  will be limited to a single value.
   
 * FLAG_EXP_USE_FORMAT_PARAMETER_FOR_CM_DASHBOARD
   When flag is true VID will use the format=simpleNoTaskInfo parameter in addition to the filter parameter when fetching orchestration requests for the change-management dashboard.
index 35f18aa..5c3f783 100644 (file)
@@ -92,6 +92,7 @@ public enum Features implements Feature {
     FLAG_2006_NETWORK_PLATFORM_MULTI_SELECT,
     FLAG_EXP_USE_FORMAT_PARAMETER_FOR_CM_DASHBOARD,
     FLAG_2006_NETWORK_LOB_MULTI_SELECT,
+    FLAG_2006_VNF_LOB_MULTI_SELECT,
 
     ;
 
index 98883ab..e052117 100644 (file)
@@ -32,7 +32,7 @@ public class PresetMSOCreateVnfALaCarteCypress2 extends PresetMSOCreateVnfBase {
                     "\"source\":\"VID\"," +
                     "\"suppressRollback\":false," +
                     "\"requestorId\":\"us16807000\"}," +
-                "\"lineOfBusiness\":{\"lineOfBusinessName\":\"zzz1\"}," +
+                "\"lineOfBusiness\":{\"lineOfBusinessName\":\"zzz1,ONAP\"}," +
                 "\"cloudConfiguration\":" +
             "{\"lcpCloudRegionId\":\"" + getLcpCloudRegionId() + "\"," +
                     addCloudOwnerIfNeeded() +
index 8d9765c..5e83062 100644 (file)
@@ -64,7 +64,7 @@ public enum Features implements Feature {
     FLAG_2006_NETWORK_PLATFORM_MULTI_SELECT,
     FLAG_EXP_USE_FORMAT_PARAMETER_FOR_CM_DASHBOARD,
     FLAG_2006_NETWORK_LOB_MULTI_SELECT,
-
+    FLAG_2006_VNF_LOB_MULTI_SELECT,
     ;
 
     public boolean isActive() {
index 1c22fb8..9d4e7ba 100644 (file)
       "legacyRegion": "just another region",
       "tenantId": "092eb9e8e4b7412e8787dd091bc58e86",
       "platformName": "xxx1,platform",
-      "lineOfBusiness": "zzz1",
+      "lineOfBusiness": "zzz1,ONAP",
       "instanceParams": [
         {}
       ],
index 7924340..a820459 100644 (file)
@@ -99,7 +99,7 @@
       "legacyRegion": "just another region",
       "tenantId": "092eb9e8e4b7412e8787dd091bc58e86",
       "platformName": "xxx1,platform",
-      "lineOfBusiness": "zzz1",
+      "lineOfBusiness": "zzz1,ONAP",
       "instanceParams": [
         {}
       ],
index 8f5341c..4ececb0 100644 (file)
@@ -92,6 +92,7 @@ describe('A la carte', function () {
     it(`VNF a-la-carte`, () => {
       cy.readFile('cypress/support/jsonBuilders/mocks/jsons/flags.cypress.json').then((res) => {
         res['FLAG_2002_VNF_PLATFORM_MULTI_SELECT'] = true;
+        res['FLAG_2006_VNF_LOB_MULTI_SELECT'] = true;
         cy.server()
           .route({
             method: 'GET',
@@ -134,7 +135,7 @@ describe('A la carte', function () {
             cy.selectDropdownOptionByText('lcpRegion', 'AAIAIC25');
             cy.typeToInput("lcpRegionText", "just another region");
             cy.selectDropdownOptionByText('tenant', 'USP-SIP-IC-24335-T-01');
-            cy.selectDropdownOptionByText('lineOfBusiness', 'zzz1');
+            cy.selectLobValue('zzz1');
 
             cy.selectPlatformValue(`xxx1`);
 
@@ -145,6 +146,7 @@ describe('A la carte', function () {
               cy.getElementByDataTestsId(vnfMenuBtnDataTestId).click({force: true}).then(() => {
                 cy.getElementByDataTestsId('context-menu-edit').click({force: true});
                 cy.selectPlatformValue(`platform`);
+                cy.selectLobValue('ONAP');
                 cy.getElementByDataTestsId('form-set').click({force: true}).then(() => {
                   cy.getReduxState().then((state) => {
 
@@ -236,7 +238,7 @@ describe('A la carte', function () {
           cy.selectDropdownOptionByText('productFamily', 'Emanuel');
           cy.selectDropdownOptionByText('lcpRegion', 'hvf6');
           cy.selectDropdownOptionByText('tenant', 'AIN Web Tool-15-D-STTest2');
-          cy.selectDropdownOptionByText('lineOfBusiness', 'zzz1');
+          cy.selectLobValue('zzz1');
           cy.selectPlatformValue(`xxx1`);
           cy.getElementByDataTestsId('form-set').click({force: true}).then(() => {
             const vnfName = '2017-488_PASQUALE-vPE 0';
index ab1e164..63df833 100644 (file)
@@ -376,7 +376,7 @@ describe('Drawing board', function () {
         cy.selectDropdownOptionByText('productFamily', 'ERICA');
         cy.selectDropdownOptionByText('lcpRegion', 'hvf6');
         cy.selectDropdownOptionByText('tenant', 'AIN Web Tool-15-D-testalexandria');
-        cy.selectDropdownOptionByText('lineOfBusiness', 'ONAP');
+        cy.selectLobValue('ONAP');
         cy.selectPlatformValue(`platform`);
         cy.genericFormSubmitForm();
 
@@ -397,7 +397,7 @@ describe('Drawing board', function () {
         cy.selectDropdownOptionByText('productFamily', 'ERICA');
         cy.selectDropdownOptionByText('lcpRegion', 'hvf6');
         cy.selectDropdownOptionByText('tenant', 'AIN Web Tool-15-D-testalexandria');
-        cy.selectDropdownOptionByText('lineOfBusiness', 'ONAP')
+        cy.selectLobValue('ONAP')
         cy.selectPlatformValue(`platform`);
 
         cy.genericFormSubmitForm();
@@ -636,7 +636,9 @@ describe('Drawing board', function () {
           "FLAG_SERVICE_MODEL_CACHE": true,
           "FLAG_1906_COMPONENT_INFO" : false,
           "FLAG_2002_VNF_PLATFORM_MULTI_SELECT" : false,
-          "FLAG_2002_UNLIMITED_MAX" : true
+          "FLAG_2002_UNLIMITED_MAX" : true,
+          "FLAG_2006_VNF_LOB_MULTI_SELECT" : false,
+
         },
         "type": "[FLAGS] Update"
       },
@@ -7368,7 +7370,10 @@ describe('Drawing board', function () {
   function editSecondVnf(vnfNode: string) {
     cy.drawingBoardTreeOpenContextMenuByElementDataTestId(vnfNode, 1)
       .drawingBoardTreeClickOnContextMenuOptionByName('Edit');
-    cy.selectDropdownOptionByText('lineOfBusiness', 'ONAP');
+    //uncheck lob value
+    cy.selectLobValue('zzz1');
+    // select a new lob value
+    cy.selectLobValue('ONAP');
     cy.genericFormSubmitForm();
   }
 
index 8a68a13..ef907f2 100644 (file)
@@ -97,8 +97,8 @@ describe('Drawing Board: Instantiation Templates', function () {
           .getElementByDataTestsId("productFamily").should('contain', 'Emanuel')
           .getElementByDataTestsId("tenant").should('contain', 'DN5242-Nov21-T1')
           .getElementByDataTestsId("lcpRegion").should('contain', 'hvf6')
-          .getElementByDataTestsId("lineOfBusiness").should('contain', 'zzz1')
           .getElementByDataTestsId("rollback").should('contain', 'Rollback')
+          cy.checkLobValue('zzz1')
           cy.checkPlatformValue(`xxx1`)
           .getElementByDataTestsId("cancelButton").click();
 
index 3b56ac0..b05bbe5 100644 (file)
@@ -80,7 +80,7 @@ describe('Vnf popup', function () {
         cy.selectDropdownOptionByText('productFamily', 'Emanuel');
         cy.selectDropdownOptionByText('lcpRegion', 'hvf6');
         cy.selectDropdownOptionByText('tenant', 'AIN Web Tool-15-D-STTest2');
-        cy.selectDropdownOptionByText('lineOfBusiness', 'zzz1');
+        cy.selectLobValue('zzz1');
         cy.selectPlatformValue(`xxx1`);
 
       })
index 7c82cf8..60453f0 100644 (file)
@@ -11,7 +11,7 @@ function FillVnfPopup(): Chainable<any> {
   cy.selectDropdownOptionByText('productFamily', 'Emanuel');
   cy.selectDropdownOptionByText('lcpRegion', 'hvf6');
   cy.selectDropdownOptionByText('tenant', 'AIN Web Tool-15-D-STTest2');
-  cy.selectDropdownOptionByText('lineOfBusiness', 'zzz1');
+  cy.selectLobValue('zzz1');
   cy.selectPlatformValue(`xxx1`);
   return cy.getElementByDataTestsId('form-set').click({force : true}).then((done)=>{
     return done;
index fe6a258..08d689d 100644 (file)
@@ -64,7 +64,7 @@ export class NetworkControlGenerator {
       result.push(this._sharedControllersService.getLegacyRegion(networkInstance));
       result.push(this._sharedControllersService.getTenantControl(serviceId, networkInstance));
       result.push(this._sharedControllersService.getPlatformMultiselectControl(networkInstance, result, flags['FLAG_2006_NETWORK_PLATFORM_MULTI_SELECT']));
-      result.push(this._sharedControllersService.getMultiSelectLineOfBusinessControl(networkInstance, flags['FLAG_2006_NETWORK_LOB_MULTI_SELECT']));
+      result.push(this._sharedControllersService.getLobMultiselectControl(networkInstance, flags['FLAG_2006_NETWORK_LOB_MULTI_SELECT']));
     }
     return result;
 
@@ -89,7 +89,7 @@ export class NetworkControlGenerator {
       result.push(this._sharedControllersService.getLegacyRegion(networkInstance));
       result.push(this._sharedControllersService.getTenantControl(serviceId, networkInstance));
       result.push(this._sharedControllersService.getPlatformMultiselectControl(networkInstance, result, flags['FLAG_2006_NETWORK_PLATFORM_MULTI_SELECT']));
-      result.push(this._sharedControllersService.getMultiSelectLineOfBusinessControl(networkInstance, flags['FLAG_2006_NETWORK_LOB_MULTI_SELECT']));
+      result.push(this._sharedControllersService.getLobMultiselectControl(networkInstance, flags['FLAG_2006_NETWORK_LOB_MULTI_SELECT']));
       result.push(this._sharedControllersService.getRollbackOnFailureControl(networkInstance));
     }
     return result;
index b141a1e..6ee3186 100644 (file)
@@ -9,6 +9,7 @@ import {FeatureFlagsService} from "../../../../services/featureFlag/feature-flag
 import {DropdownFormControl} from "../../../../models/formControlModels/dropdownFormControl.model";
 import {FormControlModel, ValidatorOptions} from "../../../../models/formControlModels/formControl.model";
 import {ControlGeneratorUtil} from "../control.generator.util.service";
+import {MultiselectFormControl} from "../../../../models/formControlModels/multiselectFormControl.model";
 import each from "jest-each";
 
 
@@ -38,20 +39,15 @@ describe('Shared Controllers Service', () => {
 
   })().then(done).catch(done.fail));
 
-
-
-
-
   test('getLineOfBusinessControl', ()=> {
-    const lineOfBusinessControl :DropdownFormControl  = service.getLineOfBusinessControl();
-    expect(lineOfBusinessControl.name).toEqual('lineOfBusiness');
+    const lineOfBusinessControl :MultiselectFormControl  = service.getLobMultiselectControl(undefined, true);
     expect(lineOfBusinessControl.controlName).toEqual('lineOfBusiness');
     expect(lineOfBusinessControl.displayName).toEqual('Line of business');
-    expect(lineOfBusinessControl.dataTestId).toEqual('lineOfBusiness');
+    expect(lineOfBusinessControl.dataTestId).toEqual('multi-lineOfBusiness');
     expect(lineOfBusinessControl.placeHolder).toEqual('Select Line Of Business');
     expect(lineOfBusinessControl.onInitSelectedField).toEqual(['lineOfBusinessList']);
     expect(lineOfBusinessControl.onInit).toBeDefined();
-    expect(lineOfBusinessControl.value).toBeNull();
+    expect(lineOfBusinessControl.value).toBe("");
     expect(lineOfBusinessControl.validations.find((validation)=> validation.validatorName === ValidatorOptions.required)).toBeDefined();
     expect(lineOfBusinessControl.isDisabled).toBeFalsy();
   });
index d589efa..b10ed9a 100644 (file)
@@ -25,27 +25,6 @@ export class SharedControllersService {
               private _aaiService : AaiService,
               private _basicControlGenerator : ControlGeneratorUtil){}
 
-
-  getLineOfBusinessControl = (instance?: any): DropdownFormControl => {
-    return new DropdownFormControl({
-      type: FormControlType.DROPDOWN,
-      controlName: 'lineOfBusiness',
-      displayName: 'Line of business',
-      dataTestId: 'lineOfBusiness',
-      placeHolder: 'Select Line Of Business',
-      isDisabled: false,
-      name: "lineOfBusiness",
-      value: instance ? instance.lineOfBusiness : null,
-      validations: [new ValidatorModel(ValidatorOptions.required, 'is required')],
-      onInitSelectedField: ['lineOfBusinessList'],
-      onInit: this._basicControlGenerator.getSubscribeInitResult.bind(null, this._aaiService.getCategoryParameters)
-    })
-  };
-
-  getMultiSelectLineOfBusinessControl = (instance: any, isMultiSelected: boolean): MultiselectFormControl => {
-    return this.getLobMultiselectControl(instance, isMultiSelected);
-  };
-
   getTenantControl = (serviceId: string, instance?: any): DropdownFormControl => {
     const service = this._store.getState().service.serviceInstance[serviceId];
     const globalCustomerId: string = service.globalSubscriberId;
index 488df9a..b1f72a5 100644 (file)
@@ -45,13 +45,16 @@ export class VnfControlGenerator {
     const flags = this.store.getState().global.flags;
 
     if (!_.isNil(vnfModel)) {
+      const isPlatformMultiSelected = flags['FLAG_2002_VNF_PLATFORM_MULTI_SELECT'];
+      const isLobMultiSelected = flags['FLAG_2006_VNF_LOB_MULTI_SELECT'];
+
       result.push(this.getInstanceName(vnfInstance, serviceId, vnfName, vnfModel.isEcompGeneratedNaming));
       result.push(this._sharedControllersService.getProductFamilyControl(vnfInstance, result, true));
       result.push(this._sharedControllersService.getLcpRegionControl(serviceId, vnfInstance, result));
       result.push(this._sharedControllersService.getLegacyRegion(vnfInstance));
       result.push(this._sharedControllersService.getTenantControl(serviceId, vnfInstance));
-      result.push(this._sharedControllersService.getPlatformMultiselectControl(vnfInstance, result, flags['FLAG_2002_VNF_PLATFORM_MULTI_SELECT']));
-      result.push(this._sharedControllersService.getLineOfBusinessControl(vnfInstance));
+      result.push(this._sharedControllersService.getPlatformMultiselectControl(vnfInstance, result, isPlatformMultiSelected));
+      result.push(this._sharedControllersService.getLobMultiselectControl(vnfInstance, isLobMultiSelected));
     }
     return result;
   }
@@ -66,16 +69,18 @@ export class VnfControlGenerator {
     let result: FormControlModel[] = [];
     const vnfInstance = this._basicControlGenerator.retrieveInstanceIfUpdateMode(this.store,this.getVnfInstance(serviceId, vnfStoreKey));
     const vnfModel = new VNFModel(this.store.getState().service.serviceHierarchy[serviceId].vnfs[vnfName]);
+    const flags = this.store.getState().global.flags;
 
     if (!_.isNil(vnfModel)) {
-      const flags = this.store.getState().global.flags;
+      const isPlatformMultiSelected = flags['FLAG_2002_VNF_PLATFORM_MULTI_SELECT'];
+      const isLobMultiSelected = flags['FLAG_2006_VNF_LOB_MULTI_SELECT'];
       result.push(this.getInstanceName(vnfInstance, serviceId, vnfName, vnfModel.isEcompGeneratedNaming));
       result.push(this._sharedControllersService.getProductFamilyControl(vnfInstance, result, true));
       result.push(this._sharedControllersService.getLcpRegionControl(serviceId, vnfInstance, result));
       result.push(this._sharedControllersService.getLegacyRegion(vnfInstance));
       result.push(this._sharedControllersService.getTenantControl(serviceId, vnfInstance));
-      result.push(this._sharedControllersService.getPlatformMultiselectControl(vnfInstance, result, flags['FLAG_2002_VNF_PLATFORM_MULTI_SELECT']));
-      result.push(this._sharedControllersService.getLineOfBusinessControl(vnfInstance));
+      result.push(this._sharedControllersService.getPlatformMultiselectControl(vnfInstance, result, isPlatformMultiSelected));
+      result.push(this._sharedControllersService.getLobMultiselectControl(vnfInstance,isLobMultiSelected));
       result.push(this._sharedControllersService.getRollbackOnFailureControl(vnfInstance));
     }
     return result;
index 5842662..78a2b1e 100644 (file)
@@ -20,6 +20,8 @@ export enum Features {
   FLAG_2004_INSTANTIATION_TEMPLATES_POPUP = 'FLAG_2004_INSTANTIATION_TEMPLATES_POPUP',
   FLAG_2006_USER_PERMISSIONS_BY_OWNING_ENTITY= 'FLAG_2006_USER_PERMISSIONS_BY_OWNING_ENTITY',
   FLAG_2006_VFMODULE_TAKES_TENANT_AND_REGION_FROM_VNF = 'FLAG_2006_VFMODULE_TAKES_TENANT_AND_REGION_FROM_VNF',
+  FLAG_2006_VNF_LOB_MULTI_SELECT= 'FLAG_2006_VNF_LOB_MULTI_SELECT',
+
 }
 
 @Injectable()