From 7e93aea96f1e6be41920c51cc2b35fcb82afd3cd Mon Sep 17 00:00:00 2001 From: Spencer Ofwiti Date: Thu, 24 Jun 2021 19:34:02 +0300 Subject: [PATCH 1/6] Fix broken tests. --- src/app/_services/token.service.spec.ts | 22 ++++++++++-- src/app/_services/user.service.spec.ts | 46 +++++++++++++++---------- 2 files changed, 47 insertions(+), 21 deletions(-) diff --git a/src/app/_services/token.service.spec.ts b/src/app/_services/token.service.spec.ts index 255574e..6b8b953 100644 --- a/src/app/_services/token.service.spec.ts +++ b/src/app/_services/token.service.spec.ts @@ -1,6 +1,7 @@ import { TestBed } from '@angular/core/testing'; import { TokenService } from '@app/_services/token.service'; +import {Token} from '@app/_models'; describe('TokenService', () => { let service: TokenService; @@ -15,10 +16,27 @@ describe('TokenService', () => { }); it('should return token for available token', () => { - expect(service.getTokenBySymbol('RSV')).toEqual({ name: 'Reserve', symbol: 'RSV' }); + const token: Token = { + name: 'Giftable Reserve', + symbol: 'GRZ', + address: '0xa686005CE37Dce7738436256982C3903f2E4ea8E', + supply: '1000000001000000000000000000', + decimals: '18', + reserves: {}, + }; + service.addToken(token); + service.getTokenBySymbol('GRZ').then(tokenSubject => { + tokenSubject.subscribe(returnedToken => { + expect(returnedToken).toEqual(token); + }); + }); }); it('should not return token for unavailable token', () => { - expect(service.getTokenBySymbol('ABC')).toBeUndefined(); + service.getTokenBySymbol('ABC').then(tokenSubject => { + tokenSubject.subscribe(returnedToken => { + expect(returnedToken).toBeUndefined(); + }); + }); }); }); diff --git a/src/app/_services/user.service.spec.ts b/src/app/_services/user.service.spec.ts index 3cc161f..e96f36b 100644 --- a/src/app/_services/user.service.spec.ts +++ b/src/app/_services/user.service.spec.ts @@ -23,38 +23,46 @@ describe('UserService', () => { }); it('should return action for available id', () => { - expect(service.getActionById('1')).toEqual({ - id: 1, - user: 'Tom', - role: 'enroller', - action: 'Disburse RSV 100', - approval: false, + service.getActionById('1').subscribe(returnedAction => { + expect(returnedAction.toEqual({ + id: 1, + user: 'Tom', + role: 'enroller', + action: 'Disburse RSV 100', + approval: false, + })); }); }); it('should not return action for unavailable id', () => { - expect(service.getActionById('9999999999')).toBeUndefined(); + service.getActionById('9999999999').subscribe(returnedAction => { + expect(returnedAction.toBeUndefined()); + }); }); it('should switch action approval from false to true', () => { service.approveAction('1'); - expect(service.getActionById('1')).toEqual({ - id: 1, - user: 'Tom', - role: 'enroller', - action: 'Disburse RSV 100', - approval: true, + service.getActionById('1').subscribe(returnedAction => { + expect(returnedAction.toEqual({ + id: 1, + user: 'Tom', + role: 'enroller', + action: 'Disburse RSV 100', + approval: true, + })); }); }); it('should switch action approval from true to false', () => { service.revokeAction('2'); - expect(service.getActionById('2')).toEqual({ - id: 2, - user: 'Christine', - role: 'admin', - action: 'Change user phone number', - approval: false, + service.getActionById('2').subscribe(returnedAction => { + expect(returnedAction.toEqual({ + id: 2, + user: 'Christine', + role: 'admin', + action: 'Change user phone number', + approval: false, + })); }); }); }); From 78a85588825c570c1f3d77da81df89a00ec23dd2 Mon Sep 17 00:00:00 2001 From: Spencer Ofwiti Date: Thu, 24 Jun 2021 20:51:06 +0300 Subject: [PATCH 2/6] Add HttpClient and Router testing modules to test. --- package.json | 4 ++++ src/app/_guards/auth.guard.spec.ts | 5 ++++- src/app/_guards/role.guard.spec.ts | 5 ++++- src/app/_services/auth.service.spec.ts | 5 ++++- src/app/_services/location.service.spec.ts | 5 ++++- src/app/app.component.spec.ts | 3 ++- src/app/auth/auth.component.spec.ts | 2 ++ src/app/pages/admin/admin.component.spec.ts | 2 +- .../transaction-details.component.spec.ts | 2 ++ 9 files changed, 27 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 3b270a4..8eb171f 100644 --- a/package.json +++ b/package.json @@ -100,5 +100,9 @@ "hooks": { "pre-commit": "npx pretty-quick --staged && npm run format:lint && npx lint-staged" } + }, + "browser": { + "child_process": false, + "fs": false } } diff --git a/src/app/_guards/auth.guard.spec.ts b/src/app/_guards/auth.guard.spec.ts index 7e638c6..ec0ea01 100644 --- a/src/app/_guards/auth.guard.spec.ts +++ b/src/app/_guards/auth.guard.spec.ts @@ -3,12 +3,15 @@ import { TestBed } from '@angular/core/testing'; // Application imports import { AuthGuard } from '@app/_guards/auth.guard'; +import {RouterTestingModule} from '@angular/router/testing'; describe('AuthGuard', () => { let guard: AuthGuard; beforeEach(() => { - TestBed.configureTestingModule({}); + TestBed.configureTestingModule({ + imports: [RouterTestingModule] + }); guard = TestBed.inject(AuthGuard); }); diff --git a/src/app/_guards/role.guard.spec.ts b/src/app/_guards/role.guard.spec.ts index 3c78c74..8f2f025 100644 --- a/src/app/_guards/role.guard.spec.ts +++ b/src/app/_guards/role.guard.spec.ts @@ -3,12 +3,15 @@ import { TestBed } from '@angular/core/testing'; // Application imports import { RoleGuard } from '@app/_guards/role.guard'; +import {RouterTestingModule} from '@angular/router/testing'; describe('RoleGuard', () => { let guard: RoleGuard; beforeEach(() => { - TestBed.configureTestingModule({}); + TestBed.configureTestingModule({ + imports: [RouterTestingModule] + }); guard = TestBed.inject(RoleGuard); }); diff --git a/src/app/_services/auth.service.spec.ts b/src/app/_services/auth.service.spec.ts index 9351d3f..f1d04be 100644 --- a/src/app/_services/auth.service.spec.ts +++ b/src/app/_services/auth.service.spec.ts @@ -1,12 +1,15 @@ import { TestBed } from '@angular/core/testing'; import { AuthService } from '@app/_services/auth.service'; +import {HttpClientTestingModule} from '@angular/common/http/testing'; describe('AuthService', () => { let service: AuthService; beforeEach(() => { - TestBed.configureTestingModule({}); + TestBed.configureTestingModule({ + imports: [HttpClientTestingModule] + }); service = TestBed.inject(AuthService); }); diff --git a/src/app/_services/location.service.spec.ts b/src/app/_services/location.service.spec.ts index 163c636..6e88765 100644 --- a/src/app/_services/location.service.spec.ts +++ b/src/app/_services/location.service.spec.ts @@ -1,12 +1,15 @@ import { TestBed } from '@angular/core/testing'; import { LocationService } from '@app/_services/location.service'; +import {HttpClientTestingModule} from '@angular/common/http/testing'; describe('LocationService', () => { let service: LocationService; beforeEach(() => { - TestBed.configureTestingModule({}); + TestBed.configureTestingModule({ + imports: [HttpClientTestingModule] + }); service = TestBed.inject(LocationService); }); diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts index ade1136..3ab4d82 100644 --- a/src/app/app.component.spec.ts +++ b/src/app/app.component.spec.ts @@ -8,11 +8,12 @@ import { TopbarStubComponent, TransactionServiceStub, } from '@src/testing'; +import {HttpClientTestingModule} from '@angular/common/http/testing'; describe('AppComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [RouterTestingModule], + imports: [HttpClientTestingModule, RouterTestingModule], declarations: [AppComponent, FooterStubComponent, SidebarStubComponent, TopbarStubComponent], providers: [{ provide: TransactionService, useClass: TransactionServiceStub }], }).compileComponents(); diff --git a/src/app/auth/auth.component.spec.ts b/src/app/auth/auth.component.spec.ts index c11871f..6a311e2 100644 --- a/src/app/auth/auth.component.spec.ts +++ b/src/app/auth/auth.component.spec.ts @@ -1,6 +1,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { AuthComponent } from '@app/auth/auth.component'; +import {HttpClientTestingModule} from '@angular/common/http/testing'; describe('AuthComponent', () => { let component: AuthComponent; @@ -8,6 +9,7 @@ describe('AuthComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ + imports: [HttpClientTestingModule], declarations: [AuthComponent], }).compileComponents(); }); diff --git a/src/app/pages/admin/admin.component.spec.ts b/src/app/pages/admin/admin.component.spec.ts index 2b5a69d..e0f830f 100644 --- a/src/app/pages/admin/admin.component.spec.ts +++ b/src/app/pages/admin/admin.component.spec.ts @@ -48,7 +48,7 @@ describe('AdminComponent', () => { it('#approveAction should toggle approval status', () => { const action = userService.getActionById('1'); - expect(action).toBe({ + expect(action).toEqual({ id: 1, user: 'Tom', role: 'enroller', diff --git a/src/app/pages/transactions/transaction-details/transaction-details.component.spec.ts b/src/app/pages/transactions/transaction-details/transaction-details.component.spec.ts index 8fce2e7..783a426 100644 --- a/src/app/pages/transactions/transaction-details/transaction-details.component.spec.ts +++ b/src/app/pages/transactions/transaction-details/transaction-details.component.spec.ts @@ -1,6 +1,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { TransactionDetailsComponent } from '@pages/transactions/transaction-details/transaction-details.component'; +import {RouterTestingModule} from '@angular/router/testing'; describe('TransactionDetailsComponent', () => { let component: TransactionDetailsComponent; @@ -8,6 +9,7 @@ describe('TransactionDetailsComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ + imports: [RouterTestingModule], declarations: [TransactionDetailsComponent], }).compileComponents(); }); From 599ffe9079b8bef8ccdcf0b1c1564c4dc374475b Mon Sep 17 00:00:00 2001 From: Spencer Ofwiti Date: Fri, 25 Jun 2021 09:40:29 +0300 Subject: [PATCH 3/6] Fix tests. --- src/app/_guards/auth.guard.spec.ts | 4 +- src/app/_guards/role.guard.spec.ts | 4 +- .../_interceptors/error.interceptor.spec.ts | 2 + src/app/_interceptors/error.interceptor.ts | 2 +- src/app/_services/auth.service.spec.ts | 4 +- .../_services/error-dialog.service.spec.ts | 5 +- src/app/_services/location.service.spec.ts | 4 +- src/app/_services/token.service.spec.ts | 10 ++-- src/app/_services/user.service.spec.ts | 56 ++++++++++--------- src/app/app-routing.module.ts | 2 +- src/app/app.component.spec.ts | 2 +- src/app/auth/auth.component.spec.ts | 2 +- .../account-search.component.spec.ts | 3 + .../transaction-details.component.spec.ts | 5 +- .../_directives/menu-toggle.directive.spec.ts | 18 +++--- .../error-dialog.component.spec.ts | 3 + 16 files changed, 73 insertions(+), 53 deletions(-) diff --git a/src/app/_guards/auth.guard.spec.ts b/src/app/_guards/auth.guard.spec.ts index ec0ea01..2336dab 100644 --- a/src/app/_guards/auth.guard.spec.ts +++ b/src/app/_guards/auth.guard.spec.ts @@ -3,14 +3,14 @@ import { TestBed } from '@angular/core/testing'; // Application imports import { AuthGuard } from '@app/_guards/auth.guard'; -import {RouterTestingModule} from '@angular/router/testing'; +import { RouterTestingModule } from '@angular/router/testing'; describe('AuthGuard', () => { let guard: AuthGuard; beforeEach(() => { TestBed.configureTestingModule({ - imports: [RouterTestingModule] + imports: [RouterTestingModule], }); guard = TestBed.inject(AuthGuard); }); diff --git a/src/app/_guards/role.guard.spec.ts b/src/app/_guards/role.guard.spec.ts index 8f2f025..31b41b4 100644 --- a/src/app/_guards/role.guard.spec.ts +++ b/src/app/_guards/role.guard.spec.ts @@ -3,14 +3,14 @@ import { TestBed } from '@angular/core/testing'; // Application imports import { RoleGuard } from '@app/_guards/role.guard'; -import {RouterTestingModule} from '@angular/router/testing'; +import { RouterTestingModule } from '@angular/router/testing'; describe('RoleGuard', () => { let guard: RoleGuard; beforeEach(() => { TestBed.configureTestingModule({ - imports: [RouterTestingModule] + imports: [RouterTestingModule], }); guard = TestBed.inject(RoleGuard); }); diff --git a/src/app/_interceptors/error.interceptor.spec.ts b/src/app/_interceptors/error.interceptor.spec.ts index 0850da9..5e96ee3 100644 --- a/src/app/_interceptors/error.interceptor.spec.ts +++ b/src/app/_interceptors/error.interceptor.spec.ts @@ -3,10 +3,12 @@ import { TestBed } from '@angular/core/testing'; // Application imports import { ErrorInterceptor } from '@app/_interceptors/error.interceptor'; +import { MatDialogModule } from '@angular/material/dialog'; describe('ErrorInterceptor', () => { beforeEach(() => TestBed.configureTestingModule({ + imports: [MatDialogModule], providers: [ErrorInterceptor], }) ); diff --git a/src/app/_interceptors/error.interceptor.ts b/src/app/_interceptors/error.interceptor.ts index 31e3812..a2fb8cc 100644 --- a/src/app/_interceptors/error.interceptor.ts +++ b/src/app/_interceptors/error.interceptor.ts @@ -56,7 +56,7 @@ export class ErrorInterceptor implements HttpInterceptor { this.loggingService.sendErrorLevelMessage(errorMessage, this, { error: err }); switch (err.status) { case 401: // unauthorized - this.router.navigateByUrl('/auth').then(); + // this.router.navigateByUrl('/auth').then(); break; case 403: // forbidden alert('Access to resource is not allowed!'); diff --git a/src/app/_services/auth.service.spec.ts b/src/app/_services/auth.service.spec.ts index f1d04be..94477e1 100644 --- a/src/app/_services/auth.service.spec.ts +++ b/src/app/_services/auth.service.spec.ts @@ -1,14 +1,14 @@ import { TestBed } from '@angular/core/testing'; import { AuthService } from '@app/_services/auth.service'; -import {HttpClientTestingModule} from '@angular/common/http/testing'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; describe('AuthService', () => { let service: AuthService; beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule] + imports: [HttpClientTestingModule], }); service = TestBed.inject(AuthService); }); diff --git a/src/app/_services/error-dialog.service.spec.ts b/src/app/_services/error-dialog.service.spec.ts index 2cdabc8..aa59d05 100644 --- a/src/app/_services/error-dialog.service.spec.ts +++ b/src/app/_services/error-dialog.service.spec.ts @@ -1,12 +1,15 @@ import { TestBed } from '@angular/core/testing'; import { ErrorDialogService } from './error-dialog.service'; +import { MatDialogModule } from '@angular/material/dialog'; describe('ErrorDialogService', () => { let service: ErrorDialogService; beforeEach(() => { - TestBed.configureTestingModule({}); + TestBed.configureTestingModule({ + imports: [MatDialogModule], + }); service = TestBed.inject(ErrorDialogService); }); diff --git a/src/app/_services/location.service.spec.ts b/src/app/_services/location.service.spec.ts index 6e88765..d497440 100644 --- a/src/app/_services/location.service.spec.ts +++ b/src/app/_services/location.service.spec.ts @@ -1,14 +1,14 @@ import { TestBed } from '@angular/core/testing'; import { LocationService } from '@app/_services/location.service'; -import {HttpClientTestingModule} from '@angular/common/http/testing'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; describe('LocationService', () => { let service: LocationService; beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule] + imports: [HttpClientTestingModule], }); service = TestBed.inject(LocationService); }); diff --git a/src/app/_services/token.service.spec.ts b/src/app/_services/token.service.spec.ts index 6b8b953..5c55e51 100644 --- a/src/app/_services/token.service.spec.ts +++ b/src/app/_services/token.service.spec.ts @@ -1,7 +1,7 @@ import { TestBed } from '@angular/core/testing'; import { TokenService } from '@app/_services/token.service'; -import {Token} from '@app/_models'; +import { Token } from '@app/_models'; describe('TokenService', () => { let service: TokenService; @@ -25,16 +25,16 @@ describe('TokenService', () => { reserves: {}, }; service.addToken(token); - service.getTokenBySymbol('GRZ').then(tokenSubject => { - tokenSubject.subscribe(returnedToken => { + service.getTokenBySymbol('GRZ').then((tokenSubject) => { + tokenSubject.subscribe((returnedToken) => { expect(returnedToken).toEqual(token); }); }); }); it('should not return token for unavailable token', () => { - service.getTokenBySymbol('ABC').then(tokenSubject => { - tokenSubject.subscribe(returnedToken => { + service.getTokenBySymbol('ABC').then((tokenSubject) => { + tokenSubject.subscribe((returnedToken) => { expect(returnedToken).toBeUndefined(); }); }); diff --git a/src/app/_services/user.service.spec.ts b/src/app/_services/user.service.spec.ts index e96f36b..f861347 100644 --- a/src/app/_services/user.service.spec.ts +++ b/src/app/_services/user.service.spec.ts @@ -23,46 +23,52 @@ describe('UserService', () => { }); it('should return action for available id', () => { - service.getActionById('1').subscribe(returnedAction => { - expect(returnedAction.toEqual({ - id: 1, - user: 'Tom', - role: 'enroller', - action: 'Disburse RSV 100', - approval: false, - })); + service.getActionById('1').subscribe((returnedAction) => { + expect( + returnedAction.toEqual({ + id: 1, + user: 'Tom', + role: 'enroller', + action: 'Disburse RSV 100', + approval: false, + }) + ); }); }); it('should not return action for unavailable id', () => { - service.getActionById('9999999999').subscribe(returnedAction => { + service.getActionById('9999999999').subscribe((returnedAction) => { expect(returnedAction.toBeUndefined()); }); }); it('should switch action approval from false to true', () => { service.approveAction('1'); - service.getActionById('1').subscribe(returnedAction => { - expect(returnedAction.toEqual({ - id: 1, - user: 'Tom', - role: 'enroller', - action: 'Disburse RSV 100', - approval: true, - })); + service.getActionById('1').subscribe((returnedAction) => { + expect( + returnedAction.toEqual({ + id: 1, + user: 'Tom', + role: 'enroller', + action: 'Disburse RSV 100', + approval: true, + }) + ); }); }); it('should switch action approval from true to false', () => { service.revokeAction('2'); - service.getActionById('2').subscribe(returnedAction => { - expect(returnedAction.toEqual({ - id: 2, - user: 'Christine', - role: 'admin', - action: 'Change user phone number', - approval: false, - })); + service.getActionById('2').subscribe((returnedAction) => { + expect( + returnedAction.toEqual({ + id: 2, + user: 'Christine', + role: 'admin', + action: 'Change user phone number', + approval: false, + }) + ); }); }); }); diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 93e5328..421f7b6 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -7,7 +7,7 @@ const routes: Routes = [ { path: '', loadChildren: () => import('@pages/pages.module').then((m) => m.PagesModule), - canActivate: [AuthGuard], + canActivate: [], }, { path: '**', redirectTo: '', pathMatch: 'full' }, ]; diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts index 3ab4d82..3c4ec88 100644 --- a/src/app/app.component.spec.ts +++ b/src/app/app.component.spec.ts @@ -8,7 +8,7 @@ import { TopbarStubComponent, TransactionServiceStub, } from '@src/testing'; -import {HttpClientTestingModule} from '@angular/common/http/testing'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; describe('AppComponent', () => { beforeEach(async () => { diff --git a/src/app/auth/auth.component.spec.ts b/src/app/auth/auth.component.spec.ts index 6a311e2..129773d 100644 --- a/src/app/auth/auth.component.spec.ts +++ b/src/app/auth/auth.component.spec.ts @@ -1,7 +1,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { AuthComponent } from '@app/auth/auth.component'; -import {HttpClientTestingModule} from '@angular/common/http/testing'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; describe('AuthComponent', () => { let component: AuthComponent; diff --git a/src/app/pages/accounts/account-search/account-search.component.spec.ts b/src/app/pages/accounts/account-search/account-search.component.spec.ts index a759e41..94a3006 100644 --- a/src/app/pages/accounts/account-search/account-search.component.spec.ts +++ b/src/app/pages/accounts/account-search/account-search.component.spec.ts @@ -1,6 +1,8 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { AccountSearchComponent } from './account-search.component'; +import { ReactiveFormsModule } from '@angular/forms'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; describe('AccountSearchComponent', () => { let component: AccountSearchComponent; @@ -9,6 +11,7 @@ describe('AccountSearchComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [AccountSearchComponent], + imports: [ReactiveFormsModule, HttpClientTestingModule], }).compileComponents(); }); diff --git a/src/app/pages/transactions/transaction-details/transaction-details.component.spec.ts b/src/app/pages/transactions/transaction-details/transaction-details.component.spec.ts index 783a426..8428cb1 100644 --- a/src/app/pages/transactions/transaction-details/transaction-details.component.spec.ts +++ b/src/app/pages/transactions/transaction-details/transaction-details.component.spec.ts @@ -1,7 +1,8 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { TransactionDetailsComponent } from '@pages/transactions/transaction-details/transaction-details.component'; -import {RouterTestingModule} from '@angular/router/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; describe('TransactionDetailsComponent', () => { let component: TransactionDetailsComponent; @@ -9,7 +10,7 @@ describe('TransactionDetailsComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [RouterTestingModule], + imports: [RouterTestingModule, HttpClientTestingModule], declarations: [TransactionDetailsComponent], }).compileComponents(); }); diff --git a/src/app/shared/_directives/menu-toggle.directive.spec.ts b/src/app/shared/_directives/menu-toggle.directive.spec.ts index 2ff03a2..34b3946 100644 --- a/src/app/shared/_directives/menu-toggle.directive.spec.ts +++ b/src/app/shared/_directives/menu-toggle.directive.spec.ts @@ -1,16 +1,18 @@ -// Core imports -import { ElementRef, Renderer2 } from '@angular/core'; - // Application imports import { MenuToggleDirective } from '@app/shared/_directives/menu-toggle.directive'; +import { TestBed } from '@angular/core/testing'; describe('MenuToggleDirective', () => { - // tslint:disable-next-line:prefer-const - let elementRef: ElementRef; - // tslint:disable-next-line:prefer-const - let renderer: Renderer2; + let directive: MenuToggleDirective; + + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [MenuToggleDirective], + }); + directive = TestBed.inject(MenuToggleDirective); + }); + it('should create an instance', () => { - const directive = new MenuToggleDirective(elementRef, renderer); expect(directive).toBeTruthy(); }); }); diff --git a/src/app/shared/error-dialog/error-dialog.component.spec.ts b/src/app/shared/error-dialog/error-dialog.component.spec.ts index bb6036f..67ecd4e 100644 --- a/src/app/shared/error-dialog/error-dialog.component.spec.ts +++ b/src/app/shared/error-dialog/error-dialog.component.spec.ts @@ -1,6 +1,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ErrorDialogComponent } from './error-dialog.component'; +import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog'; describe('ErrorDialogComponent', () => { let component: ErrorDialogComponent; @@ -9,6 +10,8 @@ describe('ErrorDialogComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [ErrorDialogComponent], + imports: [MatDialogModule], + providers: [{ provide: MAT_DIALOG_DATA, useValue: {} }], }).compileComponents(); }); From f5c69cc574f986e7c85c67ae3cdb1382c55d92db Mon Sep 17 00:00:00 2001 From: Spencer Ofwiti Date: Fri, 25 Jun 2021 11:03:00 +0300 Subject: [PATCH 4/6] Revert auth guard handler. --- src/app/_interceptors/error.interceptor.ts | 2 +- src/app/app-routing.module.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/_interceptors/error.interceptor.ts b/src/app/_interceptors/error.interceptor.ts index a2fb8cc..31e3812 100644 --- a/src/app/_interceptors/error.interceptor.ts +++ b/src/app/_interceptors/error.interceptor.ts @@ -56,7 +56,7 @@ export class ErrorInterceptor implements HttpInterceptor { this.loggingService.sendErrorLevelMessage(errorMessage, this, { error: err }); switch (err.status) { case 401: // unauthorized - // this.router.navigateByUrl('/auth').then(); + this.router.navigateByUrl('/auth').then(); break; case 403: // forbidden alert('Access to resource is not allowed!'); diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 421f7b6..93e5328 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -7,7 +7,7 @@ const routes: Routes = [ { path: '', loadChildren: () => import('@pages/pages.module').then((m) => m.PagesModule), - canActivate: [], + canActivate: [AuthGuard], }, { path: '**', redirectTo: '', pathMatch: 'full' }, ]; From 0343142a38bcaf096e634d45110afb28281e330f Mon Sep 17 00:00:00 2001 From: Spencer Ofwiti Date: Fri, 25 Jun 2021 11:53:06 +0300 Subject: [PATCH 5/6] Fix tests for directives. --- .../password-toggle.directive.spec.ts | 32 ++++++++++++++----- .../menu-selection.directive.spec.ts | 31 ++++++++++++------ .../_directives/menu-toggle.directive.spec.ts | 30 ++++++++++++----- 3 files changed, 68 insertions(+), 25 deletions(-) diff --git a/src/app/auth/_directives/password-toggle.directive.spec.ts b/src/app/auth/_directives/password-toggle.directive.spec.ts index 0d0270e..d2d23ed 100644 --- a/src/app/auth/_directives/password-toggle.directive.spec.ts +++ b/src/app/auth/_directives/password-toggle.directive.spec.ts @@ -1,17 +1,33 @@ // Core imports -import { ElementRef, Renderer2 } from '@angular/core'; +import { Component, DebugElement } from '@angular/core'; // Application imports import { PasswordToggleDirective } from '@app/auth/_directives/password-toggle.directive'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; -// tslint:disable-next-line:prefer-const -let elementRef: ElementRef; -// tslint:disable-next-line:prefer-const -let renderer: Renderer2; +@Component({ + template: `
+ + +
`, +}) +class TestComponent {} describe('PasswordToggleDirective', () => { - it('should create an instance', () => { - const directive = new PasswordToggleDirective(elementRef, renderer); - expect(directive).toBeTruthy(); + let fixture: ComponentFixture; + let des: DebugElement[]; + + beforeEach(() => { + fixture = TestBed.configureTestingModule({ + declarations: [PasswordToggleDirective, TestComponent], + }).createComponent(TestComponent); + fixture.detectChanges(); + + des = fixture.debugElement.queryAll(By.directive(PasswordToggleDirective)); + }); + + it('should have one element with menu-toggle directive', () => { + expect(des.length).toBe(1); }); }); diff --git a/src/app/shared/_directives/menu-selection.directive.spec.ts b/src/app/shared/_directives/menu-selection.directive.spec.ts index 24ae097..3cc3a94 100644 --- a/src/app/shared/_directives/menu-selection.directive.spec.ts +++ b/src/app/shared/_directives/menu-selection.directive.spec.ts @@ -1,21 +1,34 @@ // Core imports -import { ElementRef, Renderer2 } from '@angular/core'; +import { Component, DebugElement } from '@angular/core'; // Application imports import { MenuSelectionDirective } from '@app/shared/_directives/menu-selection.directive'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; + +@Component({ + template: `
+ +
+
+
`, +}) +class TestComponent {} describe('MenuSelectionDirective', () => { - // tslint:disable-next-line:prefer-const - let elementRef: ElementRef; - // tslint:disable-next-line:prefer-const - let renderer: Renderer2; + let fixture: ComponentFixture; + let des: DebugElement[]; beforeEach(() => { - // renderer = new + fixture = TestBed.configureTestingModule({ + declarations: [MenuSelectionDirective, TestComponent], + }).createComponent(TestComponent); + fixture.detectChanges(); + + des = fixture.debugElement.queryAll(By.directive(MenuSelectionDirective)); }); - it('should create an instance', () => { - const directive = new MenuSelectionDirective(elementRef, renderer); - expect(directive).toBeTruthy(); + it('should have one element with menu-selection directive', () => { + expect(des.length).toBe(1); }); }); diff --git a/src/app/shared/_directives/menu-toggle.directive.spec.ts b/src/app/shared/_directives/menu-toggle.directive.spec.ts index 34b3946..793db28 100644 --- a/src/app/shared/_directives/menu-toggle.directive.spec.ts +++ b/src/app/shared/_directives/menu-toggle.directive.spec.ts @@ -1,18 +1,32 @@ // Application imports import { MenuToggleDirective } from '@app/shared/_directives/menu-toggle.directive'; -import { TestBed } from '@angular/core/testing'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { Component, DebugElement } from '@angular/core'; +import { By } from '@angular/platform-browser'; + +@Component({ + template: `
+ +
+
+
`, +}) +class TestComponent {} describe('MenuToggleDirective', () => { - let directive: MenuToggleDirective; + let fixture: ComponentFixture; + let des: DebugElement[]; beforeEach(() => { - TestBed.configureTestingModule({ - providers: [MenuToggleDirective], - }); - directive = TestBed.inject(MenuToggleDirective); + fixture = TestBed.configureTestingModule({ + declarations: [MenuToggleDirective, TestComponent], + }).createComponent(TestComponent); + fixture.detectChanges(); + + des = fixture.debugElement.queryAll(By.directive(MenuToggleDirective)); }); - it('should create an instance', () => { - expect(directive).toBeTruthy(); + it('should have one element with menu-toggle directive', () => { + expect(des.length).toBe(1); }); }); From faa0758f95f6a2a5362b527bfc71b71f6b4e533d Mon Sep 17 00:00:00 2001 From: Spencer Ofwiti Date: Fri, 25 Jun 2021 12:07:13 +0300 Subject: [PATCH 6/6] Fix safe pipe in pages component tests. --- src/app/pages/pages.component.spec.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/app/pages/pages.component.spec.ts b/src/app/pages/pages.component.spec.ts index 4c30355..91746ef 100644 --- a/src/app/pages/pages.component.spec.ts +++ b/src/app/pages/pages.component.spec.ts @@ -1,6 +1,8 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { PagesComponent } from '@pages/pages.component'; +import { SharedModule } from '@app/shared/shared.module'; +import { RouterTestingModule } from '@angular/router/testing'; describe('PagesComponent', () => { let component: PagesComponent; @@ -8,6 +10,7 @@ describe('PagesComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ + imports: [SharedModule, RouterTestingModule], declarations: [PagesComponent], }).compileComponents(); });