You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metron.apache.org by ce...@apache.org on 2018/07/02 15:07:46 UTC

metron git commit: METRON-1636: Fix broken unit test setup in metron-alerts closes apache/incubator-metron#1085

Repository: metron
Updated Branches:
  refs/heads/master be9a92198 -> fc9ff8536


METRON-1636: Fix broken unit test setup in metron-alerts closes apache/incubator-metron#1085


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/fc9ff853
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/fc9ff853
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/fc9ff853

Branch: refs/heads/master
Commit: fc9ff85368c2a974d30ad6ccdb73a4cc26fd025c
Parents: be9a921
Author: tiborm <ti...@gmail.com>
Authored: Mon Jul 2 11:07:28 2018 -0400
Committer: cstella <ce...@gmail.com>
Committed: Mon Jul 2 11:07:28 2018 -0400

----------------------------------------------------------------------
 metron-interface/metron-alerts/.gitignore       |  1 +
 metron-interface/metron-alerts/karma.conf.js    |  2 +-
 .../alert-filters.component.spec.ts             | 14 ++++--
 .../table-view/table-view.component.spec.ts     | 49 ++++++++++++++++----
 .../table-view/table-view.component.ts          |  8 +---
 .../tree-view/tree-view.component.spec.ts       | 32 ++++++++++++-
 .../tree-view/tree-view.component.ts            |  6 +--
 .../configure-rows.component.spec.ts            | 18 ++++++-
 .../save-search/save-search.component.spec.ts   | 16 +++++++
 .../saved-searches.component.spec.ts            | 27 ++++++++++-
 .../metron-alerts/src/app/app.component.spec.ts | 26 ++++++++++-
 .../src/app/login/login.component.spec.ts       | 40 +++++++++-------
 .../shared/collapse/collapse.component.spec.ts  | 12 ++++-
 .../app/shared/collapse/collapse.component.ts   |  2 +-
 .../date-picker/date-picker.component.spec.ts   |  4 ++
 .../directives/alert-search.directive.spec.ts   | 21 ---------
 .../alert-severity-hexagon.directive.spec.ts    |  5 +-
 .../directives/nav-content.directive.spec.ts    |  6 ++-
 .../list-group/list-group.component.spec.ts     |  2 +-
 .../metron-sorter.component.spec.ts             | 14 +++---
 .../metron-table-pagination.component.spec.ts   |  2 +-
 .../shared/pipes/center-ellipses.pipe.spec.ts   |  2 +-
 .../pipes/column-name-translate.pipe.spec.ts    |  2 +-
 .../src/app/shared/pipes/map-keys.pipe.spec.ts  |  2 +-
 .../app/shared/switch/switch.component.spec.ts  |  2 +-
 .../time-range/time-range.component.spec.ts     | 12 ++++-
 26 files changed, 241 insertions(+), 86 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/.gitignore
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/.gitignore b/metron-interface/metron-alerts/.gitignore
index 0667762..703c7a9 100644
--- a/metron-interface/metron-alerts/.gitignore
+++ b/metron-interface/metron-alerts/.gitignore
@@ -3,3 +3,4 @@
 metron-alerts.iml
 node_modules/
 /dist/
+coverage

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/karma.conf.js
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/karma.conf.js b/metron-interface/metron-alerts/karma.conf.js
index ca1c3d2..f245e1d 100644
--- a/metron-interface/metron-alerts/karma.conf.js
+++ b/metron-interface/metron-alerts/karma.conf.js
@@ -42,7 +42,7 @@ module.exports = function (config) {
       'text/x-typescript': ['ts','tsx']
     },
     coverageIstanbulReporter: {
-      reports: [ 'html', 'lcovonly' ],
+      reports: [ 'html', 'lcovonly', 'text-summary' ],
       fixWebpackSourcePaths: true
     },
     angularCli: {

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/alerts/alerts-list/alert-filters/alert-filters.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/alerts/alerts-list/alert-filters/alert-filters.component.spec.ts b/metron-interface/metron-alerts/src/app/alerts/alerts-list/alert-filters/alert-filters.component.spec.ts
index 54fa4bf..7cbcdcc 100644
--- a/metron-interface/metron-alerts/src/app/alerts/alerts-list/alert-filters/alert-filters.component.spec.ts
+++ b/metron-interface/metron-alerts/src/app/alerts/alerts-list/alert-filters/alert-filters.component.spec.ts
@@ -1,6 +1,9 @@
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 
+import { CollapseComponent } from '../../../shared/collapse/collapse.component';
 import { AlertFiltersComponent } from './alert-filters.component';
+import { CenterEllipsesPipe } from '../../../shared/pipes/center-ellipses.pipe';
+import { ColumnNameTranslatePipe } from '../../../shared/pipes/column-name-translate.pipe';
 
 describe('AlertFiltersComponent', () => {
   let component: AlertFiltersComponent;
@@ -8,16 +11,19 @@ describe('AlertFiltersComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ AlertFiltersComponent ]
+      declarations: [ 
+        CollapseComponent,
+        CenterEllipsesPipe,
+        ColumnNameTranslatePipe,
+        AlertFiltersComponent,
+      ]
     })
     .compileComponents();
-  }));
 
