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";
12 class ActivatedRouteMock<T> {
15 serviceModelId: '6e59c5de-f052-46fa-aa7e-2fca9d674c44'
22 describe('instantiation templates modal service', () => {
23 const serviceModelId :string = 'serviceModelId';
25 let service: InstantiationTemplatesModalService;
26 let httpMock: HttpTestingController;
27 let _aaiService: AaiService;
28 let _activatedRoute: ActivatedRoute;
34 navigate: jasmine.createSpy('navigate')
37 beforeAll(done => (async () => {
38 TestBed.configureTestingModule({
39 imports: [HttpClientTestingModule],
40 providers: [InstantiationTemplatesModalService,
44 { provide: Router, useValue: router },
45 {provide: ActivatedRoute, useClass: ActivatedRouteMock},
46 {provide: NgRedux, useClass: MockAppStore}
49 await TestBed.compileComponents();
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);
58 })().then(done).catch(done.fail));
61 test('service should be defined', () => {
62 expect(service).toBeDefined();
65 test('convert map to json', () => {
66 let result:InstantiationTemplatesRowModel = new InstantiationTemplatesRowModel({
73 expect(result.summary).toEqual( "vnf: 2, vfModule: 3, network: 1");
77 test('convertResponseToUI - should return table data', () => {
80 "created": 1524995555000,
81 "modified": 1524995556000,
82 "action": "INSTANTIATE",
88 "jobId": "9f88fdb5-bb47-4bf3-8c5f-98f1ad0ec87c",
89 "templateId": "ce4ec177-cfc8-483e-8a2c-b7aea53fd740",
91 "msoRequestId": "c0011670-0e1a-4b74-945d-8bf5aede1d91",
93 "jobStatus": "FAILED",
94 "statusModifiedDate": 1524995555000,
97 "owningEntityId": "aaa1",
98 "owningEntityName": "aaa1",
101 "aicZoneName": "VSDKYUTP-BAN1",
102 "tenantId": "1178612d2b394be4834ad77f567c0af2",
103 "tenantName": "AIN Web Tool-15-D-SSPtestcustome",
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,
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');
127 test('getCloudOwner should remove "-att" from owningEntityName : "att-owner', () => {
128 let result: InstantiationTemplatesRowModel = new InstantiationTemplatesRowModel({
129 owningEntityName: 'att-owner',
132 expect(result.region).toEqual('regionId (OWNER)');
135 test('getRegion if null should return empty string', () => {
136 let result: InstantiationTemplatesRowModel = new InstantiationTemplatesRowModel({
137 owningEntityName: 'att-owner',
140 expect(result.region).toEqual('(OWNER)');
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');
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');
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>');
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'})
165 let result: InstantiationTemplatesRowModel[] = service.filterByUserId('userId', jobs);
166 expect(result).toHaveLength(2);
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);
176 test('navigateToNewServiceModal should navigate to new service modal', ()=>{
178 service.navigateToNewServiceModal(serviceModelId);
180 expect(_router.navigate).toBeCalledWith(["/servicePopup"], {"queryParams": {"isCreate": true, "serviceModelId": serviceModelId, isInstantiationTemplateExists : true}, "queryParamsHandling": "merge"});