1 import { TestBed, getTestBed } from '@angular/core/testing';
3 HttpClientTestingModule,
5 } from '@angular/common/http/testing';
6 import { VnfInstanceDetailsService } from './vnf-instance-details.service';
7 import { FormControl, FormGroup, Validators } from '@angular/forms';
8 import { NumbersLettersUnderscoreValidator } from '../../../shared/components/validators/numbersLettersUnderscore/numbersLettersUnderscore.validator';
10 describe('Vnf Instance Details Service', () => {
12 let service: VnfInstanceDetailsService;
13 let httpMock: HttpTestingController;
15 let SERVICE_ID: string = '1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd';
19 TestBed.configureTestingModule({
20 imports: [HttpClientTestingModule],
21 providers: [VnfInstanceDetailsService]
24 injector = getTestBed();
25 service = injector.get(VnfInstanceDetailsService);
26 httpMock = injector.get(HttpTestingController);
27 serviceHierarchy = getServiceServiceHierarchy();
31 describe('#hasInstanceNameError', ()=> {
32 it('hasInstanceNameError should return true if instanceName is illegal and enabled', (done: DoneFn) => {
33 let form = generateFormGroup();
34 form.controls['instanceName'].setValue('----');
35 form.controls['instanceName'].setErrors({
38 form.controls['instanceName'].markAsTouched();
39 let result = service.hasInstanceNameError(form);
40 expect(result).toBeTruthy();
44 it('hasInstanceNameError should return false if instanceName is illegal and enabled and pattern is ok', (done: DoneFn) => {
45 let form = generateFormGroup();
46 form.controls['instanceName'].setValue('----');
47 form.controls['instanceName'].setErrors({
50 form.controls['instanceName'].markAsTouched();
51 let result = service.hasInstanceNameError(form);
52 expect(result).toBeFalsy();
57 describe('#isUnique', () => {
58 it('Create Mode: should return false if instanceName exist', (done: DoneFn) => {
59 serviceHierarchy = getServiceServiceHierarchy();
60 let result = service.isUnique(serviceHierarchy, SERVICE_ID, 'uniqueInstanceName', false);
61 expect(result).toBeFalsy();
65 it('Update Mode: should return true if instanceName exist once', (done: DoneFn) => {
66 let result = service.isUnique(serviceHierarchy, SERVICE_ID, 'uniqueInstanceName', true);
67 expect(result).toBeTruthy()
71 it('Create Mode: should return true if instanceName not exist', (done: DoneFn) => {
72 let result = service.isUnique(serviceHierarchy, SERVICE_ID, 'uniqueInstanceNameNotExist', false);
73 expect(result).toBeTruthy();
77 it('Create Mode: should return false if instanceName exist inside vf modules', (done: DoneFn) => {
78 let result = service.isUnique(serviceHierarchy, SERVICE_ID, 'uniqueInstanceNameVfModule', false);
79 expect(result).toBeFalsy();
83 it('Update Mode: should return true if instanceName exist once inside vf modules', (done: DoneFn) => {
84 let result = service.isUnique(serviceHierarchy, SERVICE_ID, 'uniqueInstanceNameVfModule', true);
85 expect(result).toBeTruthy();
89 it('Create Mode: should return true if instanceName is not exist at vf modules and vnfs', (done: DoneFn) => {
90 let result = service.isUnique(serviceHierarchy, SERVICE_ID, 'uniqueInstanceNameVfModuleNotExist', false);
91 expect(result).toBeTruthy();
95 it('Create Mode: should return false if instanceName exist service name', (done: DoneFn) => {
96 let result = service.isUnique(serviceHierarchy, SERVICE_ID, 'Instance-Name', false);
97 expect(result).toBeFalsy();
101 it('Create Mode: should return false if volumeGroupName exist service name', (done: DoneFn) => {
102 let result = service.isUnique(serviceHierarchy, SERVICE_ID, 'volumeGroupNameExist', false);
103 expect(result).toBeFalsy();
107 it('Create Mode: should return true if volumeGroupName not exist service name', (done: DoneFn) => {
108 let result = service.isUnique(serviceHierarchy, SERVICE_ID, 'volumeGroupNameNotExist', false);
109 expect(result).toBeTruthy();
114 function getServiceServiceHierarchy() {
115 return JSON.parse(JSON.stringify(
117 "1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd": {
119 "2017-388_ADIOD-vPE 1": {
120 "rollbackOnFailure": "true",
125 "productFamilyId": "a4f6f2ae-9bf5-4ed7-b904-06b2099c4bd7",
126 "lcpCloudRegionId": "AAIAIC25",
127 "tenantId": "092eb9e8e4b7412e8787dd091bc58e86",
128 "lineOfBusiness": "zzz1",
129 "platformName": "platform",
130 "instanceName": "uniqueInstanceName",
132 "modelInvariantId": "00beb8f9-6d39-452f-816d-c709b9cbb87d",
133 "modelVersionId": "0903e1c0-8e03-4936-b5c2-260653b96413",
134 "modelName": "2017-388_ADIOD-vPE",
135 "modelVersion": "1.0",
136 "modelCustomizationId": "280dec31-f16d-488b-9668-4aae55d6648a",
137 "modelCustomizationName": "2017-388_ADIOD-vPE 1"
139 "isUserProvidedNaming": true
141 "2017-388_ADIOD-vPE 0": {
142 "rollbackOnFailure": "true",
147 "productFamilyId": null,
148 "lcpCloudRegionId": "mtn6",
149 "tenantId": "1178612d2b394be4834ad77f567c0af2",
150 "lineOfBusiness": "ECOMP",
151 "platformName": "xxx1",
152 "instanceName": "blaaa",
154 "modelInvariantId": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8",
155 "modelVersionId": "afacccf6-397d-45d6-b5ae-94c39734b168",
156 "modelName": "2017-388_ADIOD-vPE",
157 "modelVersion": "4.0",
158 "modelCustomizationId": "b3c76f73-eeb5-4fb6-9d31-72a889f1811c",
159 "modelCustomizationName": "2017-388_ADIOD-vPE 0"
161 "isUserProvidedNaming": true
163 "2017488_ADIODvPE 0": {
164 "rollbackOnFailure": "true",
166 "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1": {
167 "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1": {
168 "rollbackOnFailure": "true",
169 "instanceName": "uniqueInstanceNameVfModule",
170 "volumeGroupName": "volumeGroupNameExist",
172 "modelInvariantId": "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1",
173 "modelVersionId": "25284168-24bb-4698-8cb4-3f509146eca5",
174 "modelName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
183 "productFamilyId": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
184 "lcpCloudRegionId": "mtn6",
185 "tenantId": "19c5ade915eb461e8af52fb2fd8cd1f2",
186 "lineOfBusiness": "zzz1",
187 "platformName": "platform",
188 "instanceName": "2017488_ADIODvPE",
190 "modelInvariantId": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8",
191 "modelVersionId": "69e09f68-8b63-4cc9-b9ff-860960b5db09",
192 "modelName": "2017488_ADIODvPE",
193 "modelVersion": "5.0",
194 "modelCustomizationId": "1da7b585-5e61-4993-b95e-8e6606c81e45",
195 "modelCustomizationName": "2017488_ADIODvPE 0"
197 "isUserProvidedNaming": true
203 "globalSubscriberId": "e433710f-9217-458d-a79d-1c7aff376d89",
204 "productFamilyId": "17cc1042-527b-11e6-beb8-9e71128cae77",
205 "subscriptionServiceType": "VIRTUAL USP",
206 "lcpCloudRegionId": "AAIAIC25",
207 "tenantId": "092eb9e8e4b7412e8787dd091bc58e86",
209 "projectName": "DFW",
210 "owningEntityId": "aaa1",
211 "instanceName": "Instance-Name",
214 "modelInvariantId": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
215 "modelVersionId": "1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd",
216 "modelName": "action-data",
217 "modelVersion": "1.0"
219 "tenantName": "USP-SIP-IC-24335-T-01",
220 "aicZoneName": "DKJSJDKA-DKJ1",
221 "isUserProvidedNaming": true
227 function generateFormGroup() {
228 return new FormGroup({
229 productFamilyId: new FormControl(),
230 lcpCloudRegionId: new FormControl(Validators.required),
231 tenantId: new FormControl({value: null, disabled: false}, Validators.required),
232 legacyRegion: new FormControl(),
233 lineOfBusiness: new FormControl(),
234 platformName: new FormControl(Validators.required),
235 rollbackOnFailure: new FormControl(Validators.required),
236 instanceName: new FormControl({value: null}, Validators.compose([Validators.required, NumbersLettersUnderscoreValidator.valid]))