-  beforeEach(() => {
     fixture = TestBed.createComponent(AlertFiltersComponent);
     component = fixture.componentInstance;
     fixture.detectChanges();
-  });
+  }));
 
   it('should be created', () => {
     expect(component).toBeTruthy();

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/alerts/alerts-list/table-view/table-view.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/alerts/alerts-list/table-view/table-view.component.spec.ts b/metron-interface/metron-alerts/src/app/alerts/alerts-list/table-view/table-view.component.spec.ts
index b4611e9..84ed557 100644
--- a/metron-interface/metron-alerts/src/app/alerts/alerts-list/table-view/table-view.component.spec.ts
+++ b/metron-interface/metron-alerts/src/app/alerts/alerts-list/table-view/table-view.component.spec.ts
@@ -1,24 +1,57 @@
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { Component, Input } from '@angular/core';
+import { HttpModule } from '@angular/http';
 
 import { TableViewComponent } from './table-view.component';
+import { MetronTableDirective } from '../../../shared/metron-table/metron-table.directive';
+import { MetronSorterComponent } from '../../../shared/metron-table/metron-sorter';
+import { CenterEllipsesPipe } from '../../../shared/pipes/center-ellipses.pipe';
+import { ColumnNameTranslatePipe } from '../../../shared/pipes/column-name-translate.pipe';
+import { AlertSeverityDirective } from '../../../shared/directives/alert-severity.directive';
+import { MetronDialogBox } from '../../../shared/metron-dialog-box';
+import { SearchService } from '../../../service/search.service';
+import { UpdateService } from '../../../service/update.service';
+import { GlobalConfigService } from '../../../service/global-config.service';
+import { MetaAlertService } from '../../../service/meta-alert.service';
+
+@Component({selector: 'metron-table-pagination', template: ''})
+class MetronTablePaginationComponent {
+  @Input() pagination = 0;
+}
 
 describe('TableViewComponent', () => {
   let component: TableViewComponent;
   let fixture: ComponentFixture<TableViewComponent>;
 
   beforeEach(async(() => {
+    // FIXME: mock all the unnecessary dependencies 
     TestBed.configureTestingModule({
-      declarations: [ TableViewComponent ]
+      imports: [ HttpModule ],
+      providers: [
+        SearchService,
+        UpdateService,
+        GlobalConfigService,
+        MetaAlertService,
+        MetronDialogBox,
+      ],
+      declarations: [ 
+        MetronTableDirective,
+        MetronSorterComponent,
+        CenterEllipsesPipe,
+        ColumnNameTranslatePipe,
+        AlertSeverityDirective,
+        MetronTablePaginationComponent,
+        TableViewComponent,
+      ]
     })
-    .compileComponents();
+    .compileComponents()
+    .then(() => {
+      fixture = TestBed.createComponent(TableViewComponent);
+      component = fixture.componentInstance;
+      fixture.detectChanges();  
+    });
   }));
 
-  beforeEach(() => {
-    fixture = TestBed.createComponent(TableViewComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
   it('should be created', () => {
     expect(component).toBeTruthy();
   });

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/alerts/alerts-list/table-view/table-view.component.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/alerts/alerts-list/table-view/table-view.component.ts b/metron-interface/metron-alerts/src/app/alerts/alerts-list/table-view/table-view.component.ts
index 4d915cd..91cae3e 100644
--- a/metron-interface/metron-alerts/src/app/alerts/alerts-list/table-view/table-view.component.ts
+++ b/metron-interface/metron-alerts/src/app/alerts/alerts-list/table-view/table-view.component.ts
@@ -17,7 +17,6 @@
  */
 
 import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges, OnInit, OnDestroy } from '@angular/core';
-import {Router} from '@angular/router';
 import { Subscription } from 'rxjs/Rx';
 
 import {Pagination} from '../../../model/pagination';
@@ -30,8 +29,6 @@ import {QueryBuilder} from '../query-builder';
 import {Sort} from '../../../utils/enums';
 import {Filter} from '../../../model/filter';
 import {AlertSource} from '../../../model/alert-source';
-import {PatchRequest} from '../../../model/patch-request';
-import {Patch} from '../../../model/patch';
 import {UpdateService} from '../../../service/update.service';
 import {MetaAlertService} from '../../../service/meta-alert.service';
 import {MetaAlertAddRemoveRequest} from '../../../model/meta-alert-add-remove-request';
@@ -50,7 +47,6 @@ export enum MetronAlertDisplayState {
 
 export class TableViewComponent implements OnInit, OnChanges, OnDestroy {
 
-  router: Router;
   searchService: SearchService;
   updateService: UpdateService;
   isStatusFieldPresent = false;
@@ -75,13 +71,11 @@ export class TableViewComponent implements OnInit, OnChanges, OnDestroy {
   @Output() onShowConfigureTable = new EventEmitter<Alert>();
   @Output() onSelectedAlertsChange = new EventEmitter< Alert[]>();
 
-  constructor(router: Router,
-              searchService: SearchService,
+  constructor(searchService: SearchService,
               metronDialogBox: MetronDialogBox,
               updateService: UpdateService,
               metaAlertService: MetaAlertService,
               globalConfigService: GlobalConfigService) {
-    this.router = router;
     this.searchService = searchService;
     this.metronDialogBox = metronDialogBox;
     this.updateService = updateService;

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/alerts/alerts-list/tree-view/tree-view.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/alerts/alerts-list/tree-view/tree-view.component.spec.ts b/metron-interface/metron-alerts/src/app/alerts/alerts-list/tree-view/tree-view.component.spec.ts
index 8a50404..c11cd2f 100644
--- a/metron-interface/metron-alerts/src/app/alerts/alerts-list/tree-view/tree-view.component.spec.ts
+++ b/metron-interface/metron-alerts/src/app/alerts/alerts-list/tree-view/tree-view.component.spec.ts
@@ -1,6 +1,19 @@
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { HttpModule } from '@angular/http';
 
 import { TreeViewComponent } from './tree-view.component';
+import { AlertSeverityHexagonDirective } from '../../../shared/directives/alert-severity-hexagon.directive';
+import { CenterEllipsesPipe } from '../../../shared/pipes/center-ellipses.pipe';
+import { MetronTableDirective } from '../../../shared/metron-table/metron-table.directive';
+import { MetronSorterComponent } from '../../../shared/metron-table/metron-sorter';
+import { ColumnNameTranslatePipe } from '../../../shared/pipes/column-name-translate.pipe';
+import { AlertSeverityDirective } from '../../../shared/directives/alert-severity.directive';
+import { MetronTablePaginationComponent } from '../../../shared/metron-table/metron-table-pagination/metron-table-pagination.component';
+import { SearchService } from '../../../service/search.service';
+import { MetronDialogBox } from '../../../shared/metron-dialog-box';
+import { UpdateService } from '../../../service/update.service';
+import { GlobalConfigService } from '../../../service/global-config.service';
+import { MetaAlertService } from '../../../service/meta-alert.service';
 
 describe('TreeViewComponent', () => {
   let component: TreeViewComponent;
@@ -8,7 +21,24 @@ describe('TreeViewComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ TreeViewComponent ]
+      imports: [ HttpModule ],
+      providers: [
+        SearchService,
+        UpdateService,
+        GlobalConfigService,
+        MetaAlertService,
+        MetronDialogBox,
+      ],
+      declarations: [ 
+        MetronTableDirective,
+        MetronSorterComponent,
+        MetronTablePaginationComponent,
+        AlertSeverityHexagonDirective,
+        AlertSeverityDirective,
+        CenterEllipsesPipe,
+        ColumnNameTranslatePipe,
+        TreeViewComponent,
+      ]
     })
     .compileComponents();
   }));

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/alerts/alerts-list/tree-view/tree-view.component.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/alerts/alerts-list/tree-view/tree-view.component.ts b/metron-interface/metron-alerts/src/app/alerts/alerts-list/tree-view/tree-view.component.ts
index 7b2e62c..9a67cf2 100644
--- a/metron-interface/metron-alerts/src/app/alerts/alerts-list/tree-view/tree-view.component.ts
+++ b/metron-interface/metron-alerts/src/app/alerts/alerts-list/tree-view/tree-view.component.ts
@@ -17,7 +17,6 @@
  */
 
 import { Component, OnInit, OnChanges, SimpleChanges, OnDestroy, Input } from '@angular/core';
-import {Router} from '@angular/router';
 import {Subscription, Observable} from 'rxjs/Rx';
 
 import {TableViewComponent} from '../table-view/table-view.component';
@@ -55,13 +54,12 @@ export class TreeViewComponent extends TableViewComponent implements OnInit, OnC
   alertsChangedSubscription: Subscription;
   configSubscription: Subscription;
 
-  constructor(router: Router,
-              searchService: SearchService,
+  constructor(searchService: SearchService,
               metronDialogBox: MetronDialogBox,
               updateService: UpdateService,
               metaAlertService: MetaAlertService,
               globalConfigService: GlobalConfigService) {
-    super(router, searchService, metronDialogBox, updateService, metaAlertService, globalConfigService);
+    super(searchService, metronDialogBox, updateService, metaAlertService, globalConfigService);
   }
 
   addAlertChangedListner() {

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/alerts/configure-rows/configure-rows.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/alerts/configure-rows/configure-rows.component.spec.ts b/metron-interface/metron-alerts/src/app/alerts/configure-rows/configure-rows.component.spec.ts
index 65b704a..b4a307f 100644
--- a/metron-interface/metron-alerts/src/app/alerts/configure-rows/configure-rows.component.spec.ts
+++ b/metron-interface/metron-alerts/src/app/alerts/configure-rows/configure-rows.component.spec.ts
@@ -16,8 +16,14 @@
  * limitations under the License.
  */
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { Injectable } from '@angular/core';
 
 import { ConfigureRowsComponent } from './configure-rows.component';
+import { ConfigureTableService } from '../../service/configure-table.service';
+import { SwitchComponent } from '../../shared/switch/switch.component';
+
+@Injectable()
+class ConfigureTableServiceStub {}
 
 describe('ConfigureRowsComponent', () => {
   let component: ConfigureRowsComponent;
@@ -25,7 +31,13 @@ describe('ConfigureRowsComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ ConfigureRowsComponent ]
+      declarations: [ 
+        ConfigureRowsComponent,
+        SwitchComponent
+     ],
+      providers: [ 
+        { provide: ConfigureTableService, useValue: ConfigureTableServiceStub }  
+      ]
     })
     .compileComponents();
   }));
@@ -36,4 +48,8 @@ describe('ConfigureRowsComponent', () => {
     fixture.detectChanges();
   });
 
+  it('should be created', () => {
+    expect(component).toBeTruthy();
+  });
+
 });

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/alerts/save-search/save-search.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/alerts/save-search/save-search.component.spec.ts b/metron-interface/metron-alerts/src/app/alerts/save-search/save-search.component.spec.ts
index 3ff673d..b47caca 100644
--- a/metron-interface/metron-alerts/src/app/alerts/save-search/save-search.component.spec.ts
+++ b/metron-interface/metron-alerts/src/app/alerts/save-search/save-search.component.spec.ts
@@ -18,6 +18,10 @@
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 
 import { SaveSearchComponent } from './save-search.component';
+import { FormsModule } from '@angular/forms';
+import { Router } from '@angular/router';
+import { SaveSearchService } from '../../service/save-search.service';
+import { MetronDialogBox } from '../../shared/metron-dialog-box';
 
 describe('SaveSearchComponent', () => {
   let component: SaveSearchComponent;
@@ -25,6 +29,14 @@ describe('SaveSearchComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
+      imports: [
+        FormsModule
+      ],
+      providers: [
+        MetronDialogBox,
+        { provide: Router, useValue: {} },
+        { provide: SaveSearchService, useValue: {} }
+      ],
       declarations: [ SaveSearchComponent ]
     })
     .compileComponents();
@@ -35,4 +47,8 @@ describe('SaveSearchComponent', () => {
     component = fixture.componentInstance;
     fixture.detectChanges();
   });
+
+  it('should be created', () => {
+    expect(component).toBeTruthy();
+  });
 });

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/alerts/saved-searches/saved-searches.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/alerts/saved-searches/saved-searches.component.spec.ts b/metron-interface/metron-alerts/src/app/alerts/saved-searches/saved-searches.component.spec.ts
index 7794f4c..ce878ee 100644
--- a/metron-interface/metron-alerts/src/app/alerts/saved-searches/saved-searches.component.spec.ts
+++ b/metron-interface/metron-alerts/src/app/alerts/saved-searches/saved-searches.component.spec.ts
@@ -16,8 +16,16 @@
  * limitations under the License.
  */
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { Component, Input } from '@angular/core';
 
 import { SavedSearchesComponent } from './saved-searches.component';
+import { CollapseComponent } from '../../shared/collapse/collapse.component';
+import { CenterEllipsesPipe } from '../../shared/pipes/center-ellipses.pipe';
+import { ColumnNameTranslatePipe } from '../../shared/pipes/column-name-translate.pipe';
+import { Router } from '@angular/router';
+import { SaveSearchService } from '../../service/save-search.service';
+import { MetronDialogBox } from '../../shared/metron-dialog-box';
+import { Observable } from 'rxjs';
 
 describe('SavedSearchesComponent', () => {
   let component: SavedSearchesComponent;
@@ -25,7 +33,20 @@ describe('SavedSearchesComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ SavedSearchesComponent ]
+      providers: [
+        { provide: Router, useValue: {} },
+        { provide: SaveSearchService, useValue: {
+          listSavedSearches: jasmine.createSpy('listSavedSearches').and.returnValue(Observable.of([])),
+          listRecentSearches: jasmine.createSpy('listRecentSearches').and.returnValue(Observable.of([])),
+        } },
+        MetronDialogBox
+      ],
+      declarations: [ 
+        SavedSearchesComponent,
+        CollapseComponent,
+        CenterEllipsesPipe,
+        ColumnNameTranslatePipe
+       ]
     })
     .compileComponents();
   }));
@@ -35,4 +56,8 @@ describe('SavedSearchesComponent', () => {
     component = fixture.componentInstance;
     fixture.detectChanges();
   });
+
+  it('should be created', () => {
+    expect(component).toBeTruthy();
+  });
 });

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/app.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/app.component.spec.ts b/metron-interface/metron-alerts/src/app/app.component.spec.ts
index cfccb7d..8eee24a 100644
--- a/metron-interface/metron-alerts/src/app/app.component.spec.ts
+++ b/metron-interface/metron-alerts/src/app/app.component.spec.ts
@@ -15,17 +15,39 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import { TestBed, async } from '@angular/core/testing';
+import { TestBed, async, ComponentFixture } from '@angular/core/testing';
 
 import { AppComponent } from './app.component';
+import { Component } from '@angular/core';
+import { AuthenticationService } from './service/authentication.service';
+import { Observable } from 'rxjs';
+
+@Component({ selector: 'router-outlet', template: '' })
+class RouterOutletStubComponent {}
 
 describe('AppComponent', () => {
+  let component: AppComponent;
+  let fixture: ComponentFixture<AppComponent>;
+
   beforeEach(async(() => {
     TestBed.configureTestingModule({
+      providers: [
+        { provide: AuthenticationService, useValue: { onLoginEvent: Observable.of(true) } }
+      ],
       declarations: [
-        AppComponent
+        AppComponent,
+        RouterOutletStubComponent,
       ],
     }).compileComponents();
   }));
 
+  beforeEach(() => {
+    fixture = TestBed.createComponent(AppComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should be created', () => {
+    expect(component).toBeTruthy();
+  });
 });

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/login/login.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/login/login.component.spec.ts b/metron-interface/metron-alerts/src/app/login/login.component.spec.ts
index 0cf3554..e02b65f 100644
--- a/metron-interface/metron-alerts/src/app/login/login.component.spec.ts
+++ b/metron-interface/metron-alerts/src/app/login/login.component.spec.ts
@@ -15,12 +15,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import {async, inject, TestBed} from '@angular/core/testing';
-import {AuthenticationService} from '../service/authentication.service';
-import {LoginComponent} from './login.component';
+import { async, inject, TestBed } from '@angular/core/testing';
+import { AuthenticationService } from '../service/authentication.service';
+import { LoginComponent } from './login.component';
+import { ActivatedRoute, Params } from '@angular/router';
+import { Observable } from 'rxjs';
 
 class MockAuthenticationService {
-
   public login(username: string, password: string, onError): void {
     if (username === 'success') {
       onError({status: 200});
@@ -32,34 +33,39 @@ class MockAuthenticationService {
   }
 }
 
+class MockActivedRoutes {
+  queryParams: Observable<Params> = Observable.of({
+    sessionExpired: false
+  })
+}
+
 describe('LoginComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
       providers: [
         LoginComponent,
-        {provide: AuthenticationService, useClass: MockAuthenticationService}
+        { provide: AuthenticationService, useClass: MockAuthenticationService },
+        { provide: ActivatedRoute, useClass: MockActivedRoutes }
       ]
-    })
-      .compileComponents();
-
+    }).compileComponents();
   }));
 
