allow platform multi-selection for network
[vid.git] / vid-webpack-master / src / app / shared / components / genericForm / formControlsServices / control.generator.util.service.spec.ts
1 import {getTestBed, TestBed} from '@angular/core/testing';
2 import {AaiService} from "../../../services/aaiService/aai.service";
3 import {FeatureFlagsService} from "../../../services/featureFlag/feature-flags.service";
4 import {ControlGeneratorUtil} from "./control.generator.util.service";
5 import {NgRedux} from '@angular-redux/store';
6 import each from "jest-each";
7 import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
8 import {FileFormControl} from "../../../models/formControlModels/fileFormControl.model";
9 import {AppState} from "../../../store/reducers";
10 import {SelectOption} from "../../../models/selectOption";
11 import {SharedControllersService} from "./sharedControlles/shared.controllers.service";
12
13 describe('Control Generator Util', () => {
14   let injector;
15   let service: ControlGeneratorUtil;
16   let sharedControllersService : SharedControllersService;
17   let httpMock: HttpTestingController;
18   let store: NgRedux<AppState>;
19
20
21   beforeAll(done => (async () => {
22     TestBed.configureTestingModule({
23       imports: [HttpClientTestingModule],
24       providers: [ControlGeneratorUtil,
25         SharedControllersService,
26         AaiService,
27         {provide:FeatureFlagsService, useClass: MockFeatureFlagsService},
28         {provide: NgRedux, useClass: MockAppStore}]
29     });
30     await TestBed.compileComponents();
31
32     injector = getTestBed();
33     service = injector.get(ControlGeneratorUtil);
34     httpMock = injector.get(HttpTestingController);
35     sharedControllersService = injector.get(SharedControllersService);
36     store = injector.get(NgRedux);
37
38   })().then(done).catch(done.fail));
39
40
41   test('given instance, get supp file from getSupplementaryFile ', () => {
42     const instance = {};
43     const suppFileForInstance: FileFormControl = service.getSupplementaryFile(instance);
44     expect(suppFileForInstance.isVisible).toBeTruthy();
45     expect(suppFileForInstance.hiddenFile.length).toBeGreaterThanOrEqual(1);
46     expect(suppFileForInstance.hiddenFile[0].validations[0].validatorName).toEqual("isFileTooBig");
47   });
48
49   test('concatSupplementaryFile add SupplementaryFile control and hidden file', () => {
50
51     //given
52     const instance = {};
53     const controls = [sharedControllersService.getLegacyRegion(instance)];
54     expect(controls).toHaveLength(1);
55
56     //when
57     const result = service.concatSupplementaryFile(controls, instance);
58
59     //then
60     expect(controls).toHaveLength(1); //original controls remain the same
61
62     expect(result.map((control) => {return control.controlName})).toEqual([
63       "legacyRegion",
64       "supplementaryFile",
65       "supplementaryFile_hidden",
66       "supplementaryFile_hidden_content"
67     ]);
68   });
69   each([
70     [null, false],
71     [{}, true]
72   ]).
73   test('retrieveInstanceIfUpdateMode returns %s if update mode is %s', (expected, isUpdateModalMode) => {
74     //given
75     const store= <any>{
76       getState() {
77         return {
78           global: {
79             isUpdateModalMode
80           }
81         }}};
82     const instance = {};
83
84     //when
85     let retrievedInstance = service.retrieveInstanceIfUpdateMode (store, instance);
86
87     //then
88     expect(retrievedInstance).toEqual(expected);
89
90   });
91
92   test('getRollBackOnFailureOptions', async (done)=> {
93     service.getRollBackOnFailureOptions().subscribe((rollBackOnFailureOptions : SelectOption[])=>{
94       expect(rollBackOnFailureOptions[0].id).toEqual('true');
95       expect(rollBackOnFailureOptions[0].name).toEqual('Rollback');
96       expect(rollBackOnFailureOptions[1].id).toEqual('false');
97       expect(rollBackOnFailureOptions[1].name).toEqual('Don\'t Rollback');
98       done();
99     });
100   });
101
102
103 });
104
105
106 class MockAppStore<T> {
107   getState() {
108     return {}
109   }
110 }
111
112 class MockFeatureFlagsService {}