NodeInfo::getModel expects the instance-model
[vid.git] / vid-webpack-master / src / app / drawingBoard / service-planning / objectsToTree / models / vnfGrouping / vnfGrouping.model.info.spec.ts
1 import {HttpClientTestingModule} from "@angular/common/http/testing";
2 import {getTestBed, TestBed} from "@angular/core/testing";
3 import {MockNgRedux, NgReduxTestingModule} from "@angular-redux/store/testing";
4 import {VnfGroupingModelInfo} from "./vnfGrouping.model.info";
5 import {DynamicInputsService} from "../../dynamicInputs.service";
6 import {SharedTreeService} from "../../shared.tree.service";
7 import {VnfGroupPopupService} from "../../../../../shared/components/genericFormPopup/genericFormServices/vnfGroup/vnfGroup.popup.service";
8 import {DialogService} from "ng2-bootstrap-modal";
9 import {AvailableNodeIcons} from "../../../available-models-tree/available-models-tree.service";
10 import {VnfGroupModel} from "../../../../../shared/models/vnfGroupModel";
11 import {IframeService} from "../../../../../shared/utils/iframe.service";
12 import {RouterTestingModule} from "@angular/router/testing";
13 import {DrawingBoardModes} from "../../../drawing-board.modes";
14 import {AaiService} from "../../../../../shared/services/aaiService/aai.service";
15 import {FeatureFlagsService} from "../../../../../shared/services/featureFlag/feature-flags.service";
16 import {ITableContent} from "../../../../../shared/components/searchMembersModal/members-table/element-table-row.model";
17 import {VNFModel} from "../../../../../shared/models/vnfModel";
18
19 describe('VnfGroupingModelInfo Model Info', () => {
20   let injector;
21   let _dialogService : DialogService;
22   let _vnfGroupPopupService : VnfGroupPopupService;
23   let  _dynamicInputsService : DynamicInputsService;
24   let _sharedTreeService : SharedTreeService;
25   let _iframeService : IframeService;
26   let vnfGroupModel: VnfGroupingModelInfo;
27   let _aaiService : AaiService;
28   beforeAll(done => (async () => {
29     TestBed.configureTestingModule({
30       imports: [HttpClientTestingModule, NgReduxTestingModule, RouterTestingModule],
31       providers: [
32         DialogService,
33         VnfGroupPopupService,
34         DynamicInputsService,
35         SharedTreeService,
36         IframeService,
37         AaiService,
38         FeatureFlagsService,
39         MockNgRedux]
40     });
41     await TestBed.compileComponents();
42     injector = getTestBed();
43     _sharedTreeService = injector.get(SharedTreeService);
44     _aaiService = injector.get(AaiService);
45
46     vnfGroupModel =  new VnfGroupingModelInfo(_dynamicInputsService, _sharedTreeService, _dialogService, _vnfGroupPopupService, _iframeService,  _aaiService, MockNgRedux.getInstance());
47   })().then(done).catch(done.fail));
48
49
50   test('VnfGroupingModelInfo should be defined', () => {
51     expect(vnfGroupModel).toBeDefined();
52   });
53
54   test('VnfGroupingModelInfo should defined extra details', () => {
55     expect(vnfGroupModel.name).toEqual('vnfGroups');
56     expect(vnfGroupModel.type).toEqual('VnfGroup');
57   });
58
59   test('isEcompGeneratedNaming should return true if vnf group has isEcompGeneratedNaming is "true" ', () => {
60     let isEcompGeneratedNaming : boolean = vnfGroupModel.isEcompGeneratedNaming({
61       properties: {
62         ecomp_generated_naming: 'true'
63       }
64     });
65     expect(isEcompGeneratedNaming).toBeTruthy();
66   });
67
68   test('getTooltip should return "vnfGrouping"', () => {
69     let tooltip: string = vnfGroupModel.getTooltip();
70     expect(tooltip).toEqual('VnfGroup');
71   });
72
73   test('getType should return "vnfGrouping"', () => {
74     let tooltip: string = vnfGroupModel.getType();
75     expect(tooltip).toEqual('VnfGroup');
76   });
77
78   test('getNextLevelObject should return null', () => {
79     let nextLevel = vnfGroupModel.getNextLevelObject();
80     expect(nextLevel).not.toBeNull();
81   });
82
83   test('showNodeIcons should return true if not reachLimit of max', ()=>{
84     let serviceId : string = 'servicedId';
85     let node = {
86       data : {
87         id : 'vnfGroupId',
88         name : 'vnfGroupName'
89       }
90     };
91     jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue({
92         global:{
93           drawingBoardStatus: "EDIT"
94         },
95       service : {
96         serviceHierarchy : {
97           'servicedId' : {
98             'vnfGroups' : {
99               'vnfGroupName' : {
100                 'properties' : {
101                 }
102               }
103             }
104           }
105         },
106         serviceInstance : {
107           'servicedId' : {
108             'existingVnfGroupCounterMap' : {
109               'vnfGroupId' : 1
110             },
111             'vnfGroups' : {
112               'vnfGroupName' :{
113
114               }
115             }
116           }
117         }
118       }
119     });
120
121     let result = vnfGroupModel.showNodeIcons(<any>node, serviceId);
122     expect(result).toEqual(new AvailableNodeIcons(true , false));
123   });
124
125   test('getNodeCount should return number of nodes', ()=>{
126     let serviceId : string = 'servicedId';
127     jest.spyOn(_sharedTreeService, 'getExistingInstancesWithDeleteMode').mockReturnValue(0);
128     jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue({
129       global : {},
130       service : {
131         serviceHierarchy : {
132           'servicedId' : {
133             'vnfGroups' : {
134               'vnfGroupName' : {
135                 'properties' : {
136                 }
137               }
138             }
139           }
140         },
141         serviceInstance : {
142           'servicedId' : {
143             'existingVnfGroupCounterMap' : {
144               'vnfGroupId' : 1
145             },
146             'vnfGroups' : {
147               'vnfGroupName' :{
148                 'originalName' : 'vnfGroupName'
149               }
150             }
151           }
152         }
153       }
154     });
155
156     let node = {
157       data : {
158         id : 'vnfGroupId',
159         name : 'vnfGroupName',
160         modelUniqueId: 'vnfGroupId',
161       }
162     };
163     let result = vnfGroupModel.getNodeCount(<any>node , serviceId);
164     expect(result).toEqual(1);
165
166     node.data.modelUniqueId = 'vnfGroupId_notExist';
167     result = vnfGroupModel.getNodeCount(<any>node , serviceId);
168     expect(result).toEqual(0);
169
170     result = vnfGroupModel.getNodeCount(<any>node , serviceId + '_notExist');
171     expect(result).toEqual(0);
172   });
173
174   test('getModel should return VnfGroup model', () => {
175     expect(vnfGroupModel.getModel({})).toBeInstanceOf(VnfGroupModel);
176   });
177
178   test('getMenuAction: showAuditInfoVnfGroup', ()=>{
179
180     jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue({
181       global: {
182         "drawingBoardStatus": DrawingBoardModes.RETRY
183       }
184     });
185     jest.spyOn(_sharedTreeService, 'isRetryMode').mockReturnValue(true);
186     let node = {
187       data : {
188         "modelId": "6b528779-44a3-4472-bdff-9cd15ec93450",
189         "action": "Create",
190         "isFailed": true,
191       }
192     };
193     let serviceModelId = "6b528779-44a3-4472-bdff-9cd15ec93450";
194     let result = vnfGroupModel.getMenuAction(<any>node, serviceModelId);
195     spyOn(result['showAuditInfo'], 'method');
196     expect(result['showAuditInfo']).toBeDefined();
197     expect(result['showAuditInfo'].visible(node)).toBeTruthy();
198     expect(result['showAuditInfo'].enable(node)).toBeTruthy();
199     result['showAuditInfo']['method'](node, serviceModelId);
200     expect(result['showAuditInfo']['method']).toHaveBeenCalledWith(node, serviceModelId);
201   });
202
203
204   test('generateRelatedMemberTableContent', ()=> {
205     const tableContents: ITableContent[] = vnfGroupModel.generateRelatedMemberTableContent();
206     expect(tableContents).toEqual([
207       {
208         id: 'vnfName',
209         contents: [{
210           id: ['instanceName'],
211           value: ['instanceName']
212         }, {
213           id: ['instanceId'],
214           value: ["instanceId"],
215           prefix: 'UUID: '
216         }]
217       },
218       {
219         id: 'version',
220         contents: [{
221           id: ['modelInfo', 'modelVersion'],
222           value: ['modelInfo', 'modelVersion']
223         }]
224       },
225       {
226         id: 'modelName',
227         contents: [{
228           id: ['modelInfo', 'modelName'],
229           value: ['modelInfo', 'modelName']
230         }]
231       },
232       {
233         id: 'provStatus',
234         contents: [{
235           id: ['provStatus'],
236           value: ['provStatus']
237         }]
238       },
239       {
240         id: 'serviceInstance',
241         contents: [{
242           id: ['serviceInstanceName'],
243           value: ['serviceInstanceName']
244         }, {
245           id: ['serviceInstanceId'],
246           value: ["serviceInstanceId"],
247           prefix: 'UUID: '
248         }]
249       },
250       {
251         id: 'cloudRegion',
252         contents: [{
253           id: ['lcpCloudRegionId'],
254           value: ['lcpCloudRegionId']
255         }]
256       },
257       {
258         id: 'tenantName',
259         contents: [{
260           id: ['tenantName'],
261           value: ['tenantName']
262         }]
263       }
264     ]);
265   });
266
267
268 });