-  it('can instantiate login component', inject([LoginComponent], (loginComponent: LoginComponent) => {
-      expect(loginComponent instanceof LoginComponent).toBe(true);
+  it('should be created', inject([LoginComponent], (loginComponent: LoginComponent) => {
+    expect(loginComponent instanceof LoginComponent).toBe(true);
   }));
 
-  it('can instantiate login component', inject([LoginComponent], (loginComponent: LoginComponent) => {
-    loginComponent.user = 'success';
-    loginComponent.password = 'success';
-    loginComponent.login();
-    expect(loginComponent.loginFailure).toEqual('');
-
+  it('should show login error msg if login fail', inject([LoginComponent], (loginComponent: LoginComponent) => {
     loginComponent.user = 'failure';
     loginComponent.password = 'failure';
     loginComponent.login();
     expect(loginComponent.loginFailure).toEqual('Login failed for failure');
-
   }));
 
+  it('should not show error msg if login success', inject([LoginComponent], (loginComponent: LoginComponent) => {
+    loginComponent.user = 'success';
+    loginComponent.password = 'success';
+    loginComponent.login();
+    expect(loginComponent.loginFailure).toEqual('');
+  }));
 });

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/shared/collapse/collapse.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/shared/collapse/collapse.component.spec.ts b/metron-interface/metron-alerts/src/app/shared/collapse/collapse.component.spec.ts
index f6f32d1..da8ddb6 100644
--- a/metron-interface/metron-alerts/src/app/shared/collapse/collapse.component.spec.ts
+++ b/metron-interface/metron-alerts/src/app/shared/collapse/collapse.component.spec.ts
@@ -18,6 +18,8 @@
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 
 import { CollapseComponent } from './collapse.component';
+import { CenterEllipsesPipe } from '../pipes/center-ellipses.pipe';
+import { ColumnNameTranslatePipe } from '../pipes/column-name-translate.pipe';
 
 describe('CollapseComponent', () => {
   let component: CollapseComponent;
@@ -25,7 +27,11 @@ describe('CollapseComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ CollapseComponent ]
+      declarations: [ 
+        CollapseComponent,
+        CenterEllipsesPipe,
+        ColumnNameTranslatePipe
+      ]
     })
     .compileComponents();
   }));
@@ -36,4 +42,8 @@ describe('CollapseComponent', () => {
     fixture.detectChanges();
   });
 
+  it('should be created', () => {
+    expect(component).toBeTruthy();
+  });
+
 });

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/shared/collapse/collapse.component.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/shared/collapse/collapse.component.ts b/metron-interface/metron-alerts/src/app/shared/collapse/collapse.component.ts
index 4d609df..cb368a4 100644
--- a/metron-interface/metron-alerts/src/app/shared/collapse/collapse.component.ts
+++ b/metron-interface/metron-alerts/src/app/shared/collapse/collapse.component.ts
@@ -18,7 +18,7 @@
 import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
 
 import 'bootstrap';
