Merge from ecomp 718fd196 - Modern UI
[vid.git] / vid-webpack-master / src / app / shared / components / searchMembersModal / members-table / elements-table.service.spec.ts
1 import {ElementsTableService} from "./elements-table.service";
2 import {TestBed, getTestBed} from "@angular/core/testing";
3 import {NgRedux} from "@angular-redux/store";
4 import {CustomTableColumnDefinition} from "./elements-table.component";
5 import {AppState} from "../../../store/reducers";
6 import {DataFilterPipe} from "../../../pipes/dataFilter/data-filter.pipe";
7
8
9
10 class MockAppStore<T> {
11   dispatch() {
12   }
13   getState() {
14     return {
15       service : {
16         serviceHierarchy: {
17         },
18         serviceInstance : {
19           "serviceModelId" : {
20             vnfGroups:{
21               "aa1":{
22                 vnfs:{
23                    "VNF1_INSTANCE_ID":{
24                       "action": "None",
25                       "instanceName": "VNF1_INSTANCE_NAME",
26                       "instanceId": "VNF1_INSTANCE_ID",
27                       "orchStatus": null,
28                       "lcpCloudRegionId": "hvf23b",
29                       "tenantId": "3e9a20a3e89e45f884e09df0cc2d2d2a",
30                       "tenantName": "APPC-24595-T-IST-02C",
31                       "modelInfo": {
32                       "modelInvariantId": "vnf-instance-model-invariant-id",
33                         "modelVersionId": "7a6ee536-f052-46fa-aa7e-2fca9d674c44",
34                         "modelVersion": "2.0",
35                         "modelName": "vf_vEPDG",
36                         "modelType": "vnf"
37                     },
38                       "instanceType": "VNF1_INSTANCE_TYPE",
39                       "provStatus": null,
40                       "inMaint": false,
41                       "uuid": "7a6ee536-f052-46fa-aa7e-2fca9d674c44",
42                       "trackById": "7a6ee536-f052-46fa-aa7e-2fca9d674c44:002",
43                       "serviceInstanceId": "service-instance-id1",
44                       "serviceInstanceName": "service-instance-name"
45
46                   },
47                   "aa1-vnf1":{
48                     vnfName: "",
49                     instanceId:"",
50                     serviceInstanceId:""
51                   }
52                 }
53               }
54             }
55           }
56
57         }
58       }
59     }
60   }
61 }
62
63 describe('ElementsTableService view member count', () => {
64   let injector;
65   let service: ElementsTableService;
66   let store: NgRedux<AppState>;
67   let data = loadMockMembers();
68
69   beforeAll(done => (async () => {
70
71     TestBed.configureTestingModule(
72       {
73         providers: [
74           ElementsTableService,
75           {provide: NgRedux, useClass: MockAppStore},
76           DataFilterPipe
77
78         ],
79         declarations: [DataFilterPipe]
80       });
81     await TestBed.compileComponents();
82
83     injector = getTestBed();
84     service = injector.get(ElementsTableService);
85     store = injector.get(NgRedux)
86
87   })().then(done).catch(done.fail));
88
89
90   test('should return number of displayed members', () => {
91     service.modalInformation = <any>{
92       uniqObjectField : "instanceId"
93     };
94     service.allElementsStatusMap = service.generateAllMembersStatus(<any>data);
95     service.filteredMembers = <any>data;
96     expect(service.calculateNotHideRows()).toEqual(2);
97   });
98
99   test('should return number of selected members', () => {
100     ElementsTableService.uniqObjectField = "instanceId";
101     service.allElementsStatusMap = service.generateAllMembersStatus(<any>data);
102     service.allElementsStatusMap['VNF1_INSTANCE_ID'].isSelected = true;
103     service.allElementsStatusMap['VNF2_INSTANCE_ID'].isSelected = true;
104     expect(service.calculateSelectedRows()).toEqual(2);
105   });
106
107   test('should return number of selected members', () => {
108     service.allElementsStatusMap = service.generateAllMembersStatus(<any>data);
109     service.filteredMembers = <any>data;
110     service.allElementsStatusMap['VNF1_INSTANCE_ID'].isSelected = true;
111     service.filterMembers('VNF2', "VNF");
112     service.allElementsStatusMap['VNF2_INSTANCE_ID'].isSelected = true;
113     expect(service.calculateNotHideRows()).toEqual(1);
114   });
115
116   test('generateAllMembersStatus should add to each instance isHide and isSelected and convert to map', () => {
117
118     let allMemberStatusMapMock = service.generateAllMembersStatus(<any>data);
119     for (const key in allMemberStatusMapMock) {
120       expect(allMemberStatusMapMock[key].isSelected).toBeFalsy();
121     }
122   });
123
124   test('changeAllCheckboxStatus', () => {
125     service.modalInformation = <any>{
126       type : 'SomeType',
127       uniqObjectField : 'instanceId'
128     };
129     let data = loadMockMembers();
130     service.allElementsStatusMap = service.generateAllMembersStatus(<any>data);
131     service.filteredMembers = <any>data;
132     service.changeAllCheckboxStatus(true);
133     for (let key in service.allElementsStatusMap) {
134       expect(service.allElementsStatusMap[key].isSelected).toEqual(true);
135     }
136   });
137
138   test('should reset all numbers and lists', () => {
139     service.modalInformation = <any>{
140       type : 'SomeType',
141       uniqObjectField : 'instanceId'
142     };
143     let data = loadMockMembers();
144     service.allElementsStatusMap = service.generateAllMembersStatus(<any>data);
145     service.filteredMembers = <any>data;
146     service.changeAllCheckboxStatus(true);
147     service.resetAll("instanceId");
148     expect(service.numberOfNotHideRows).toEqual(0);
149     expect(service.numberOfSelectedAndNotHideRows).toEqual(0);
150     expect(service.numberOfSelectedRows).toEqual(0);
151     expect(service.allElementsStatusMap).toEqual({});
152     expect(service.filteredMembers.length).toEqual(0);
153   });
154
155   test('checkAllCheckboxStatus should be false if not all are selected', () => {
156     service.allElementsStatusMap = service.generateAllMembersStatus(<any>loadMockMembers());
157     service.updateAmountsAndCheckAll("instanceId", <any>{});
158
159     expect(service.allCheckboxAreSelected).toEqual(false);
160   });
161
162
163   test('sortVnfMembersByName should sort list by vnf name', () => {
164     let data = <any>loadMockMembers();
165     let sortedList = service.sortElementsByName(data, "instanceName");
166
167     expect(sortedList[0].instanceName).toEqual("VNF1_INSTANCE_NAME");
168     expect(sortedList[1].instanceName).toEqual("VNF2_INSTANCE_NAME");
169
170     let tmp = data[0];
171     data[0] = data[1];
172     data[1] = tmp;
173
174     sortedList = service.sortElementsByName(data, "instanceName");
175
176     expect(sortedList[1].instanceName).toEqual("VNF1_INSTANCE_NAME");
177     expect(sortedList[0].instanceName).toEqual("VNF2_INSTANCE_NAME");
178     sortedList = service.sortElementsByName(null, "instanceName");
179     expect(sortedList).toEqual([]);
180     sortedList = service.sortElementsByName(data, undefined);
181     expect(sortedList).toEqual([]);
182   });
183
184   test('isRowDisabled should return false current row is selected', ()=> {
185     let isDisabled = service.isRowDisabled(true, null);
186     expect(isDisabled).toBeFalsy();
187   });
188
189
190   test('isRowDisabled should return false if there is no limit', ()=> {
191     let isDisabled = service.isRowDisabled(false, null);
192     expect(isDisabled).toBeFalsy();
193   });
194
195   test('isRowDisabled should return false if number of rows are less then limit ', ()=> {
196     service.modalInformation = <any>{
197       uniqObjectField : "instanceId"
198     };
199     service.allElementsStatusMap = service.generateAllMembersStatus(<any>data);
200     service.allElementsStatusMap['VNF1_INSTANCE_ID'].isSelected = true;
201     service.allElementsStatusMap['VNF2_INSTANCE_ID'].isSelected = true;
202
203     let isDisabled = service.isRowDisabled(false, 3);
204     expect(isDisabled).toBeFalsy();
205   });
206
207   test('isRowDisabled should return true if number of rows are equal or more then limit ', ()=> {
208     ElementsTableService.uniqObjectField = "instanceId";
209     service.allElementsStatusMap = service.generateAllMembersStatus(<any>data);
210     service.allElementsStatusMap['VNF1_INSTANCE_ID'].isSelected = true;
211     service.allElementsStatusMap['VNF2_INSTANCE_ID'].isSelected = true;
212
213     let isDisabled = service.isRowDisabled(false, 2);
214     expect(isDisabled).toBeTruthy();
215   });
216
217
218   test('isCheckAllDisabled should false true if number of rows are equal or more then limit ', ()=> {
219     service.modalInformation = <any>{
220       uniqObjectField : "instanceId"
221     };
222     service.allElementsStatusMap = service.generateAllMembersStatus(<any>data);
223     service.allElementsStatusMap['VNF1_INSTANCE_ID'].isSelected = true;
224     service.allElementsStatusMap['VNF2_INSTANCE_ID'].isSelected = true;
225
226     let isDisabled = service.isCheckAllDisabled( 2);
227     expect(isDisabled).toBeFalsy();
228   });
229
230
231 });
232
233
234 function loadMockMembers(): any[] {
235   return [
236     {
237       "action": "None",
238       "instanceName": "VNF1_INSTANCE_NAME",
239       "instanceId": "VNF1_INSTANCE_ID",
240       "orchStatus": null,
241       "productFamilyId": null,
242       "lcpCloudRegionId": "hvf23b",
243       "tenantId": "3e9a20a3e89e45f884e09df0cc2d2d2a",
244       "tenantName": "APPC-24595-T-IST-02C",
245       "modelInfo": {
246         "modelInvariantId": "vnf-instance-model-invariant-id",
247         "modelVersionId": "7a6ee536-f052-46fa-aa7e-2fca9d674c44",
248         "modelVersion": "2.0",
249         "modelName": "vf_vEPDG",
250         "modelType": "vnf"
251       },
252       "instanceType": "VNF1_INSTANCE_TYPE",
253       "provStatus": null,
254       "inMaint": false,
255       "uuid": "7a6ee536-f052-46fa-aa7e-2fca9d674c44",
256       "originalName": null,
257       "legacyRegion": null,
258       "lineOfBusiness": null,
259       "platformName": null,
260       "trackById": "7a6ee536-f052-46fa-aa7e-2fca9d674c44:002",
261       "serviceInstanceId": "service-instance-id1",
262       "serviceInstanceName": "service-instance-name"
263     },
264     {
265       "action": "None",
266       "instanceName": "VNF2_INSTANCE_NAME",
267       "instanceId": "VNF2_INSTANCE_ID",
268       "orchStatus": null,
269       "productFamilyId": null,
270       "lcpCloudRegionId": "hvf23b",
271       "tenantId": "3e9a20a3e89e45f884e09df0cc2d2d2a",
272       "tenantName": "APPC-24595-T-IST-02C",
273       "modelInfo": {
274         "modelInvariantId": "vnf-instance-model-invariant-id",
275         "modelVersionId": "eb5f56bf-5855-4e61-bd00-3e19a953bf02",
276         "modelVersion": "1.0",
277         "modelName": "vf_vEPDG",
278         "modelType": "vnf"
279       },
280       "instanceType": "VNF2_INSTANCE_TYPE",
281       "provStatus": null,
282       "inMaint": true,
283       "uuid": "eb5f56bf-5855-4e61-bd00-3e19a953bf02",
284       "originalName": null,
285       "legacyRegion": null,
286       "lineOfBusiness": null,
287       "platformName": null,
288       "trackById": "eb5f56bf-5855-4e61-bd00-3e19a953bf02:003",
289       "serviceInstanceId": "service-instance-id2",
290       "serviceInstanceName": "service-instance-name"
291     }
292   ];
293 }
294
295