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
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
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': {
'name': 'ComplexService',
'version': '1.0',
'toscaModelURL': null,
- 'category': 'Mobility',
+ 'category': 'Emanuel',
'serviceType': '',
'serviceRole': '',
'description': 'ComplexService',
'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',
'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',
'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',
'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',
'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',
'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',
'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',
'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',
}
));
}
-
});