1 import {LogService} from "../../../../utils/log/log.service";
2 import {NgRedux} from "@angular-redux/store";
3 import {BasicControlGenerator} from "../../../genericForm/formControlsServices/basic.control.generator";
4 import {AaiService} from "../../../../services/aaiService/aai.service";
5 import {HttpClient} from "@angular/common/http";
6 import {GenericFormService} from "../../../genericForm/generic-form.service";
7 import {FormBuilder, FormGroup} from "@angular/forms";
8 import {IframeService} from "../../../../utils/iframe.service";
9 import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
10 import {BasicPopupService} from "../basic.popup.service";
11 import {VfModuleControlGenerator} from "../../../genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator";
12 import {SdcUiServices} from "onap-ui-angular";
13 import {FeatureFlagsService} from "../../../../services/featureFlag/feature-flags.service";
14 import {getTestBed, TestBed} from "@angular/core/testing";
15 import {UpgradeFormControlNames, VfModuleUpgradePopupService} from "./vfModule.upgrade.popuop.service";
16 import {SharedTreeService} from "../../../../../drawingBoard/service-planning/objectsToTree/shared.tree.service";
17 import {AppState} from "../../../../store/reducers";
18 import {instance, mock} from "ts-mockito";
19 import {GeneralActions} from "../../../../storeUtil/utils/general/general.actions";
20 import {VfModuleActions} from "../../../../storeUtil/utils/vfModule/vfModule.actions";
21 import {ServiceActions} from "../../../../storeUtil/utils/service/service.actions";
23 class MockModalService<T> {}
25 class MockAppStore<T> {}
27 class MockReduxStore<T> {
34 class MockFeatureFlagsService {}
36 describe('VFModule popup service', () => {
38 let service: VfModuleUpgradePopupService;
39 let genericFormService: GenericFormService;
40 let defaultDataGeneratorService: DefaultDataGeneratorService;
42 let iframeService: IframeService;
43 let store : NgRedux<AppState>;
45 beforeAll(done => (async () => {
46 TestBed.configureTestingModule({
48 VfModuleUpgradePopupService,
49 BasicControlGenerator,
50 VfModuleControlGenerator,
51 DefaultDataGeneratorService,
59 {provide: FeatureFlagsService, useClass: MockFeatureFlagsService},
60 {provide: NgRedux, useClass: MockReduxStore},
61 {provide: HttpClient, useClass: MockAppStore},
62 {provide: SdcUiServices.ModalService, useClass: MockModalService}
65 await TestBed.compileComponents();
67 injector = getTestBed();
68 service = injector.get(VfModuleUpgradePopupService);
69 genericFormService = injector.get(GenericFormService);
70 defaultDataGeneratorService = injector.get(DefaultDataGeneratorService);
71 fb = injector.get(FormBuilder);
72 iframeService = injector.get(IframeService);
73 store = injector.get(NgRedux);
74 })().then(done).catch(done.fail));
76 test('getTitle should return the correct title', () => {
77 expect(service.getTitle()).toBe("Upgrade Module")
80 test('get controls should return retainAssignments control with true i', ()=> {
82 const controls = service.getControls();
83 expect(controls.length).toEqual(3);
85 const retainAssignmentsControl = controls.find((control)=>{
86 return control.controlName === UpgradeFormControlNames.RETAIN_ASSIGNMENTS;
89 expect(retainAssignmentsControl).toBeDefined();
90 expect(retainAssignmentsControl.value).toBeTruthy();
92 const retainVolumeGroup = controls.find((control)=>{
93 return control.controlName === UpgradeFormControlNames.RETAIN_VOLUME_GROUPS;
96 expect(retainVolumeGroup).toBeDefined();
97 expect(retainVolumeGroup.value).toBeTruthy();
100 test('on submit should call merge action of form value to vfModule', () => {
101 const serviceId = "serviceId5";
102 const vnfStoreKey = 'vnfStoreKey3';
103 const modelName = 'modelA';
104 const dynamicModelName = 'dynamicModel';
122 removeClassCloseModal : jest.fn()
126 let mockFrom: FormGroup = mock(FormGroup);
127 let form = instance(mockFrom);
133 spyOn(store, 'dispatch');
136 service.onSubmit(that, form);
139 expect(store.dispatch).toBeCalledWith(
140 {type: GeneralActions.MERGE_OBJECT_BY_PATH, path: ['serviceInstance', serviceId, 'vnfs', vnfStoreKey, 'vfModules',modelName, dynamicModelName], payload:form.value});
141 expect(store.dispatch).toBeCalledWith(
142 {type: VfModuleActions.UPGRADE_VFMODULE, dynamicModelName: "dynamicModel", modelName: "modelA", serviceId: "serviceId5", vnfStoreKey: "vnfStoreKey3"});
143 expect(store.dispatch).toBeCalledWith({type: ServiceActions.UPGRADE_SERVICE_ACTION, serviceUuid: "serviceId5"});
148 test( 'get controls should return usePreload with false value', () => {
149 const controls = service.getControls();
150 const usePreloadControl = controls.find((control)=>{
151 return control.controlName === 'sdncPreLoad';
153 expect(usePreloadControl).toBeDefined();
154 expect(usePreloadControl.value).toBeFalsy();