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";
10 class MockAppStore<T> {
25 "instanceName": "VNF1_INSTANCE_NAME",
26 "instanceId": "VNF1_INSTANCE_ID",
28 "lcpCloudRegionId": "hvf23b",
29 "tenantId": "3e9a20a3e89e45f884e09df0cc2d2d2a",
30 "tenantName": "APPC-24595-T-IST-02C",
32 "modelInvariantId": "vnf-instance-model-invariant-id",
33 "modelVersionId": "7a6ee536-f052-46fa-aa7e-2fca9d674c44",
34 "modelVersion": "2.0",
35 "modelName": "vf_vEPDG",
38 "instanceType": "VNF1_INSTANCE_TYPE",
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"
63 describe('ElementsTableService view member count', () => {
65 let service: ElementsTableService;
66 let store: NgRedux<AppState>;
67 let data = loadMockMembers();
69 beforeAll(done => (async () => {
71 TestBed.configureTestingModule(
75 {provide: NgRedux, useClass: MockAppStore},
79 declarations: [DataFilterPipe]
81 await TestBed.compileComponents();
83 injector = getTestBed();
84 service = injector.get(ElementsTableService);
85 store = injector.get(NgRedux)
87 })().then(done).catch(done.fail));
90 test('should return number of displayed members', () => {
91 service.modalInformation = <any>{
92 uniqObjectField : "instanceId"
94 service.allElementsStatusMap = service.generateAllMembersStatus(<any>data);
95 service.filteredMembers = <any>data;
96 expect(service.calculateNotHideRows()).toEqual(2);
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);
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);
116 test('generateAllMembersStatus should add to each instance isHide and isSelected and convert to map', () => {
118 let allMemberStatusMapMock = service.generateAllMembersStatus(<any>data);
119 for (const key in allMemberStatusMapMock) {
120 expect(allMemberStatusMapMock[key].isSelected).toBeFalsy();
124 test('changeAllCheckboxStatus', () => {
125 service.modalInformation = <any>{
127 uniqObjectField : 'instanceId'
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);
138 test('should reset all numbers and lists', () => {
139 service.modalInformation = <any>{
141 uniqObjectField : 'instanceId'
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);
155 test('checkAllCheckboxStatus should be false if not all are selected', () => {
156 service.allElementsStatusMap = service.generateAllMembersStatus(<any>loadMockMembers());
157 service.updateAmountsAndCheckAll("instanceId", <any>{});
159 expect(service.allCheckboxAreSelected).toEqual(false);
163 test('sortVnfMembersByName should sort list by vnf name', () => {
164 let data = <any>loadMockMembers();
165 let sortedList = service.sortElementsByName(data, "instanceName");
167 expect(sortedList[0].instanceName).toEqual("VNF1_INSTANCE_NAME");
168 expect(sortedList[1].instanceName).toEqual("VNF2_INSTANCE_NAME");
174 sortedList = service.sortElementsByName(data, "instanceName");
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([]);
184 test('isRowDisabled should return false current row is selected', ()=> {
185 let isDisabled = service.isRowDisabled(true, null);
186 expect(isDisabled).toBeFalsy();
190 test('isRowDisabled should return false if there is no limit', ()=> {
191 let isDisabled = service.isRowDisabled(false, null);
192 expect(isDisabled).toBeFalsy();
195 test('isRowDisabled should return false if number of rows are less then limit ', ()=> {
196 service.modalInformation = <any>{
197 uniqObjectField : "instanceId"
199 service.allElementsStatusMap = service.generateAllMembersStatus(<any>data);
200 service.allElementsStatusMap['VNF1_INSTANCE_ID'].isSelected = true;
201 service.allElementsStatusMap['VNF2_INSTANCE_ID'].isSelected = true;
203 let isDisabled = service.isRowDisabled(false, 3);
204 expect(isDisabled).toBeFalsy();
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;
213 let isDisabled = service.isRowDisabled(false, 2);
214 expect(isDisabled).toBeTruthy();
218 test('isCheckAllDisabled should false true if number of rows are equal or more then limit ', ()=> {
219 service.modalInformation = <any>{
220 uniqObjectField : "instanceId"
222 service.allElementsStatusMap = service.generateAllMembersStatus(<any>data);
223 service.allElementsStatusMap['VNF1_INSTANCE_ID'].isSelected = true;
224 service.allElementsStatusMap['VNF2_INSTANCE_ID'].isSelected = true;
226 let isDisabled = service.isCheckAllDisabled( 2);
227 expect(isDisabled).toBeFalsy();
234 function loadMockMembers(): any[] {
238 "instanceName": "VNF1_INSTANCE_NAME",
239 "instanceId": "VNF1_INSTANCE_ID",
241 "productFamilyId": null,
242 "lcpCloudRegionId": "hvf23b",
243 "tenantId": "3e9a20a3e89e45f884e09df0cc2d2d2a",
244 "tenantName": "APPC-24595-T-IST-02C",
246 "modelInvariantId": "vnf-instance-model-invariant-id",
247 "modelVersionId": "7a6ee536-f052-46fa-aa7e-2fca9d674c44",
248 "modelVersion": "2.0",
249 "modelName": "vf_vEPDG",
252 "instanceType": "VNF1_INSTANCE_TYPE",
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"
266 "instanceName": "VNF2_INSTANCE_NAME",
267 "instanceId": "VNF2_INSTANCE_ID",
269 "productFamilyId": null,
270 "lcpCloudRegionId": "hvf23b",
271 "tenantId": "3e9a20a3e89e45f884e09df0cc2d2d2a",
272 "tenantName": "APPC-24595-T-IST-02C",
274 "modelInvariantId": "vnf-instance-model-invariant-id",
275 "modelVersionId": "eb5f56bf-5855-4e61-bd00-3e19a953bf02",
276 "modelVersion": "1.0",
277 "modelName": "vf_vEPDG",
280 "instanceType": "VNF2_INSTANCE_TYPE",
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"