1 import {LogService} from "../../../../utils/log/log.service";
 
   2 import {NgRedux} from "@angular-redux/store";
 
   3 import {BasicControlGenerator, SDN_C_PRE_LOAD, SUPPLEMENTARY_FILE} 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> {
 
  38                       supplementaryFileName: "myFileName"
 
  46 class MockFeatureFlagsService {}
 
  48 describe('VFModule popup service', () => {
 
  50   let service: VfModuleUpgradePopupService;
 
  51   let genericFormService: GenericFormService;
 
  52   let defaultDataGeneratorService: DefaultDataGeneratorService;
 
  54   let iframeService: IframeService;
 
  55   let store : NgRedux<AppState>;
 
  57   beforeAll(done => (async () => {
 
  58     TestBed.configureTestingModule({
 
  60         VfModuleUpgradePopupService,
 
  61         BasicControlGenerator,
 
  62         VfModuleControlGenerator,
 
  63         DefaultDataGeneratorService,
 
  71         {provide: FeatureFlagsService, useClass: MockFeatureFlagsService},
 
  72         {provide: NgRedux, useClass: MockReduxStore},
 
  73         {provide: HttpClient, useClass: MockAppStore},
 
  74         {provide: SdcUiServices.ModalService, useClass: MockModalService}
 
  77     await TestBed.compileComponents();
 
  79     injector = getTestBed();
 
  80     service = injector.get(VfModuleUpgradePopupService);
 
  81     genericFormService = injector.get(GenericFormService);
 
  82     defaultDataGeneratorService = injector.get(DefaultDataGeneratorService);
 
  83     fb = injector.get(FormBuilder);
 
  84     iframeService = injector.get(IframeService);
 
  85     store = injector.get(NgRedux);
 
  87       modelName: 'vfModuleName',
 
  88       vFModuleStoreKey: 'vfModuleId'
 
  91   })().then(done).catch(done.fail));
 
  93   test('getTitle should return the correct title', () => {
 
  94     expect(service.getTitle()).toBe("Upgrade Module")
 
  97   function findControlByName(controls, controlName) {
 
  98     return controls.find((control) => {
 
  99       return control.controlName === controlName;
 
 103   function getControlByNameAndCheckValue(controlName, expectedValue ) {
 
 104     const controls = service.getControls('serviceId', 'vnfStoreKey', 'vfModuleId', true);
 
 105     const control = findControlByName(controls, controlName);
 
 106     expect(control).toBeDefined();
 
 107     expect(control.value).toEqual(expectedValue);
 
 110   test('get controls should return retainAssignments control with true value', ()=> {
 
 111     getControlByNameAndCheckValue(UpgradeFormControlNames.RETAIN_ASSIGNMENTS, true);
 
 114   test('get controls should return retainVolumeGroup control with true value', ()=> {
 
 115     getControlByNameAndCheckValue(UpgradeFormControlNames.RETAIN_VOLUME_GROUPS, true);
 
 118   test('get controls should contain SUPPLEMENTARY_FILE controller', ()=> {
 
 121     const controls = service.getControls('serviceId', 'vnfStoreKey', 'vfModuleId', true);
 
 124     const control = findControlByName(controls, SUPPLEMENTARY_FILE);
 
 125     expect(control).toBeDefined();
 
 126     expect(control.selectedFile).toBe("myFileName");
 
 129   test('on submit should call merge action of form value to vfModule', () => {
 
 133     const serviceId = "serviceId5";
 
 134     const vnfStoreKey = 'vnfStoreKey3';
 
 135     const modelName = 'modelA';
 
 136     const dynamicModelName = 'dynamicModel';
 
 154         removeClassCloseModal : jest.fn()
 
 158     let mockFrom: FormGroup = mock(FormGroup);
 
 159     let form = instance(mockFrom);
 
 165       supplementaryFile_hidden_content : {
 
 166         value: '{"c": "c", "d": 1}'
 
 168       supplementaryFile_hidden : {
 
 175     let expectedMergePayload = {
 
 178       supplementaryFileContent: {c: "c", d: 1},
 
 179       supplementaryFileName: "name"
 
 182     spyOn(store, 'dispatch');
 
 185     service.onSubmit(that, form);
 
 188     expect(store.dispatch).toBeCalledWith(
 
 189       {type: GeneralActions.MERGE_OBJECT_BY_PATH, path: ['serviceInstance', serviceId, 'vnfs', vnfStoreKey, 'vfModules',modelName, dynamicModelName], payload:expectedMergePayload});
 
 190     expect(store.dispatch).toBeCalledWith(
 
 191       {type: VfModuleActions.UPGRADE_VFMODULE, dynamicModelName: "dynamicModel", modelName: "modelA", serviceId: "serviceId5", vnfStoreKey: "vnfStoreKey3"});
 
 192     expect(store.dispatch).toBeCalledWith({type: ServiceActions.UPGRADE_SERVICE_ACTION, serviceUuid: "serviceId5"});
 
 197   test( 'get controls should return usePreload with false value', () => {
 
 198     getControlByNameAndCheckValue(SDN_C_PRE_LOAD, false);