merge from ecomp a88f0072 - Modern UI
[vid.git] / vid-webpack-master / src / app / drawingBoard / service-planning / available-models-tree / available-models-tree.service.spec.ts
@@ -3,85 +3,62 @@ import {
   HttpClientTestingModule,
   HttpTestingController
 } from '@angular/common/http/testing';
-import {AvailableModelsTreeService} from './available-models-tree.service';
-import {ServicePlanningService} from "../../services/service-planning.service";
-import {ServiceNodeTypes} from "../../shared/models/ServiceNodeTypes";
-import {NgRedux} from "@angular-redux/store";
-import {MockAppStore} from "../../services/service-planning.service.spec";
+import {AvailableModelsTreeService, AvailableNodeIcons} from './available-models-tree.service';
+import {ServiceNodeTypes} from "../../../shared/models/ServiceNodeTypes";
+import {DefaultDataGeneratorService} from "../../../shared/services/defaultDataServiceGenerator/default.data.generator.service";
+import {MessageBoxService} from "../../../shared/components/messageBox/messageBox.service";
+import {MessageBoxData} from "../../../shared/components/messageBox/messageBox.data";
+import {SdcUiCommon} from "onap-ui-angular";
+import {MockNgRedux, NgReduxTestingModule} from "@angular-redux/store/testing";
+import {SharedTreeService} from "../objectsToTree/shared.tree.service";
 
 describe('Available Models Tree Service', () => {
+
   let injector;
   let service: AvailableModelsTreeService;
   let httpMock: HttpTestingController;
 
-  beforeEach(() => {
-
+  beforeAll(done => (async () => {
     TestBed.configureTestingModule({
-      imports: [HttpClientTestingModule],
+      imports: [HttpClientTestingModule, NgReduxTestingModule],
       providers: [AvailableModelsTreeService,
-        ServicePlanningService,
-        {provide: NgRedux, useClass: MockAppStore}]
+        DefaultDataGeneratorService,
+        SharedTreeService,
+        MockNgRedux]
     });
+    await TestBed.compileComponents();
+      injector = getTestBed();
+      service = injector.get(AvailableModelsTreeService);
+      httpMock = injector.get(HttpTestingController);
+  })().then(done).catch(done.fail));
 
-    injector = getTestBed();
-    service = injector.get(AvailableModelsTreeService);
-    httpMock = injector.get(HttpTestingController);
-  });
-
-  describe('#shouldShowAddIcon', () => {
-    it('should return true if number of current vnf modules is under the max', (done: DoneFn) => {
-      let treeNode = {
-        data: {
-          children: [],
-          name: 'vf_vmee0..VfVmee..base_vmme..module-0'
-        }
-      };
 
-      let serviceHierarchy = getSericeServiceHierarchy();
-      let result = service.shouldShowAddIcon(treeNode, serviceHierarchy, '6e59c5de-f052-46fa-aa7e-2fca9d674c44', 0);
-      expect(result).toBeTruthy();
-      done();
-    });
-
-    it('should return false if number of current vnf modules are more than max', (done: DoneFn) => {
-      let treeNode = {
-        data: {
-          children: [],
-          name: 'vf_vmee0..VfVmee..base_vmme..module-0'
-        }
-      };
+  test('addingAlertAddingNewVfModuleModal should open message modal', () => {
+    jest.spyOn(MessageBoxService.openModal, 'next');
+    service.addingAlertAddingNewVfModuleModal();
 
-      let serviceHierarchy = getSericeServiceHierarchy();
-      let result = service.shouldShowAddIcon(treeNode, serviceHierarchy, '6e59c5de-f052-46fa-aa7e-2fca9d674c44', 2);
-      expect(result).toBeFalsy();
-      done();
-    });
+    expect(MessageBoxService.openModal.next).toHaveBeenCalledWith(new MessageBoxData(
+      "Select a parent",  // modal title
+      "There are multiple instances on the right side that can contain this vf-module Please select the VNF instance, to add this vf-module to, on the right side and then click the + sign",
+      SdcUiCommon.ModalType.warning,
+      SdcUiCommon.ModalSize.medium,
+      [
+        {text: "Close", size: "medium", closeModal: true}
+      ]));
+  });
 
-    it('should return true if number of current vnf modules are more than max and max is null', (done: DoneFn) => {
-      let treeNode = {
-        data: {
-          children: [],
-          name: 'vf_vmee0..VfVmee..base_vmme..module-0'
-        }
-      };
 
-      let serviceHierarchy = getSericeServiceHierarchy();
-      let result = service.shouldShowAddIcon(treeNode, serviceHierarchy, '6e59c5de-f052-46fa-aa7e-2fca9d674c44', 0);
-      expect(result).toBeTruthy();
-      done();
-    });
-  });
 
   describe('#shouldOpenModalDialogOnAddInstance', () => {
-    let serviceHierarchy = getSericeServiceHierarchy();
+    let serviceHierarchy = getServiceServiceHierarchy();
 
-    it('should open popup on add instance', (done: DoneFn) => {
+    test('should open popup on add instance', () => {
       // add vnf should return true
-      let result = service.shouldOpenDialog(ServiceNodeTypes.VF, [], false);
+      let result = service.shouldOpenDialog(ServiceNodeTypes.VF, [], true);
       expect(result).toBeTruthy();
 
       //  add vfModule with user provided naming should return true
-      result = service.shouldOpenDialog(ServiceNodeTypes.VFmodule, [], true);
+      result = service.shouldOpenDialog(ServiceNodeTypes.VFmodule, [], false);
       expect(result).toBeTruthy();
 
       //  add vfModule with dynamicInputs without defaultValues should return true
@@ -91,7 +68,7 @@ describe('Available Models Tree Service', () => {
         name: '2017488_adiodvpe0_vnf_config_template_version',
         isRequired: true,
         description: 'VPE Software Version'
-      }], false);
+      }], true);
       expect(result).toBeTruthy();
 
       // add vfModule with dynamicInputs with defaultValues should return false
@@ -102,13 +79,12 @@ describe('Available Models Tree Service', () => {
         value: '17.2',
         isRequired: true,
         description: 'VPE Software Version'
-      }], false);
+      }], true);
       expect(result).toBeFalsy();
