Quick fix for the expected class type in test
[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
26 class MockAppStore<T> {
27 }
28
29 let uuidData = {};
30
31 class MockReduxStore<T> {
32   getState() {
33     return {};
34   }
35
36   dispatch() {}
37 }
38
39 class MockFeatureFlagsService {
40 }
41
42 describe('VFModule popup service', () => {
43   let injector;
44   let service: VfModuleUpgradePopupService;
45   let genericFormService: GenericFormService;
46   let defaultDataGeneratorService: DefaultDataGeneratorService;
47   let fb: FormBuilder;
48   let iframeService: IframeService;
49   let store : NgRedux<AppState>;
50
51   beforeAll(done => (async () => {
52     TestBed.configureTestingModule({
53       providers: [
54         VfModuleUpgradePopupService,
55         BasicControlGenerator,
56         VfModuleControlGenerator,
57         DefaultDataGeneratorService,
58         GenericFormService,
59         FormBuilder,
60         IframeService,
61         AaiService,
62         LogService,
63         BasicPopupService,
64         SharedTreeService,
65         {provide: FeatureFlagsService, useClass: MockFeatureFlagsService},
66         {provide: NgRedux, useClass: MockReduxStore},
67         {provide: HttpClient, useClass: MockAppStore},
68         {provide: SdcUiServices.ModalService, useClass: MockModalService}
69       ]
70     });
71     await TestBed.compileComponents();
72
73     injector = getTestBed();
74     service = injector.get(VfModuleUpgradePopupService);
75     genericFormService = injector.get(GenericFormService);
76     defaultDataGeneratorService = injector.get(DefaultDataGeneratorService);
77     fb = injector.get(FormBuilder);
78     iframeService = injector.get(IframeService);
79     store = injector.get(NgRedux);
80
81   })().then(done).catch(done.fail));
82
83   test('getTitle should return the correct title', () => {
84     expect(service.getTitle()).toBe("Upgrade Module")
85   });
86
87   test('get controls should return retainAssignments control with false i', ()=> {
88
89     const controls = service.getControls('a', 'b', 'c', true);
90     expect(controls.length).toEqual(2);
91
92     const retainAssignmentsControl = controls.find((control)=>{
93       return control.controlName === UpgradeFormControlNames.RETAIN_ASSIGNMENTS;
94     });
95
96     expect(retainAssignmentsControl).toBeDefined();
97     expect(retainAssignmentsControl.value).toBeTruthy();
98
99
100     const retainVolumeGroup = controls.find((control)=>{
101       return control.controlName === UpgradeFormControlNames.RETAIN_VOLUME_GROUPS;
102     });
103
104     expect(retainVolumeGroup).toBeDefined();
105     expect(retainVolumeGroup.value).toBeTruthy();
106   });
107
108   test('on submit should call merge action of form value to vfModule', () => {
109
110     //given
111
112     const serviceId = "serviceId5";
113     const vnfStoreKey = 'vnfStoreKey3';
114     const modelName = 'modelA';
115     const dynamicModelName = 'dynamicModel';
116     const that = {
117       uuidData : {
118         vfModule : {
119           data : {
120             modelName,
121             dynamicModelName
122           },
123           parent : {
124             data: {
125               vnfStoreKey
126             }}},
127         serviceId
128       },
129       serviceModel: {
130         uuid : "someUuid"
131       },
132       _iframeService: {
133         removeClassCloseModal : jest.fn()
134       }
135     };
136
137     let mockFrom: FormGroup = mock(FormGroup);
138     let form = instance(mockFrom);
139     form.value = {
140       a: "value",
141       b: "another"
142     };
143
144     spyOn(store, 'dispatch');
145
146     //when
147     service.onSubmit(that, form);
148
149     //then
150     expect(store.dispatch).toBeCalledWith(
151       {type: GeneralActions.MERGE_OBJECT_BY_PATH, path: ['serviceInstance', serviceId, 'vnfs', vnfStoreKey, 'vfModules',modelName, dynamicModelName], payload:form.value});
152     expect(store.dispatch).toBeCalledWith(
153       {type: VfModuleActions.UPGRADE_VFMODULE, dynamicModelName: "dynamicModel", modelName: "modelA", serviceId: "serviceId5", vnfStoreKey: "vnfStoreKey3"});
154     expect(store.dispatch).toBeCalledWith({type: ServiceActions.UPGRADE_SERVICE_ACTION, serviceUuid: "serviceId5"});
155
156   });
157 });