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";
13 describe('Control Generator Util', () => {
15 let service: ControlGeneratorUtil;
16 let sharedControllersService : SharedControllersService;
17 let httpMock: HttpTestingController;
18 let store: NgRedux<AppState>;
21 beforeAll(done => (async () => {
22 TestBed.configureTestingModule({
23 imports: [HttpClientTestingModule],
24 providers: [ControlGeneratorUtil,
25 SharedControllersService,
27 {provide:FeatureFlagsService, useClass: MockFeatureFlagsService},
28 {provide: NgRedux, useClass: MockAppStore}]
30 await TestBed.compileComponents();
32 injector = getTestBed();
33 service = injector.get(ControlGeneratorUtil);
34 httpMock = injector.get(HttpTestingController);
35 sharedControllersService = injector.get(SharedControllersService);
36 store = injector.get(NgRedux);
38 })().then(done).catch(done.fail));
41 test('given instance, get supp file from getSupplementaryFile ', () => {
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");
49 test('concatSupplementaryFile add SupplementaryFile control and hidden file', () => {
53 const controls = [sharedControllersService.getLegacyRegion(instance)];
54 expect(controls).toHaveLength(1);
57 const result = service.concatSupplementaryFile(controls, instance);
60 expect(controls).toHaveLength(1); //original controls remain the same
62 expect(result.map((control) => {return control.controlName})).toEqual([
65 "supplementaryFile_hidden",
66 "supplementaryFile_hidden_content"
73 test('retrieveInstanceIfUpdateMode returns %s if update mode is %s', (expected, isUpdateModalMode) => {
85 let retrievedInstance = service.retrieveInstanceIfUpdateMode (store, instance);
88 expect(retrievedInstance).toEqual(expected);
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');
106 class MockAppStore<T> {
112 class MockFeatureFlagsService {}