From 5bfbb5020904eadba298fdc094172d1c12879278 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 13 Mar 2019 22:04:09 +0800 Subject: Use route to control user dialog. --- .../user/user-dialog/user-dialog.component.spec.ts | 52 +--------------------- 1 file changed, 2 insertions(+), 50 deletions(-) (limited to 'Timeline/ClientApp/src/app/user/user-dialog/user-dialog.component.spec.ts') diff --git a/Timeline/ClientApp/src/app/user/user-dialog/user-dialog.component.spec.ts b/Timeline/ClientApp/src/app/user/user-dialog/user-dialog.component.spec.ts index c56e1ed1..fbabdb1a 100644 --- a/Timeline/ClientApp/src/app/user/user-dialog/user-dialog.component.spec.ts +++ b/Timeline/ClientApp/src/app/user/user-dialog/user-dialog.component.spec.ts @@ -6,15 +6,6 @@ import { of, Observable } from 'rxjs'; import { delay } from 'rxjs/operators'; import { UserDialogComponent } from './user-dialog.component'; -import { createMockInternalUserService } from '../internal-user-service/internal-user.service.mock'; -import { InternalUserService, UserLoginState } from '../internal-user-service/internal-user.service'; - -@Component({ - /* tslint:disable-next-line:component-selector*/ - selector: 'mat-progress-spinner', - template: '' -}) -class MatProgressSpinnerStubComponent { } @Component({ /* tslint:disable-next-line:component-selector*/ @@ -27,16 +18,12 @@ class RouterOutletStubComponent { } describe('UserDialogComponent', () => { let component: UserDialogComponent; let fixture: ComponentFixture; - let mockInternalUserService: jasmine.SpyObj; beforeEach(async(() => { - mockInternalUserService = createMockInternalUserService(); - TestBed.configureTestingModule({ - declarations: [UserDialogComponent, MatProgressSpinnerStubComponent, RouterOutletStubComponent], - providers: [{ provide: InternalUserService, useValue: mockInternalUserService }, - { // for the workaround + declarations: [UserDialogComponent, RouterOutletStubComponent], + providers: [{ // for the workaround provide: Router, useValue: { events: new Observable() } @@ -50,39 +37,4 @@ describe('UserDialogComponent', () => { component = fixture.componentInstance; }); - it('progress spinner should work well', fakeAsync(() => { - mockInternalUserService.refreshAndGetUserState.and.returnValue(of('nologin').pipe(delay(10))); - fixture.detectChanges(); - expect(fixture.debugElement.query(By.css('mat-progress-spinner'))).toBeTruthy(); - tick(10); - fixture.detectChanges(); - expect(fixture.debugElement.query(By.css('mat-progress-spinner'))).toBeFalsy(); - })); - - it('nologin should work well', () => { - mockInternalUserService.refreshAndGetUserState.and.returnValue(of('nologin')); - - fixture.detectChanges(); - - expect(mockInternalUserService.refreshAndGetUserState).toHaveBeenCalled(); - expect(mockInternalUserService.userRouteNavigate).toHaveBeenCalledWith(['login', { reason: 'nologin' }]); - }); - - it('invalid login should work well', () => { - mockInternalUserService.refreshAndGetUserState.and.returnValue(of('invalidlogin')); - - fixture.detectChanges(); - - expect(mockInternalUserService.refreshAndGetUserState).toHaveBeenCalled(); - expect(mockInternalUserService.userRouteNavigate).toHaveBeenCalledWith(['login', { reason: 'invalidlogin' }]); - }); - - it('success should work well', () => { - mockInternalUserService.refreshAndGetUserState.and.returnValue(of('success')); - - fixture.detectChanges(); - - expect(mockInternalUserService.refreshAndGetUserState).toHaveBeenCalled(); - expect(mockInternalUserService.userRouteNavigate).toHaveBeenCalledWith(['success', { reason: 'already' }]); - }); }); -- cgit v1.2.3 From f7b51fa06459493ba2987eb4bb93e1a4430bd4b6 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 13 Mar 2019 22:39:41 +0800 Subject: Add unit test. --- .../user/user-dialog/user-dialog.component.spec.ts | 11 +++++++---- .../user-login-success.component.spec.ts | 4 +--- .../app/user/user-login/user-login.component.spec.ts | 19 +++++++++---------- 3 files changed, 17 insertions(+), 17 deletions(-) (limited to 'Timeline/ClientApp/src/app/user/user-dialog/user-dialog.component.spec.ts') diff --git a/Timeline/ClientApp/src/app/user/user-dialog/user-dialog.component.spec.ts b/Timeline/ClientApp/src/app/user/user-dialog/user-dialog.component.spec.ts index fbabdb1a..47860eee 100644 --- a/Timeline/ClientApp/src/app/user/user-dialog/user-dialog.component.spec.ts +++ b/Timeline/ClientApp/src/app/user/user-dialog/user-dialog.component.spec.ts @@ -1,9 +1,8 @@ import { Component } from '@angular/core'; -import { async, ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { By } from '@angular/platform-browser'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { Router, Event } from '@angular/router'; -import { of, Observable } from 'rxjs'; -import { delay } from 'rxjs/operators'; + +import { Observable } from 'rxjs'; import { UserDialogComponent } from './user-dialog.component'; @@ -35,6 +34,10 @@ describe('UserDialogComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(UserDialogComponent); component = fixture.componentInstance; + fixture.detectChanges(); }); + it('should create', () => { + expect(component).toBeTruthy(); + }); }); diff --git a/Timeline/ClientApp/src/app/user/user-login-success/user-login-success.component.spec.ts b/Timeline/ClientApp/src/app/user/user-login-success/user-login-success.component.spec.ts index 1efbb5c7..ff253add 100644 --- a/Timeline/ClientApp/src/app/user/user-login-success/user-login-success.component.spec.ts +++ b/Timeline/ClientApp/src/app/user/user-login-success/user-login-success.component.spec.ts @@ -60,10 +60,8 @@ describe('UserLoginSuccessComponent', () => { }); it('login success message should display well', () => { - mockActivatedRoute.pushSnapshotWithParamMap({ reason: 'login' }); - + mockActivatedRoute.pushSnapshotWithParamMap({ fromlogin: 'true' }); fixture.detectChanges(); - expect((fixture.debugElement.query(By.css('p.login-success-message')))).toBeTruthy(); }); }); diff --git a/Timeline/ClientApp/src/app/user/user-login/user-login.component.spec.ts b/Timeline/ClientApp/src/app/user/user-login/user-login.component.spec.ts index 9c9ee1dc..693d5b6e 100644 --- a/Timeline/ClientApp/src/app/user/user-login/user-login.component.spec.ts +++ b/Timeline/ClientApp/src/app/user/user-login/user-login.component.spec.ts @@ -7,7 +7,6 @@ import { ActivatedRoute } from '@angular/router'; import { of, throwError } from 'rxjs'; import { createMockInternalUserService } from '../internal-user-service/internal-user.service.mock'; -import { MockActivatedRoute } from '../../test-utilities/activated-route.mock'; import { UserLoginComponent } from './user-login.component'; import { InternalUserService } from '../internal-user-service/internal-user.service'; import { UserInfo } from '../entities'; @@ -16,17 +15,17 @@ describe('UserLoginComponent', () => { let component: UserLoginComponent; let fixture: ComponentFixture; let mockInternalUserService: jasmine.SpyObj; - let mockActivatedRoute: MockActivatedRoute; beforeEach(async(() => { mockInternalUserService = createMockInternalUserService(); - mockActivatedRoute = new MockActivatedRoute(); + + // mock property + (mockInternalUserService).currentUserInfo = null; TestBed.configureTestingModule({ declarations: [UserLoginComponent], providers: [ - { provide: InternalUserService, useValue: mockInternalUserService }, - { provide: ActivatedRoute, useValue: mockActivatedRoute } + { provide: InternalUserService, useValue: mockInternalUserService } ], imports: [ReactiveFormsModule], schemas: [NO_ERRORS_SCHEMA] @@ -77,22 +76,22 @@ describe('UserLoginComponent', () => { component.onLoginButtonClick(); expect(mockInternalUserService.tryLogin).toHaveBeenCalledWith(mockValue); - expect(mockInternalUserService.userRouteNavigate).toHaveBeenCalledWith(['success', { reason: 'login' }]); + expect(mockInternalUserService.userRouteNavigate).toHaveBeenCalledWith(['success', { fromlogin: 'true' }]); }); describe('message display', () => { it('nologin reason should display', () => { - mockActivatedRoute.pushSnapshotWithParamMap({ reason: 'nologin' }); fixture.detectChanges(); - expect(component.message).toBe('nologin'); + component.message = 'nologin'; + fixture.detectChanges(); expect((fixture.debugElement.query(By.css('p.mat-body')).nativeElement as HTMLParagraphElement).textContent).toBe('You haven\'t login.'); }); it('invalid login reason should display', () => { - mockActivatedRoute.pushSnapshotWithParamMap({ reason: 'invalidlogin' }); fixture.detectChanges(); - expect(component.message).toBe('invalidlogin'); + component.message = 'invalidlogin'; + fixture.detectChanges(); expect((fixture.debugElement.query(By.css('p.mat-body')).nativeElement as HTMLParagraphElement).textContent).toBe('Your login is no longer valid.'); }); -- cgit v1.2.3