-import {CollapseComponentData} from './collapse-component-data';
+import { CollapseComponentData } from './collapse-component-data';
 
 @Component({
   selector: 'metron-collapse',

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/shared/date-picker/date-picker.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/shared/date-picker/date-picker.component.spec.ts b/metron-interface/metron-alerts/src/app/shared/date-picker/date-picker.component.spec.ts
index 994ac02..673e598 100644
--- a/metron-interface/metron-alerts/src/app/shared/date-picker/date-picker.component.spec.ts
+++ b/metron-interface/metron-alerts/src/app/shared/date-picker/date-picker.component.spec.ts
@@ -1,6 +1,7 @@
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 
 import { DatePickerComponent } from './date-picker.component';
+import { FormsModule } from '@angular/forms';
 
 describe('DatePickerComponent', () => {
   let component: DatePickerComponent;
@@ -8,6 +9,9 @@ describe('DatePickerComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
+      imports: [
+        FormsModule
+      ],
       declarations: [ DatePickerComponent ]
     })
     .compileComponents();

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/shared/directives/alert-search.directive.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/shared/directives/alert-search.directive.spec.ts b/metron-interface/metron-alerts/src/app/shared/directives/alert-search.directive.spec.ts
deleted file mode 100644
index f8debdb..0000000
--- a/metron-interface/metron-alerts/src/app/shared/directives/alert-search.directive.spec.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-describe('AlertSearchDirective', () => {
-
-});

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/shared/directives/alert-severity-hexagon.directive.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/shared/directives/alert-severity-hexagon.directive.spec.ts b/metron-interface/metron-alerts/src/app/shared/directives/alert-severity-hexagon.directive.spec.ts
index b1b3254..d0909b7 100644
--- a/metron-interface/metron-alerts/src/app/shared/directives/alert-severity-hexagon.directive.spec.ts
+++ b/metron-interface/metron-alerts/src/app/shared/directives/alert-severity-hexagon.directive.spec.ts
@@ -1,8 +1,9 @@
+import { ElementRef } from '@angular/core';
 import { AlertSeverityHexagonDirective } from './alert-severity-hexagon.directive';
 
 describe('AlertSeverityHexagonDirective', () => {
-  it('should create an instance', () => {
-    const directive = new AlertSeverityHexagonDirective();
+  it('should be created', () => {
+    const directive = new AlertSeverityHexagonDirective(new ElementRef({}));
     expect(directive).toBeTruthy();
   });
 });

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/shared/directives/nav-content.directive.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/shared/directives/nav-content.directive.spec.ts b/metron-interface/metron-alerts/src/app/shared/directives/nav-content.directive.spec.ts
index ec64f24..f3a7f2f 100644
--- a/metron-interface/metron-alerts/src/app/shared/directives/nav-content.directive.spec.ts
+++ b/metron-interface/metron-alerts/src/app/shared/directives/nav-content.directive.spec.ts
@@ -15,11 +15,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+import { ElementRef } from '@angular/core';
+
 import { NavContentDirective } from './nav-content.directive';
 
 describe('NavContentDirective', () => {
-  it('should create an instance', () => {
-    const directive = new NavContentDirective();
+  it('should be created', () => {
+    const directive = new NavContentDirective(new ElementRef({}));
     expect(directive).toBeTruthy();
   });
 });

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/shared/list-group/list-group.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/shared/list-group/list-group.component.spec.ts b/metron-interface/metron-alerts/src/app/shared/list-group/list-group.component.spec.ts
index f9916e6..de28efc 100644
--- a/metron-interface/metron-alerts/src/app/shared/list-group/list-group.component.spec.ts
+++ b/metron-interface/metron-alerts/src/app/shared/list-group/list-group.component.spec.ts
@@ -36,7 +36,7 @@ describe('ListGroupComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it('should be created', () => {
     expect(component).toBeTruthy();
   });
 });

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/shared/metron-table/metron-sorter/metron-sorter.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/shared/metron-table/metron-sorter/metron-sorter.component.spec.ts b/metron-interface/metron-alerts/src/app/shared/metron-table/metron-sorter/metron-sorter.component.spec.ts
index bec9378..d23e5a0 100644
--- a/metron-interface/metron-alerts/src/app/shared/metron-table/metron-sorter/metron-sorter.component.spec.ts
+++ b/metron-interface/metron-alerts/src/app/shared/metron-table/metron-sorter/metron-sorter.component.spec.ts
@@ -18,19 +18,21 @@
 /* tslint:disable:no-unused-variable */
 // directiveSelectorNameRule
 
-import {MetronSorterComponent} from './metron-sorter.component';
-import {MetronTableDirective} from '../metron-table.directive';
+import { ElementRef } from '@angular/core';
 
-describe('Component: MetronSorter', () => {
+import { MetronSorterComponent } from './metron-sorter.component';
+import { MetronTableDirective } from '../metron-table.directive';
 
-  it('should create an instance', () => {
-    let metronTable = new MetronTableDirective();
+describe('MetronSorterComponent', () => {
+
+  it('should be created', () => {
+    let metronTable = new MetronTableDirective(new ElementRef({}));
     let component = new MetronSorterComponent(metronTable);
     expect(component).toBeTruthy();
   });
 
   it('should set the variables according to sorter', () => {
-    let metronTable = new MetronTableDirective();
+    let metronTable = new MetronTableDirective(new ElementRef({}));
     let sorter1 = new MetronSorterComponent(metronTable);
     let sorter2 = new MetronSorterComponent(metronTable);
     let sorter3 = new MetronSorterComponent(metronTable);

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/shared/metron-table/metron-table-pagination/metron-table-pagination.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/shared/metron-table/metron-table-pagination/metron-table-pagination.component.spec.ts b/metron-interface/metron-alerts/src/app/shared/metron-table/metron-table-pagination/metron-table-pagination.component.spec.ts
index 3a519b6..edb78c9 100644
--- a/metron-interface/metron-alerts/src/app/shared/metron-table/metron-table-pagination/metron-table-pagination.component.spec.ts
+++ b/metron-interface/metron-alerts/src/app/shared/metron-table/metron-table-pagination/metron-table-pagination.component.spec.ts
@@ -36,7 +36,7 @@ describe('MetronTablePaginationComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it('should be created', () => {
     expect(component).toBeTruthy();
   });
 });

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/shared/pipes/center-ellipses.pipe.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/shared/pipes/center-ellipses.pipe.spec.ts b/metron-interface/metron-alerts/src/app/shared/pipes/center-ellipses.pipe.spec.ts
index 5a89426..c2196f3 100644
--- a/metron-interface/metron-alerts/src/app/shared/pipes/center-ellipses.pipe.spec.ts
+++ b/metron-interface/metron-alerts/src/app/shared/pipes/center-ellipses.pipe.spec.ts
@@ -18,7 +18,7 @@
 import { CenterEllipsesPipe } from './center-ellipses.pipe';
 
 describe('CenterEllipsesPipe', () => {
-  it('create an instance', () => {
+  it('should be created', () => {
     const pipe = new CenterEllipsesPipe();
     expect(pipe).toBeTruthy();
   });

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/shared/pipes/column-name-translate.pipe.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/shared/pipes/column-name-translate.pipe.spec.ts b/metron-interface/metron-alerts/src/app/shared/pipes/column-name-translate.pipe.spec.ts
index 4a4e0bf..13f97f9 100644
--- a/metron-interface/metron-alerts/src/app/shared/pipes/column-name-translate.pipe.spec.ts
+++ b/metron-interface/metron-alerts/src/app/shared/pipes/column-name-translate.pipe.spec.ts
@@ -18,7 +18,7 @@
 import { ColumnNameTranslatePipe } from './column-name-translate.pipe';
 
 describe('ColumnNameTranslatePipe', () => {
-  it('create an instance', () => {
+  it('should be created', () => {
     const pipe = new ColumnNameTranslatePipe();
     expect(pipe).toBeTruthy();
   });

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/shared/pipes/map-keys.pipe.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/shared/pipes/map-keys.pipe.spec.ts b/metron-interface/metron-alerts/src/app/shared/pipes/map-keys.pipe.spec.ts
index 17cfef7..193ed66 100644
--- a/metron-interface/metron-alerts/src/app/shared/pipes/map-keys.pipe.spec.ts
+++ b/metron-interface/metron-alerts/src/app/shared/pipes/map-keys.pipe.spec.ts
@@ -1,7 +1,7 @@
 import { MapKeysPipe } from './map-keys.pipe';
 
 describe('MapKeysPipe', () => {
-  it('create an instance', () => {
+  it('should be created', () => {
     const pipe = new MapKeysPipe();
     expect(pipe).toBeTruthy();
   });

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/shared/switch/switch.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/shared/switch/switch.component.spec.ts b/metron-interface/metron-alerts/src/app/shared/switch/switch.component.spec.ts
index 323013e..14a0e25 100644
--- a/metron-interface/metron-alerts/src/app/shared/switch/switch.component.spec.ts
+++ b/metron-interface/metron-alerts/src/app/shared/switch/switch.component.spec.ts
@@ -36,7 +36,7 @@ describe('SwitchComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it('should be created', () => {
     expect(component).toBeTruthy();
   });
 });

http://git-wip-us.apache.org/repos/asf/metron/blob/fc9ff853/metron-interface/metron-alerts/src/app/shared/time-range/time-range.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/shared/time-range/time-range.component.spec.ts b/metron-interface/metron-alerts/src/app/shared/time-range/time-range.component.spec.ts
index 1e35979..157bf52 100644
--- a/metron-interface/metron-alerts/src/app/shared/time-range/time-range.component.spec.ts
+++ b/metron-interface/metron-alerts/src/app/shared/time-range/time-range.component.spec.ts
@@ -1,6 +1,9 @@
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 
 import { TimeRangeComponent } from './time-range.component';
+import { DatePickerComponent } from '../date-picker/date-picker.component';
+import { MapKeysPipe } from '../pipes/map-keys.pipe';
+import { FormsModule } from '@angular/forms';
 
 describe('TimeRangeComponent', () => {
   let component: TimeRangeComponent;
@@ -8,7 +11,14 @@ describe('TimeRangeComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ TimeRangeComponent ]
+      imports: [
+        FormsModule
+      ],
+      declarations: [ 
+        TimeRangeComponent,
+        DatePickerComponent,
+        MapKeysPipe
+     ]
     })
     .compileComponents();
   }));