532a8fe171423ac5dc7be4b2138b7c3fa2d37f16
[vid.git] / vid-webpack-master / src / app / drawingBoard / service-planning / objectsToTree / models / vnfGrouping / vnfGrouping.model.info.spec.ts
1
2 import {HttpClientTestingModule, HttpTestingController} from "@angular/common/http/testing";
3 import {getTestBed, TestBed} from "@angular/core/testing";
4 import {MockNgRedux, NgReduxTestingModule} from "@angular-redux/store/testing";
5 import {VnfGroupingModelInfo} from "./vnfGrouping.model.info";
6 import {DynamicInputsService} from "../../dynamicInputs.service";
7 import {SharedTreeService} from "../../shared.tree.service";
8 import {VnfGroupPopupService} from "../../../../../shared/components/genericFormPopup/genericFormServices/vnfGroup/vnfGroup.popup.service";
9 import {DialogService} from "ng2-bootstrap-modal";
10 import {AvailableNodeIcons} from "../../../available-models-tree/available-models-tree.service";
11 import {VnfGroupModel} from "../../../../../shared/models/vnfGroupModel";
12 import {IframeService} from "../../../../../shared/utils/iframe.service";
13 import {ActivatedRoute} from "@angular/router";
14 import {RouterTestingModule} from "@angular/router/testing";
15 import {DrawingBoardModes} from "../../../drawing-board.modes";
16
17 describe('VnfGroupingModelInfo Model Info', () => {
18   let injector;
19   let _dialogService : DialogService;
20   let _vnfGroupPopupService : VnfGroupPopupService;
21   let  _dynamicInputsService : DynamicInputsService;
22   let _sharedTreeService : SharedTreeService;
23   let _iframeService : IframeService;
24   let vnfGroupModel: VnfGroupingModelInfo;
25   beforeAll(done => (async () => {
26     TestBed.configureTestingModule({
27       imports: [HttpClientTestingModule, NgReduxTestingModule, RouterTestingModule],
28       providers: [
29         DialogService,
30         VnfGroupPopupService,
31         DynamicInputsService,
32         SharedTreeService,
33         IframeService,
34         MockNgRedux]
35     });
36     await TestBed.compileComponents();
37     injector = getTestBed();
38     _sharedTreeService = injector.get(SharedTreeService);
39
40     vnfGroupModel =  new VnfGroupingModelInfo(_dynamicInputsService, _sharedTreeService, _dialogService, _vnfGroupPopupService, _iframeService,  MockNgRedux.getInstance());
41   })().then(done).catch(done.fail));
42
43
44   test('VnfGroupingModelInfo should be defined', () => {
45     expect(vnfGroupModel).toBeDefined();
46   });
47
48   test('VnfGroupingModelInfo should defined extra details', () => {
49     expect(vnfGroupModel.name).toEqual('vnfGroups');
50     expect(vnfGroupModel.type).toEqual('VnfGroup');
51   });
52
53   test('isEcompGeneratedNaming should return true if vnf group has isEcompGeneratedNaming is "true" ', () => {
54     let isEcompGeneratedNaming : boolean = vnfGroupModel.isEcompGeneratedNaming({
55       properties: {
56         ecomp_generated_naming: 'true'
57       }
58     });
59     expect(isEcompGeneratedNaming).toBeTruthy();
60   });
61
62
63   test('getTooltip should return "vnfGrouping"', () => {
64     let tooltip: string = vnfGroupModel.getTooltip();
65     expect(tooltip).toEqual('VnfGroup');
66   });
67
68   test('getType should return "vnfGrouping"', () => {
69     let tooltip: string = vnfGroupModel.getType();
70     expect(tooltip).toEqual('VnfGroup');
71   });
72
73   test('getNextLevelObject should return null', () => {
74     let nextLevel = vnfGroupModel.getNextLevelObject();
75     expect(nextLevel).not.toBeNull();
76   });
77
78
79   test('showNodeIcons should return true if not reachLimit of max', ()=>{
80     let serviceId : string = 'servicedId';
81     let node = {
82       data : {
83         id : 'vnfGroupId',
84         name : 'vnfGroupName'
85       }
86     };
87     jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue({
88         global:{
89           drawingBoardStatus: "EDIT"
90         },
91       service : {
92         serviceHierarchy : {
93           'servicedId' : {
94             'vnfGroups' : {
95               'vnfGroupName' : {
96                 'properties' : {
97                 }
98               }
99             }
100           }
101         },
102         serviceInstance : {
103           'servicedId' : {
104             'existingVnfGroupCounterMap' : {
105               'vnfGroupId' : 1
106             },
107             'vnfGroups' : {
108               'vnfGroupName' :{
109
110               }
111             }
112           }
113         }
114       }
115     });
116
117     let result = vnfGroupModel.showNodeIcons(<any>node, serviceId);
118     expect(result).toEqual(new AvailableNodeIcons(true , false));
119   });
120
121   test('getNodeCount should return number of nodes', ()=>{
122     let serviceId : string = 'servicedId';
123     jest.spyOn(_sharedTreeService, 'getExistingInstancesWithDeleteMode').mockReturnValue(0);
124     jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue({
125       global : {},
126       service : {
127         serviceHierarchy : {
128           'servicedId' : {
129             'vnfGroups' : {
130               'vnfGroupName' : {
131                 'properties' : {
132                 }
133               }
134             }
135           }
136         },
137         serviceInstance : {
138           'servicedId' : {
139             'existingVnfGroupCounterMap' : {
140               'vnfGroupId' : 1
141             },
142             'vnfGroups' : {
143               'vnfGroupName' :{
144                 'originalName' : 'vnfGroupName'
145               }
146             }
147           }
148         }
149       }
150     });
151
152     let node = {
153       data : {
154         id : 'vnfGroupId',
155         name : 'vnfGroupName',
156         modelUniqueId: 'vnfGroupId',
157       }
158     };
159     let result = vnfGroupModel.getNodeCount(<any>node , serviceId);
160     expect(result).toEqual(1);
161
162     node.data.modelUniqueId = 'vnfGroupId_notExist';
163     result = vnfGroupModel.getNodeCount(<any>node , serviceId);
164     expect(result).toEqual(0);
165
166     result = vnfGroupModel.getNodeCount(<any>node , serviceId + '_notExist');
167     expect(result).toEqual(0);
168   });
169
170   test('getModel should return VnfGroup model', () => {
171     let model: VnfGroupModel = vnfGroupModel.getModel('ResourceGroup0', <any>{
172       originalName : 'ResourceGroup0'
173     }, getServiceHierarchy());
174     expect(model.type).toEqual('VnfGroup');
175   });
176
177   test('getMenuAction: showAuditInfoVnfGroup', ()=>{
178
179     jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue({
180       global: {
181         "drawingBoardStatus": DrawingBoardModes.RETRY
182       }
183     });
184     jest.spyOn(_sharedTreeService, 'isRetryMode').mockReturnValue(true);
185     let node = {
186       data : {
187         "modelId": "6b528779-44a3-4472-bdff-9cd15ec93450",
188         "action": "Create",
189         "isFailed": true,
190       }
191     };
192     let serviceModelId = "6b528779-44a3-4472-bdff-9cd15ec93450";
193     let result = vnfGroupModel.getMenuAction(<any>node, serviceModelId);
194     spyOn(result['showAuditInfo'], 'method');
195     expect(result['showAuditInfo']).toBeDefined();
196     expect(result['showAuditInfo'].visible(node)).toBeTruthy();
197     expect(result['showAuditInfo'].enable(node)).toBeTruthy();
198     result['showAuditInfo']['method'](node, serviceModelId);
199     expect(result['showAuditInfo']['method']).toHaveBeenCalledWith(node, serviceModelId);
200   });
201
202   function getServiceHierarchy(){
203     return {
204       "service": {
205         "uuid": "6b528779-44a3-4472-bdff-9cd15ec93450",
206         "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
207         "name": "action-data",
208         "version": "1.0",
209         "toscaModelURL": null,
210         "category": "",
211         "serviceType": "",
212         "serviceRole": "",
213         "description": "",
214         "serviceEcompNaming": "false",
215         "instantiationType": "Macro",
216         "inputs": {
217           "2017488_adiodvpe0_ASN": {
218             "type": "string",
219             "description": "AV/PE",
220             "entry_schema": null,
221             "inputProperties": null,
222             "constraints": [],
223             "required": true,
224             "default": "AV_vPE"
225           }
226         },
227         "vidNotions": {
228           "instantiationUI": "legacy",
229           "modelCategory": "other"
230         }
231       },
232       "vnfGroups": {
233         "ResourceGroup0": {
234           "type": "VnfGroup",
235           "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413",
236           "invariantUuid": "00beb8f9-6d39-452f-816d-c709b9cbb87d",
237           "version": "1",
238           "name": "ResourceGroup0",
239           "modelCustomizationName": "ResourceGroup0",
240           "properties": {
241             "contained_resource_type": "VF",
242             "role": "SERVICE-ACCESS",
243             "function": "DATA",
244             "description": "DDD0",
245             "type": "LOAD-GROUP"
246           },
247           "members": {
248             "vdbe_svc_vprs_proxy 0": {
249               "uuid": "65fadfa8-a0d9-443f-95ad-836cd044e26c",
250               "invariantUuid": "f4baae0c-b3a5-4ca1-a777-afbffe7010bc",
251               "description": "A Proxy for Service vDBE_Svc_vPRS",
252               "name": "vDBE_Svc_vPRS Service Proxy",
253               "version": "1.0",
254               "customizationUuid": "bdb63d23-e132-4ce7-af2c-a493b4cafac9",
255               "inputs": {},
256               "commands": {},
257               "properties": {},
258               "type": "Service Proxy",
259               "sourceModelUuid": "da7827a2-366d-4be6-8c68-a69153c61274",
260               "sourceModelInvariant": "24632e6b-584b-4f45-80d4-fefd75fd9f14",
261               "sourceModelName": "vDBE_Svc_vPRS"
262             },
263             "vdbe_svc_vprs_proxy 1": {
264               "uuid": "111dfa8-a0d9-443f-95ad-836cd044e26c",
265               "invariantUuid": "111ae0c-b3a5-4ca1-a777-afbffe7010bc",
266               "description": "A Proxy for Service vDBE_Svc_vPRS",
267               "name": "111_Svc_vPRS Service Proxy",
268               "version": "1.0",
269               "customizationUuid": "1113d23-e132-4ce7-af2c-a493b4cafac9",
270               "inputs": {},
271               "commands": {},
272               "properties": {},
273               "type": "Service Proxy",
274               "sourceModelUuid": "11127a2-366d-4be6-8c68-a69153c61274",
275               "sourceModelInvariant": "1112e6b-584b-4f45-80d4-fefd75fd9f14",
276               "sourceModelName": "111_Svc_vPRS"
277             }
278           }
279         }
280       },
281       "networks": {},
282       "collectionResource": {},
283       "configurations": {},
284       "fabricConfigurations": {},
285       "serviceProxies": {},
286       "vfModules": {},
287       "volumeGroups": {},
288       "pnfs": {}
289     }
290   }
291 });