1 import {MembersTableService} from "./members-table.service";
2 import {TestBed, getTestBed} from "@angular/core/testing";
3 import {NgRedux} from "@angular-redux/store";
4 import {CustomTableColumnDefinition} from "./members-table.component";
5 import {AppState} from "../../../store/reducers";
6 import {createRelatedVnfMemberInstance} from "../../../storeUtil/utils/relatedVnfMember/relatedVnfMember.actions";
7 import {DataFilterPipe} from "../../../pipes/dataFilter/data-filter.pipe";
8 import {VnfMember} from "../../../models/VnfMember";
12 class MockAppStore<T> {
27 "instanceName": "VNF1_INSTANCE_NAME",
28 "instanceId": "VNF1_INSTANCE_ID",
30 "lcpCloudRegionId": "mtn23b",
31 "tenantId": "3e9a20a3e89e45f884e09df0cc2d2d2a",
32 "tenantName": "APPC-24595-T-IST-02C",
34 "modelInvariantId": "vnf-instance-model-invariant-id",
35 "modelVersionId": "7a6ee536-f052-46fa-aa7e-2fca9d674c44",
36 "modelVersion": "2.0",
37 "modelName": "vf_vEPDG",
40 "instanceType": "VNF1_INSTANCE_TYPE",
43 "uuid": "7a6ee536-f052-46fa-aa7e-2fca9d674c44",
44 "trackById": "7a6ee536-f052-46fa-aa7e-2fca9d674c44:002",
45 "serviceInstanceId": "service-instance-id1",
46 "serviceInstanceName": "service-instance-name"
65 describe('MembersTableService view member count', () => {
67 let service: MembersTableService;
68 let store: NgRedux<AppState>;
69 let data = loadMockMembers();
71 beforeAll(done => (async () => {
73 TestBed.configureTestingModule(
77 {provide: NgRedux, useClass: MockAppStore},
81 declarations: [DataFilterPipe]
83 await TestBed.compileComponents();
85 injector = getTestBed();
86 service = injector.get(MembersTableService);
87 store = injector.get(NgRedux)
89 })().then(done).catch(done.fail));
92 test('should return number of displayed members', () => {
93 service.allMemberStatusMap = MembersTableService.generateAllMembersStatus(<any>data);
94 service.filteredMembers = <any>data;
95 expect(service.calculateNotHideVnfMembers()).toEqual(2);
98 test('should return number of selected members', () => {
99 service.allMemberStatusMap = MembersTableService.generateAllMembersStatus(<any>data);
100 service.allMemberStatusMap['VNF1_INSTANCE_ID'].isSelected = true;
101 service.allMemberStatusMap['VNF2_INSTANCE_ID'].isSelected = true;
102 expect(service.calculateSelectedVnfMembers()).toEqual(2);
105 test('should return number of selected members', () => {
106 service.allMemberStatusMap = MembersTableService.generateAllMembersStatus(<any>data);
107 service.filteredMembers = <any>data;
108 service.allMemberStatusMap['VNF1_INSTANCE_ID'].isSelected = true;
109 service.filterMembers('VNF2');
110 service.allMemberStatusMap['VNF2_INSTANCE_ID'].isSelected = true;
111 expect(service.calculateNotHideVnfMembers()).toEqual(1);
114 test('getHeader should return labels with array of keys', () => {
115 const headers: CustomTableColumnDefinition[] = MembersTableService.getHeaders();
116 expect(headers).toEqual([
117 {displayName: 'VNF instance name', key: ['instanceName']},
118 {displayName: 'VNF version', key: ['modelInfo', 'modelVersion']},
119 {displayName: 'VNF model name', key: ['modelInfo', 'modelName']},
120 {displayName: 'Prov Status', key: ['provStatus']},
121 {displayName: 'Service instance name', key: ['serviceInstanceName']},
122 {displayName: 'Cloud Region', key: ['lcpCloudRegionId']},
123 {displayName: 'Tenant Name', key: ['tenantName']}
128 test('setMembers should dispatch action only on selected members', () => {
129 const vnfGroupStoreKey: string = 'vnfGroupStoreKey';
130 const serviceId: string = 'serviceId';
132 jest.spyOn(store, 'dispatch');
133 service.allMemberStatusMap = MembersTableService.generateAllMembersStatus(<any>data);
134 service.allMemberStatusMap['VNF1_INSTANCE_ID'].isSelected = true;
135 service.setMembers({serviceId: serviceId, vnfGroupStoreKey: vnfGroupStoreKey});
136 expect(store.dispatch).toHaveBeenCalledTimes(1);
137 expect(store.dispatch).toHaveBeenCalledWith(createRelatedVnfMemberInstance(vnfGroupStoreKey, serviceId, service.allMemberStatusMap['VNF1_INSTANCE_ID']));
140 test('generateAllMembersStatus should add to each instance isHide and isSelected and convert to map', () => {
142 let allMemberStatusMapMock = MembersTableService.generateAllMembersStatus(<any>data);
143 for (const key in allMemberStatusMapMock) {
144 expect(allMemberStatusMapMock[key].isSelected).toBeFalsy();
148 test('changeAllCheckboxStatus', () => {
149 let data = loadMockMembers();
150 service.allMemberStatusMap = MembersTableService.generateAllMembersStatus(<any>data);
151 service.filteredMembers = <any>data;
152 service.changeAllCheckboxStatus(true);
153 for (let key in service.allMemberStatusMap) {
154 expect(service.allMemberStatusMap[key].isSelected).toEqual(true);
158 test('should reset all numbers and lists', () => {
159 let data = loadMockMembers();
160 service.allMemberStatusMap = MembersTableService.generateAllMembersStatus(<any>data);
161 service.filteredMembers = <any>data;
162 service.changeAllCheckboxStatus(true);
164 expect(service.numberOfNotHideVnfMembers).toEqual(0);
165 expect(service.numberOfSelectedAndNotHideVnfMembers).toEqual(0);
166 expect(service.numberOfSelectedVnfMembers).toEqual(0);
167 expect(service.allMemberStatusMap).toEqual({});
168 expect(service.filteredMembers.length).toEqual(0);
171 test('checkAllCheckboxStatus should be false if not all are selected', () => {
172 service.allMemberStatusMap = MembersTableService.generateAllMembersStatus(<any>loadMockMembers());
173 service.updateAmountsAndCheckAll();
175 expect(service.allCheckboxAreSelected).toEqual(false);
179 test('sortVnfMembersByName should sort list by vnf name', () => {
180 let data = <any>loadMockMembers();
181 let sortedList = MembersTableService.sortVnfMembersByName(data, "instanceName");
183 expect(sortedList[0].instanceName).toEqual("VNF1_INSTANCE_NAME");
184 expect(sortedList[1].instanceName).toEqual("VNF2_INSTANCE_NAME");
190 sortedList = MembersTableService.sortVnfMembersByName(data, "instanceName");
192 expect(sortedList[1].instanceName).toEqual("VNF1_INSTANCE_NAME");
193 expect(sortedList[0].instanceName).toEqual("VNF2_INSTANCE_NAME");
194 sortedList = MembersTableService.sortVnfMembersByName(null, "instanceName");
195 expect(sortedList).toEqual([]);
196 sortedList = MembersTableService.sortVnfMembersByName(data, undefined);
197 expect(sortedList).toEqual([]);
200 test('should return only vnf members not associated to any vnf group', ()=>{
201 const result: VnfMember[] = service.filterUsedVnfMembers("serviceModelId",loadMockMembers());
202 expect(result.length).toEqual(1);
203 expect(result[0].instanceId).toEqual("VNF2_INSTANCE_ID");
209 function loadMockMembers(): any[] {
213 "instanceName": "VNF1_INSTANCE_NAME",
214 "instanceId": "VNF1_INSTANCE_ID",
216 "productFamilyId": null,
217 "lcpCloudRegionId": "mtn23b",
218 "tenantId": "3e9a20a3e89e45f884e09df0cc2d2d2a",
219 "tenantName": "APPC-24595-T-IST-02C",
221 "modelInvariantId": "vnf-instance-model-invariant-id",
222 "modelVersionId": "7a6ee536-f052-46fa-aa7e-2fca9d674c44",
223 "modelVersion": "2.0",
224 "modelName": "vf_vEPDG",
227 "instanceType": "VNF1_INSTANCE_TYPE",
230 "uuid": "7a6ee536-f052-46fa-aa7e-2fca9d674c44",
231 "originalName": null,
232 "legacyRegion": null,
233 "lineOfBusiness": null,
234 "platformName": null,
235 "trackById": "7a6ee536-f052-46fa-aa7e-2fca9d674c44:002",
236 "serviceInstanceId": "service-instance-id1",
237 "serviceInstanceName": "service-instance-name"
241 "instanceName": "VNF2_INSTANCE_NAME",
242 "instanceId": "VNF2_INSTANCE_ID",
244 "productFamilyId": null,
245 "lcpCloudRegionId": "mtn23b",
246 "tenantId": "3e9a20a3e89e45f884e09df0cc2d2d2a",
247 "tenantName": "APPC-24595-T-IST-02C",
249 "modelInvariantId": "vnf-instance-model-invariant-id",
250 "modelVersionId": "eb5f56bf-5855-4e61-bd00-3e19a953bf02",
251 "modelVersion": "1.0",
252 "modelName": "vf_vEPDG",
255 "instanceType": "VNF2_INSTANCE_TYPE",
258 "uuid": "eb5f56bf-5855-4e61-bd00-3e19a953bf02",
259 "originalName": null,
260 "legacyRegion": null,
261 "lineOfBusiness": null,
262 "platformName": null,
263 "trackById": "eb5f56bf-5855-4e61-bd00-3e19a953bf02:003",
264 "serviceInstanceId": "service-instance-id2",
265 "serviceInstanceName": "service-instance-name"