-      done();
     });
   });
 
-  function getSericeServiceHierarchy() {
+  function getServiceServiceHierarchy() {
     return JSON.parse(JSON.stringify(
       {
         '6e59c5de-f052-46fa-aa7e-2fca9d674c44': {
@@ -118,7 +94,7 @@ describe('Available Models Tree Service', () => {
             'name': 'ComplexService',
             'version': '1.0',
             'toscaModelURL': null,
-            'category': 'Mobility',
+            'category': 'Emanuel',
             'serviceType': '',
             'serviceRole': '',
             'description': 'ComplexService',
@@ -137,7 +113,9 @@ describe('Available Models Tree Service', () => {
               'inputs': {},
               'commands': {},
               'properties': {
-                'gpb2_Internal2_mac': '00:80:37:0E:02:22',
+                'max_instances': '3',
+                'min_instances': '1',
+                'gpb2_Internal2_mac': '00:11:22:EF:AC:DF',
                 'sctp-b-ipv6-egress_src_start_port': '0',
                 'sctp-a-ipv6-egress_rule_application': 'any',
                 'Internal2_allow_transit': 'true',
@@ -145,9 +123,9 @@ describe('Available Models Tree Service', () => {
                 'sctp-a-egress_rule_application': 'any',
                 'sctp-b-ingress_action': 'pass',
                 'sctp-b-ingress_rule_protocol': 'icmp',
-                'ncb2_Internal1_mac': '00:80:37:0E:0F:12',
+                'ncb2_Internal1_mac': '00:11:22:EF:AC:DF',
                 'sctp-b-ipv6-ingress-src_start_port': '0.0',
-                'ncb1_Internal2_mac': '00:80:37:0E:09:12',
+                'ncb1_Internal2_mac': '00:11:22:EF:AC:DF',
                 'fsb_volume_size_0': '320.0',
                 'sctp-b-egress_src_addresses': 'local',
                 'sctp-a-ipv6-ingress_ethertype': 'IPv4',
@@ -166,12 +144,12 @@ describe('Available Models Tree Service', () => {
                 'sctp-a-ipv6-ingress_src_subnet_prefix': '0.0.0.0',
                 'sctp-b-egress-dst_start_port': '0.0',
                 'ncb_flavor_name': 'nv.c20r64d1',
-                'gpb1_Internal1_mac': '00:80:37:0E:01:22',
+                'gpb1_Internal1_mac': '00:11:22:EF:AC:DF',
                 'sctp-b-egress_dst_subnet_prefix_len': '0.0',
-                'Internal2_net_cidr': '169.255.0.0',
+                'Internal2_net_cidr': '10.0.0.10',
                 'sctp-a-ingress-dst_start_port': '0.0',
                 'sctp-a-egress-dst_start_port': '0.0',
-                'fsb1_Internal2_mac': '00:80:37:0E:0B:12',
+                'fsb1_Internal2_mac': '00:11:22:EF:AC:DF',
                 'sctp-a-egress_ethertype': 'IPv4',
                 'vlc_st_service_mode': 'in-network-nat',
                 'sctp-a-ipv6-egress_ethertype': 'IPv4',
@@ -181,17 +159,17 @@ describe('Available Models Tree Service', () => {
                 'sctp-a-ingress-src_subnet_prefix_len': '0.0',
                 'sctp-b-ipv6-ingress-src_end_port': '65535.0',
                 'sctp-b-name': 'epc-sctp-b-ipv4v6-sec-group',
-                'fsb2_Internal1_mac': '00:80:37:0E:0D:12',
+                'fsb2_Internal1_mac': '00:11:22:EF:AC:DF',
                 'sctp-a-ipv6-ingress-src_start_port': '0.0',
                 'sctp-b-ipv6-egress_ethertype': 'IPv4',
-                'Internal1_net_cidr': '169.253.0.0',
+                'Internal1_net_cidr': '10.0.0.10',
                 'sctp-a-egress_dst_subnet_prefix': '0.0.0.0',
                 'fsb_flavor_name': 'nv.c20r64d1',
                 'sctp_rule_protocol': '132',
                 'sctp-b-ipv6-ingress_src_subnet_prefix_len': '0',
                 'sctp-a-ipv6-ingress_rule_application': 'any',
                 'sctp-a-IPv6_ethertype': 'IPv6',
-                'vlc2_Internal1_mac': '00:80:37:0E:02:12',
+                'vlc2_Internal1_mac': '00:11:22:EF:AC:DF',
                 'vlc_st_virtualization_type': 'virtual-machine',
                 'sctp-b-ingress-dst_start_port': '0.0',
                 'sctp-b-ingress-dst_end_port': '65535.0',
@@ -209,7 +187,7 @@ describe('Available Models Tree Service', () => {
                 'Internal2_shared': 'false',
                 'sctp-a-ipv6-egress_dst_subnet_prefix_len': '0',
                 'Internal2_rpf': 'disable',
-                'vlc1_Internal1_mac': '00:80:37:0E:01:12',
+                'vlc1_Internal1_mac': '00:11:22:EF:AC:DF',
                 'sctp-b-ipv6-egress_src_end_port': '65535',
                 'sctp-a-ipv6-egress_src_addresses': 'local',
                 'sctp-a-ingress-dst_end_port': '65535.0',
@@ -219,41 +197,41 @@ describe('Available Models Tree Service', () => {
                 'sctp-a-dst_subnet_prefix_v6': '::',
                 'pxe_image_name': 'MME_PXE-Boot_16ACP04_GA.qcow2',
                 'vlc_st_interface_type_gtp': 'other0',
-                'ncb1_Internal1_mac': '00:80:37:0E:09:12',
+                'ncb1_Internal1_mac': '00:11:22:EF:AC:DF',
                 'sctp-b-src_subnet_prefix_v6': '::',
                 'sctp-a-egress_dst_subnet_prefix_len': '0.0',
                 'int1_sec_group_name': 'int1-sec-group',
                 'Internal1_dhcp': 'false',
                 'sctp-a-ipv6-egress_dst_end_port': '65535',
                 'Internal2_forwarding_mode': 'l2',
-                'fsb2_Internal2_mac': '00:80:37:0E:0D:12',
+                'fsb2_Internal2_mac': '00:11:22:EF:AC:DF',
                 'sctp-b-egress_dst_subnet_prefix': '0.0.0.0',
                 'Internal1_net_cidr_len': '17',
-                'gpb2_Internal1_mac': '00:80:37:0E:02:22',
+                'gpb2_Internal1_mac': '00:11:22:EF:AC:DF',
                 'sctp-b-ingress-src_subnet_prefix_len': '0.0',
                 'sctp-a-ingress_dst_addresses': 'local',
                 'sctp-a-egress_action': 'pass',
                 'fsb_volume_type_0': 'SF-Default-SSD',
-                'ncb2_Internal2_mac': '00:80:37:0E:0F:12',
+                'ncb2_Internal2_mac': '00:11:22:EF:AC:DF',
                 'vlc_st_interface_type_sctp_a': 'left',
                 'vlc_st_interface_type_sctp_b': 'right',
                 'sctp-a-src_subnet_prefix_v6': '::',
                 'vlc_st_version': '2',
                 'sctp-b-egress_ethertype': 'IPv4',
                 'sctp-a-ingress_rule_application': 'any',
-                'gpb1_Internal2_mac': '00:80:37:0E:01:22',
+                'gpb1_Internal2_mac': '00:11:22:EF:AC:DF',
                 'instance_ip_family_v6': 'v6',
                 'sctp-a-ipv6-egress_src_start_port': '0',
                 'sctp-b-ingress-src_start_port': '0.0',
                 'sctp-b-ingress_dst_addresses': 'local',
-                'fsb1_Internal1_mac': '00:80:37:0E:0B:12',
+                'fsb1_Internal1_mac': '00:11:22:EF:AC:DF',
                 'vlc_st_interface_type_oam': 'management',
                 'multi_stage_design': 'false',
                 'oam_sec_group_name': 'oam-sec-group',
-                'Internal2_net_gateway': '169.255.0.3',
+                'Internal2_net_gateway': '10.0.0.10',
                 'sctp-a-ipv6-ingress-dst_end_port': '65535',
                 'sctp-b-ipv6-egress-dst_start_port': '0',
-                'Internal1_net_gateway': '169.253.0.3',
+                'Internal1_net_gateway': '10.0.0.10',
                 'sctp-b-ipv6-egress_rule_protocol': 'any',
                 'gtp_sec_group_name': 'gtp-sec-group',
                 'sctp-a-ipv6-egress_dst_subnet_prefix': '0.0.0.0',
@@ -275,7 +253,7 @@ describe('Available Models Tree Service', () => {
                 'vlc_st_service_type': 'firewall',
                 'sctp-b-ipv6-egress_dst_end_port': '65535',
                 'sctp-b-ipv6-ingress-dst_start_port': '0',
-                'vlc2_Internal2_mac': '00:80:37:0E:02:12',
+                'vlc2_Internal2_mac': '00:11:22:EF:AC:DF',
                 'vlc_st_availability_zone': 'true',
                 'fsb_volume_image_name_1': 'MME_FSB2_16ACP04_GA.qcow2',
                 'sctp-b-ingress-src_subnet_prefix': '0.0.0.0',
@@ -287,7 +265,7 @@ describe('Available Models Tree Service', () => {
                 'sctp-b-ipv6-ingress_dst_addresses': 'local',
                 'sctp-b-ipv6-egress_dst_subnet_prefix': '0.0.0.0',
                 'sctp-b-ipv6-ingress_ethertype': 'IPv4',
-                'vlc1_Internal2_mac': '00:80:37:0E:01:12',
+                'vlc1_Internal2_mac': '00:11:22:EF:AC:DF',
                 'sctp-a-ingress-src_subnet_prefix': '0.0.0.0',
                 'sctp-a-ipv6-ingress_action': 'pass',
                 'Internal1_rpf': 'disable',
@@ -446,5 +424,4 @@ describe('Available Models Tree Service', () => {
       }
     ));
   }
-
 });