summaryrefslogtreecommitdiffstats
path: root/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/control.generator.util.service.spec.ts
blob: 9aefa98b88b4f6da381aeca04fc8d57c8c4d2425 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import {getTestBed, TestBed} from '@angular/core/testing';
import {AaiService} from "../../../services/aaiService/aai.service";
import {FeatureFlagsService} from "../../../services/featureFlag/feature-flags.service";
import {ControlGeneratorUtil} from "./control.generator.util.service";
import {NgRedux} from '@angular-redux/store';
import each from "jest-each";
import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
import {FileFormControl} from "../../../models/formControlModels/fileFormControl.model";
import {AppState} from "../../../store/reducers";
import {SelectOption} from "../../../models/selectOption";
import {SharedControllersService} from "./sharedControlles/shared.controllers.service";

describe('Control Generator Util', () => {
  let injector;
  let service: ControlGeneratorUtil;
  let sharedControllersService : SharedControllersService;
  let httpMock: HttpTestingController;
  let store: NgRedux<AppState>;


  beforeAll(done => (async () => {
    TestBed.configureTestingModule({
      imports: [HttpClientTestingModule],
      providers: [ControlGeneratorUtil,
        SharedControllersService,
        AaiService,
        {provide:FeatureFlagsService, useClass: MockFeatureFlagsService},
        {provide: NgRedux, useClass: MockAppStore}]
    });
    await TestBed.compileComponents();

    injector = getTestBed();
    service = injector.get(ControlGeneratorUtil);
    httpMock = injector.get(HttpTestingController);
    sharedControllersService = injector.get(SharedControllersService);
    store = injector.get(NgRedux);

  })().then(done).catch(done.fail));


  test('given instance, get supp file from getSupplementaryFile ', () => {
    const instance = {};
    const suppFileForInstance: FileFormControl = service.getSupplementaryFile(instance);
    expect(suppFileForInstance.isVisible).toBeTruthy();
    expect(suppFileForInstance.hiddenFile.length).toBeGreaterThanOrEqual(1);
    expect(suppFileForInstance.hiddenFile[0].validations[0].validatorName).toEqual("isFileTooBig");
  });

  test('concatSupplementaryFile add SupplementaryFile control and hidden file', () => {

    //given
    const instance = {};
    const controls = [sharedControllersService.getLegacyRegion(instance)];
    expect(controls).toHaveLength(1);

    //when
    const result = service.concatSupplementaryFile(controls, instance);

    //then
    expect(controls).toHaveLength(1); //original controls remain the same

    expect(result.map((control) => {return control.controlName})).toEqual([
      "legacyRegion",
      "supplementaryFile",
      "supplementaryFile_hidden",
      "supplementaryFile_hidden_content"
    ]);
  });
  each([
    [null, false],
    [{}, true]
  ]).
  test('retrieveInstanceIfUpdateMode returns %s if update mode is %s', (expected, isUpdateModalMode) => {
    //given
    const store= <any>{
      getState() {
        return {
          global: {
            isUpdateModalMode
          }
        }}};
    const instance = {};

    //when
    let retrievedInstance = service.retrieveInstanceIfUpdateMode (store, instance);

    //then
    expect(retrievedInstance).toEqual(expected);

  });

  test('getRollBackOnFailureOptions', async (done)=> {
    service.getRollBackOnFailureOptions().subscribe((rollBackOnFailureOptions : SelectOption[])=>{
      expect(rollBackOnFailureOptions[0].id).toEqual('true');
      expect(rollBackOnFailureOptions[0].name).toEqual('Rollback');
      expect(rollBackOnFailureOptions[1].id).toEqual('false');
      expect(rollBackOnFailureOptions[1].name).toEqual('Don\'t Rollback');
      done();
    });
  });


});


class MockAppStore<T> {
  getState() {
    return {}
  }
}

class MockFeatureFlagsService {}