Templates popup: most of the columns are empty (AIC zone is redundant)
[vid.git] / vid-webpack-master / src / app / shared / components / genericFormPopup / instantiationTemplatesModal / instantiation.templates.modal.service.spec.ts
1 import {getTestBed, TestBed} from '@angular/core/testing';
2 import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
3 import {InstantiationTemplatesModalService} from "./instantiation.templates.modal.service";
4 import {AaiService} from "../../../services/aaiService/aai.service";
5 import {ActivatedRoute, Router} from "@angular/router";
6 import {IframeService} from "../../../utils/iframe.service";
7 import {NgRedux} from "@angular-redux/store";
8 import {FeatureFlagsService} from "../../../services/featureFlag/feature-flags.service";
9 import {InstantiationTemplatesRowModel} from "./instantiation.templates.row.model";
10
11
12 class ActivatedRouteMock<T> {
13   queryParams() {
14     return {
15       serviceModelId: '6e59c5de-f052-46fa-aa7e-2fca9d674c44'
16     }
17   }
18 }
19
20 class MockAppStore {}
21
22 describe('instantiation templates modal service', () => {
23   const serviceModelId :string = 'serviceModelId';
24   let injector;
25   let service: InstantiationTemplatesModalService;
26   let httpMock: HttpTestingController;
27   let _aaiService: AaiService;
28   let _activatedRoute: ActivatedRoute;
29   let _router : Router;
30
31
32
33   let router = {
34     navigate: jasmine.createSpy('navigate')
35   };
36
37   beforeAll(done => (async () => {
38     TestBed.configureTestingModule({
39       imports: [HttpClientTestingModule],
40       providers: [InstantiationTemplatesModalService,
41         IframeService,
42         AaiService,
43         FeatureFlagsService,
44         { provide: Router, useValue: router },
45         {provide: ActivatedRoute, useClass: ActivatedRouteMock},
46         {provide: NgRedux, useClass: MockAppStore}
47       ]
48     });
49     await TestBed.compileComponents();
50
51     injector = getTestBed();
52     service = injector.get(InstantiationTemplatesModalService);
53     httpMock = injector.get(HttpTestingController);
54     _aaiService = injector.get(AaiService);
55     _activatedRoute = injector.get(ActivatedRoute);
56     _router = injector.get(Router);
57
58   })().then(done).catch(done.fail));
59
60
61   test('service should be defined', () => {
62     expect(service).toBeDefined();
63   });
64
65   test('convert map to json', () => {
66     let result:InstantiationTemplatesRowModel = new InstantiationTemplatesRowModel({
67       requestSummary: {
68         'vnf': 2,
69         'vfModule': 3,
70         'network': 1
71       }
72     });
73     expect(result.summary).toEqual( "vnf: 2, vfModule: 3, network: 1");
74   });
75
76
77   test('convertResponseToUI - should return table data', () => {
78     const jobs = [{
79       "id": 5,
80       "created": 1524995555000,
81       "modified": 1524995556000,
82       "action": "INSTANTIATE",
83       "createdId": null,
84       "modifiedId": null,
85       "rowNum": null,
86       "auditUserId": null,
87       "auditTrail": null,
88       "jobId": "9f88fdb5-bb47-4bf3-8c5f-98f1ad0ec87c",
89       "templateId": "ce4ec177-cfc8-483e-8a2c-b7aea53fd740",
90       "userId": "16807000",
91       "msoRequestId": "c0011670-0e1a-4b74-945d-8bf5aede1d91",
92       "requestId": null,
93       "jobStatus": "FAILED",
94       "statusModifiedDate": 1524995555000,
95       "hidden": false,
96       "pause": false,
97       "owningEntityId": "aaa1",
98       "owningEntityName": "aaa1",
99       "project": "WATKINS",
100       "aicZoneId": "BAN1",
101       "aicZoneName": "VSDKYUTP-BAN1",
102       "tenantId": "1178612d2b394be4834ad77f567c0af2",
103       "tenantName": "AIN Web Tool-15-D-SSPtestcustome",
104       "regionId": "hvf6",
105       "regionName": null,
106       "serviceType": "TYLER SILVIA",
107       "subscriberName": "e433710f-9217-458d-a79d-1c7aff376d89",
108       "serviceInstanceId": null,
109       "serviceInstanceName": 'serviceInstanceName',
110       "serviceModelId": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
111       "serviceModelName": "ComplexService",
112       "serviceModelVersion": "1.0",
113       "createdBulkDate": 1524995555000,
114     }];
115     const tableRows: InstantiationTemplatesRowModel[] = service.convertResponseToUI(jobs);
116     expect(tableRows).toHaveLength(1);
117     expect(tableRows[0].userId).toEqual('16807000');
118     expect((new Date(tableRows[0].createDate)).toISOString()).toEqual('2018-04-29T09:52:35.000Z');
119     expect(tableRows[0].instanceName).toEqual('serviceInstanceName');
120     expect(tableRows[0].instantiationStatus).toEqual('FAILED');
121     expect(tableRows[0].region).toEqual('hvf6 (AAA1)');
122     expect(tableRows[0].tenant).toEqual('AIN Web Tool-15-D-SSPtestcustome');
123     expect(tableRows[0].jobId).toEqual('9f88fdb5-bb47-4bf3-8c5f-98f1ad0ec87c');
124   });
125
126
127   test('getCloudOwner should remove "-att" from owningEntityName : "att-owner', () => {
128     let result: InstantiationTemplatesRowModel = new InstantiationTemplatesRowModel({
129       owningEntityName: 'att-owner',
130       regionId: 'regionId'
131     });
132     expect(result.region).toEqual('regionId (OWNER)');
133   });
134
135   test('getRegion if null should return empty string', () => {
136     let result: InstantiationTemplatesRowModel = new InstantiationTemplatesRowModel({
137       owningEntityName: 'att-owner',
138       regionId: null
139     });
140     expect(result.region).toEqual('(OWNER)');
141   });
142
143   test('getCloudOwner should not return owningEntityName if not exist', () => {
144     let result: InstantiationTemplatesRowModel = new InstantiationTemplatesRowModel({owningEntityName: null, regionId: 'regionId'});
145     expect(result.region).toEqual('regionId');
146   });
147
148   test('getInstanceName should  return instance name id exist if not exist', () => {
149     let result: InstantiationTemplatesRowModel = new InstantiationTemplatesRowModel({serviceInstanceName: 'instanceName'});
150     expect(result.instanceName).toEqual('instanceName');
151   });
152
153   test('getInstanceName should return <Automatically generated> if instance name not exist', () => {
154     let result: InstantiationTemplatesRowModel = new InstantiationTemplatesRowModel({});
155     expect(result.instanceName).toEqual('<Automatically generated>');
156   });
157
158   test('filterByUserId should filter table data by userId: not empty list', () => {
159     const jobs : InstantiationTemplatesRowModel[] = [
160       new InstantiationTemplatesRowModel({userId : 'userId_1'}),
161       new InstantiationTemplatesRowModel({userId : 'userId'}),
162       new InstantiationTemplatesRowModel({userId : 'userId'}),
163       new InstantiationTemplatesRowModel({userId : 'userId_1'})
164     ];
165     let result: InstantiationTemplatesRowModel[] = service.filterByUserId('userId', jobs);
166     expect(result).toHaveLength(2);
167   });
168
169   test('filterByUserId should filter table data by userId:  empty list should return empty list', () => {
170     const jobs : InstantiationTemplatesRowModel[] = [];
171     let result: InstantiationTemplatesRowModel[] = service.filterByUserId('userId', jobs);
172     expect(result).toHaveLength(0);
173   });
174
175
176   test('navigateToNewServiceModal should navigate to new service modal', ()=>{
177
178     service.navigateToNewServiceModal(serviceModelId);
179
180     expect(_router.navigate).toBeCalledWith(["/servicePopup"], {"queryParams": {"isCreate": true, "serviceModelId": serviceModelId, isInstantiationTemplateExists : true}, "queryParamsHandling": "merge"});
181   })
182
183 });