add sdnc checkbox to vfm upgrade modal
[vid.git] / vid-webpack-master / src / app / shared / components / genericFormPopup / genericFormServices / vfModuleUpgrade / vfModule.upgrade.popup.service.spec.ts
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";
22
23 class MockModalService<T> {}
24
25 class MockAppStore<T> {}
26
27 class MockReduxStore<T> {
28   getState() {
29     return {};
30   }
31   dispatch() {}
32 }
33
34 class MockFeatureFlagsService {}
35
36 describe('VFModule popup service', () => {
37   let injector;
38   let service: VfModuleUpgradePopupService;
39   let genericFormService: GenericFormService;
40   let defaultDataGeneratorService: DefaultDataGeneratorService;
41   let fb: FormBuilder;
42   let iframeService: IframeService;
43   let store : NgRedux<AppState>;
44
45   beforeAll(done => (async () => {
46     TestBed.configureTestingModule({
47       providers: [
48         VfModuleUpgradePopupService,
49         BasicControlGenerator,
50         VfModuleControlGenerator,
51         DefaultDataGeneratorService,
52         GenericFormService,
53         FormBuilder,
54         IframeService,
55         AaiService,
56         LogService,
57         BasicPopupService,
58         SharedTreeService,
59         {provide: FeatureFlagsService, useClass: MockFeatureFlagsService},
60         {provide: NgRedux, useClass: MockReduxStore},
61         {provide: HttpClient, useClass: MockAppStore},
62         {provide: SdcUiServices.ModalService, useClass: MockModalService}
63       ]
64     });
65     await TestBed.compileComponents();
66
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));
75
76   test('getTitle should return the correct title', () => {
77     expect(service.getTitle()).toBe("Upgrade Module")
78   });
79
80   test('get controls should return retainAssignments control with true i', ()=> {
81
82     const controls = service.getControls();
83     expect(controls.length).toEqual(3);
84
85     const retainAssignmentsControl = controls.find((control)=>{
86       return control.controlName === UpgradeFormControlNames.RETAIN_ASSIGNMENTS;
87     });
88
89     expect(retainAssignmentsControl).toBeDefined();
90     expect(retainAssignmentsControl.value).toBeTruthy();
91
92     const retainVolumeGroup = controls.find((control)=>{
93       return control.controlName === UpgradeFormControlNames.RETAIN_VOLUME_GROUPS;
94     });
95
96     expect(retainVolumeGroup).toBeDefined();
97     expect(retainVolumeGroup.value).toBeTruthy();
98   });
99
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';
105     const that = {
106       uuidData : {
107         vfModule : {
108           data : {
109             modelName,
110             dynamicModelName
111           },
112           parent : {
113             data: {
114               vnfStoreKey
115             }}},
116         serviceId
117       },
118       serviceModel: {
119         uuid : "someUuid"
120       },
121       _iframeService: {
122         removeClassCloseModal : jest.fn()
123       }
124     };
125
126     let mockFrom: FormGroup = mock(FormGroup);
127     let form = instance(mockFrom);
128     form.setValue({
129       a: "value",
130       b: "another"
131     });
132
133     spyOn(store, 'dispatch');
134
135     //when
136     service.onSubmit(that, form);
137
138     //then
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"});
144
145   });
146
147
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';
152     });
153     expect(usePreloadControl).toBeDefined();
154     expect(usePreloadControl.value).toBeFalsy();
155   });
156 });