OK-513 Unit Test added
diff --git a/src/app/common-components/main-navigation/main-navigation.component.spec.ts b/src/app/common-components/main-navigation/main-navigation.component.spec.ts
index 678a533..f6114b3 100644
--- a/src/app/common-components/main-navigation/main-navigation.component.spec.ts
+++ b/src/app/common-components/main-navigation/main-navigation.component.spec.ts
@@ -31,12 +31,14 @@
let fixture: ComponentFixture<MainNavigationComponent>;
let routerStub: FakeRouter;
let router: Router;
+ let sessionContext: SessionContext;
routerStub = {
navigate: jasmine.createSpy('navigate').and.callThrough()
};
beforeEach(async(() => {
+ sessionContext = new SessionContext();
router = new FakeRouter() as any as Router;
TestBed.configureTestingModule({
imports: [
@@ -50,7 +52,7 @@
providers: [
{ provide: Router, useValue: routerStub },
{ provide: MdDialog, useClass: MdDialog },
- { provide: SessionContext, useClass: SessionContext }
+ { provide: SessionContext, useValue: sessionContext }
]
})
.compileComponents();
@@ -96,8 +98,9 @@
});
it('should navigate to mainview on logout', () => {
+ spyOn(sessionContext, 'clearStorage').and.callThrough();
component.logout();
- expect(routerStub.navigate).toHaveBeenCalledWith(['/']);
+ expect(sessionContext.clearStorage).toHaveBeenCalled();
});
});
diff --git a/src/app/common-components/main-navigation/main-navigation.component.ts b/src/app/common-components/main-navigation/main-navigation.component.ts
index 3a1d5d3..7dbdc5c 100644
--- a/src/app/common-components/main-navigation/main-navigation.component.ts
+++ b/src/app/common-components/main-navigation/main-navigation.component.ts
@@ -51,8 +51,7 @@
}
logout() {
- this.sessionContext.clearStorage();
- this.router.navigate(['/']);
+ this.sessionContext.clearStorage();
}
goToReminderPage() {
diff --git a/src/app/dialogs/logout/logout.component.spec.ts b/src/app/dialogs/logout/logout.component.spec.ts
index 7043f47..1d5f577 100644
--- a/src/app/dialogs/logout/logout.component.spec.ts
+++ b/src/app/dialogs/logout/logout.component.spec.ts
@@ -7,6 +7,8 @@
import { LogoutComponent } from './logout.component';
import { MessageService } from '../../services/message.service';
import { Router } from '@angular/router';
+import { AuthenticationService } from '../../services/authentication.service';
+import { Observable } from 'rxjs/Observable';
class FakeRouter {
navigate(commands: any[]) {
@@ -14,48 +16,89 @@
}
}
+class MockAuthService extends AbstractMockObservableService {
+
+ logout() {
+ return this;
+ }
+}
+
+class MockDialogRef extends AbstractMockObservableService {
+ config: MdDialogConfigMock;
+ close() { }
+}
+
+class MdDialogConfigMock {
+ data: any;
+}
+
+class MockMainNavigation {
+ logout() { }
+}
+
describe('LogoutComponent', () => {
let component: LogoutComponent;
let fixture: ComponentFixture<LogoutComponent>;
let routerStub: FakeRouter;
let messageService;
let router: Router;
-
- routerStub = {
- navigate: jasmine.createSpy('navigate').and.callThrough()
- };
+ let mockAuthService;
+ let mockDialog: MockDialogRef;
- class MockDialogRef extends AbstractMockObservableService {
- close() { }
- }
+ routerStub = {
+ navigate: jasmine.createSpy('navigate').and.callThrough()
+ };
+
beforeEach(async(() => {
- messageService = new MessageService();
- router = new FakeRouter() as any as Router;
+ mockAuthService = new MockAuthService();
+ mockDialog = new MockDialogRef();
+ messageService = new MessageService();
+ router = new FakeRouter() as any as Router;
TestBed.configureTestingModule({
- declarations: [ LogoutComponent ],
- providers: [
- { provide: MdDialogRef, useClass: MockDialogRef },
+ declarations: [LogoutComponent],
+ providers: [
+ { provide: AuthenticationService, useValue: mockAuthService },
+ { provide: MdDialogRef, useValue: mockDialog },
{ provide: Router, useValue: routerStub },
- { provide: MessageService, useValue: messageService }
+ { provide: MessageService, useValue: messageService }
]
})
- .compileComponents();
+ .compileComponents();
}));
- beforeEach(() => {
+ beforeEach(() => {
fixture = TestBed.createComponent(LogoutComponent);
- component = fixture.componentInstance;
+ component = fixture.componentInstance;
+ });
+
+ it('should navigate to logout page on abmelden click', async(() => {
+ const configMock: MdDialogConfigMock = new MdDialogConfigMock();
+ const mockMainNav: MockMainNavigation = new MockMainNavigation();
+ configMock.data = mockMainNav;
+ mockDialog.config = configMock;
+
+ mockAuthService.content = Observable.of('');
fixture.detectChanges();
- });
- /*
- fit('should navigate to logout page on abmelden click', () => {
component.logout();
+ fixture.detectChanges();
expect(routerStub.navigate).toHaveBeenCalledWith(['/logout']);
- });
- */
+ }));
+ it('shouldnt navigate to logout page on error', async(() => {
+ const configMock: MdDialogConfigMock = new MdDialogConfigMock();
+ const mockMainNav: MockMainNavigation = new MockMainNavigation();
+ configMock.data = mockMainNav;
+ mockDialog.config = configMock;
+
+ mockAuthService.error = 'MOCKERROR';
+ fixture.detectChanges();
+
+ component.logout();
+ fixture.detectChanges();
+ expect(routerStub.navigate).toHaveBeenCalledWith(['/logout']);
+ }));
});