[SI-92] unit tests and small refactorings (string to enum)

Signed-off-by: Peter Buschmann <peter.buschmann@pta.de>
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.spec.ts b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.spec.ts
index 8fb8236..a87b89d 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.spec.ts
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.spec.ts
@@ -16,7 +16,8 @@
 import { GridFailureSandbox } from '@grid-failure-information-app/pages/grid-failure/grid-failure-list/grid-failure.sandbox';
 import { Subscription, of, Subject } from 'rxjs';
 import { UtilService } from '@grid-failure-information-app/shared/utility';
-import { RolesEnum } from '@grid-failure-information-app/shared/constants/enums';
+import { StateEnum } from '@grid-failure-information-app/shared/constants/enums';
+import { MapOptions } from '@openk-libs/grid-failure-information-map/shared/models/map-options.model';
 
 describe('GridFailureListComponent ', () => {
   let component: GridFailureListComponent;
@@ -29,6 +30,7 @@
   let _gridApi: any;
   let filterInstance: any;
   let preConfig$: any;
+  let mapOptions: MapOptions;
 
   beforeEach(() => {
     router = { navigate() {} } as any;
@@ -48,7 +50,8 @@
     utilService = {
       displayNotification() {},
     } as any;
-    appState$ = { dispatch: () => {}, pipe: () => of(true), select: () => of(true) } as any;
+    mapOptions = new MapOptions();
+    appState$ = { dispatch: () => {}, pipe: () => of(true), select: () => of() } as any;
     preConfig$ = of({ visibilityConfiguration: { fieldVisibility: {} } });
     subscription = { unsubscribe() {} } as any;
     _gridApi = { onFilterChanged() {}, setFilterModel(model: any) {} } as any;
@@ -66,11 +69,37 @@
     expect(component).toBeTruthy();
   });
 
-  it('should call appropriate functions for edit event', () => {
+  it('should call appropriate functions for edit event and ngOnInit', () => {
+    mapOptions.visibilityConfiguration = { fieldVisibility: { failureClassification: 'show' } } as any;
+    appState$ = { dispatch: () => {}, pipe: () => of(true), select: () => of(mapOptions as any) } as any;
+    component = new GridFailureListComponent(sandbox, appState$, router, utilService);
     const spy: any = spyOn(router, 'navigate');
     component.ngOnInit();
     component.gridOptions.context.eventSubject.next({ type: 'edit', data: new GridFailure() });
     expect(spy).toHaveBeenCalled();
+    expect(component.overviewColumnDefinition).toBeDefined();
+    expect(component.condensationColumnDefinition).toBeDefined();
+  });
+
+  it('should not define column definitions without configuration', () => {
+    mapOptions.visibilityConfiguration = null;
+    appState$ = { dispatch: () => {}, pipe: () => of(true), select: () => of(mapOptions as any) } as any;
+    component = new GridFailureListComponent(sandbox, appState$, router, utilService);
+
+    component.ngOnInit();
+    expect(component.overviewColumnDefinition).not.toBeDefined();
+    expect(component.condensationColumnDefinition).not.toBeDefined();
+  });
+
+  it('should pass external filter if the appropriate conditions are met', () => {
+    let node: any = { data: { publicationStatus: StateEnum.PUBLISHED } };
+    component.sandbox.publisherFilterIsActive = true;
+    expect(component.doesExternalFilterPass(node)).toBeTruthy();
+  });
+
+  it('should should not pass external filter if the appropriate conditions are not met', () => {
+    let node: any;
+    expect(component.doesExternalFilterPass(node)).toBeFalsy();
   });
 
   it('should call appropriate functions for add event', () => {
diff --git a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.ts b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.ts
index bdad0ac..bce0240 100644
--- a/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.ts
+++ b/projects/grid-failure-information-app/src/app/pages/grid-failure/grid-failure-list/grid-failure-list.component.ts
@@ -24,7 +24,7 @@
 import { Subject } from 'rxjs';
 import { takeUntil, take, delay } from 'rxjs/operators';
 import { Globals } from '@grid-failure-information-app/shared/constants/globals';
-import { RolesEnum } from '@grid-failure-information-app/shared/constants/enums';
+import { RolesEnum, VisibilityEnum } from '@grid-failure-information-app/shared/constants/enums';
 import { MapOptions } from '@openk-libs/grid-failure-information-map/shared/models/map-options.model';
 import * as store from '@grid-failure-information-app/shared/store';
 import { Store } from '@ngrx/store';
@@ -38,6 +38,7 @@
 export class GridFailureListComponent extends BaseList implements OnInit, OnDestroy {
   public Globals = Globals;
   public RolesEnum = RolesEnum;
+  public VisibilityEnum = VisibilityEnum;
   public overviewColumnDefinition: any;
   public condensationColumnDefinition: any;
   public mapOptions: MapOptions = new MapOptions();
@@ -70,11 +71,11 @@
       this.mapOptions = new MapOptions(mapConfig);
       if (mapConfig && mapConfig.visibilityConfiguration) {
         GRID_FAILURE_COLDEF.forEach((column: any) => {
-          column['hide'] = mapConfig.visibilityConfiguration.fieldVisibility[column['field']] === 'hide';
+          column['hide'] = mapConfig.visibilityConfiguration.fieldVisibility[column['field']] === VisibilityEnum.HIDE;
         });
         this.overviewColumnDefinition = GRID_FAILURE_COLDEF;
         GRID_FAILURE_FOR_CONDENSATION_COLDEF.forEach((column: any) => {
-          column['hide'] = mapConfig.visibilityConfiguration.fieldVisibility[column['field']] === 'hide';
+          column['hide'] = mapConfig.visibilityConfiguration.fieldVisibility[column['field']] === VisibilityEnum.HIDE;
         });
         this.condensationColumnDefinition = GRID_FAILURE_FOR_CONDENSATION_COLDEF;
       }
diff --git a/projects/grid-failure-information-app/src/app/shared/constants/enums.ts b/projects/grid-failure-information-app/src/app/shared/constants/enums.ts
index e40107b..900f65a 100644
--- a/projects/grid-failure-information-app/src/app/shared/constants/enums.ts
+++ b/projects/grid-failure-information-app/src/app/shared/constants/enums.ts
@@ -30,10 +30,10 @@
   VE = 'veröffentlicht',
 }
 
-export enum DistributionPublicationStatusEnum{
-  PUBLISH ='publish',
-  COMPLETE ='complete',
-  UPDATE ='update',
+export enum DistributionPublicationStatusEnum {
+  PUBLISH = 'publish',
+  COMPLETE = 'complete',
+  UPDATE = 'update',
 }
 
 export enum RolesEnum {
@@ -83,3 +83,8 @@
   DISTRICT_HEATING = 'F',
   SECONDARY_TECHNIQUE = 'ST',
 }
+
+export enum VisibilityEnum {
+  SHOW = 'show',
+  HIDE = 'hide',
+}
diff --git a/projects/grid-failure-information-app/src/app/shared/utility/utilityHelpers.ts b/projects/grid-failure-information-app/src/app/shared/utility/utilityHelpers.ts
index 534b7a1..becb2c7 100644
--- a/projects/grid-failure-information-app/src/app/shared/utility/utilityHelpers.ts
+++ b/projects/grid-failure-information-app/src/app/shared/utility/utilityHelpers.ts
@@ -16,6 +16,7 @@
 import { NgrxValueConverter, NgrxValueConverters } from 'ngrx-forms';
 import { FailureHousenumber } from '@grid-failure-information-app/shared/models';
 import { VisibilityConfigurationInterface } from '@grid-failure-information-app/shared/interfaces/visibility-configuration.interface';
+import { VisibilityEnum } from '@grid-failure-information-app/shared/constants/enums';
 
 /**
  * Returns formated date based on given culture
@@ -146,7 +147,7 @@
 
 export function determineDetailFieldVisibility(config: VisibilityConfigurationInterface, config_prop: string, field: string): boolean {
   if (config && config[config_prop]) {
-    return config[config_prop][field] === 'show';
+    return config[config_prop][field] === VisibilityEnum.SHOW;
   } else {
     return true;
   }
diff --git a/projects/grid-failure-information-table-app/src/app/app.component.ts b/projects/grid-failure-information-table-app/src/app/app.component.ts
index 3f8a179..d32526b 100644
--- a/projects/grid-failure-information-table-app/src/app/app.component.ts
+++ b/projects/grid-failure-information-table-app/src/app/app.component.ts
@@ -19,7 +19,7 @@
 import { Subscription } from 'rxjs';
 import { AppConfigService } from '@grid-failure-information-table-app/app/app-config.service';
 import { take } from 'rxjs/operators';
-import { VisibilityConfigurationInterface } from '@grid-failure-information-app/shared/interfaces/visibility-configuration.interface';
+import { VisibilityEnum } from '@grid-failure-information-app/shared/constants/enums';
 
 @Component({
   selector: 'app-root',
@@ -28,6 +28,7 @@
 })
 export class TableComponent implements OnInit, OnDestroy {
   public Globals = Globals;
+  public VisibilityEnum = VisibilityEnum;
   public columnDefs: any;
   public defaultColDef: any;
   public gridOptions: GridOptions;
@@ -59,7 +60,7 @@
         .subscribe((config: Settings) => {
           if (config && config.visibilityConfiguration) {
             APP_TABLE_COLDEF.forEach((column: any) => {
-              column['hide'] = config.visibilityConfiguration.tableExternColumnVisibility[column['field']] === 'hide';
+              column['hide'] = config.visibilityConfiguration.tableExternColumnVisibility[column['field']] === VisibilityEnum.HIDE;
             });
             this.columnDefs = APP_TABLE_COLDEF;
           }
diff --git a/projects/openk/grid-failure-information-map/src/constants/enums.ts b/projects/openk/grid-failure-information-map/src/constants/enums.ts
new file mode 100644
index 0000000..4a2096d
--- /dev/null
+++ b/projects/openk/grid-failure-information-map/src/constants/enums.ts
@@ -0,0 +1,16 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+export enum VisibilityEnum {
+  SHOW = 'show',
+  HIDE = 'hide',
+}
diff --git a/projects/openk/grid-failure-information-map/src/shared/utility/utilityHelpers.ts b/projects/openk/grid-failure-information-map/src/shared/utility/utilityHelpers.ts
index 33a24ec..0047680 100644
--- a/projects/openk/grid-failure-information-map/src/shared/utility/utilityHelpers.ts
+++ b/projects/openk/grid-failure-information-map/src/shared/utility/utilityHelpers.ts
@@ -10,8 +10,8 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
-
 import { VisibilityConfigurationInterface } from '@openk-libs/grid-failure-information-map/shared/models/visibility-configuration.interface';
+import { VisibilityEnum } from '@openk-libs/grid-failure-information-map/constants/enums';
 
 // Convert datetime from ISO to local string
 export function convertISOToLocalDateTime(value: string): string {
@@ -52,7 +52,7 @@
 
 export function determineDetailFieldVisibility(config: VisibilityConfigurationInterface, config_prop: string, field: string): boolean {
   if (config && config[config_prop]) {
-    return config[config_prop][field] === 'show';
+    return config[config_prop][field] === VisibilityEnum.SHOW;
   } else {
     return true;
   }