72541: Fix tests, remove redundant injection and added JSDocs

This commit is contained in:
Kristof De Langhe
2020-09-07 12:01:23 +02:00
parent 18fdf7585e
commit de9f642bf9
7 changed files with 31 additions and 35 deletions

View File

@@ -1,6 +1,5 @@
import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';
import { Observable } from 'rxjs/internal/Observable';
import { AuthService } from '../auth/auth.service';
import { returnEndUserAgreementUrlTreeOnFalse } from '../shared/operators';
/**
@@ -9,8 +8,7 @@ import { returnEndUserAgreementUrlTreeOnFalse } from '../shared/operators';
*/
export abstract class AbstractEndUserAgreementGuard implements CanActivate {
constructor(protected authService: AuthService,
protected router: Router) {
constructor(protected router: Router) {
}
/**

View File

@@ -1,32 +1,30 @@
import { EndUserAgreementService } from './end-user-agreement.service';
import { Router, UrlTree } from '@angular/router';
import { AuthService } from '../auth/auth.service';
import { EndUserAgreementCookieGuard } from './end-user-agreement-cookie.guard';
describe('EndUserAgreementCookieGuard', () => {
let guard: EndUserAgreementCookieGuard;
let endUserAgreementService: EndUserAgreementService;
let authService: AuthService;
let router: Router;
beforeEach(() => {
endUserAgreementService = jasmine.createSpyObj('endUserAgreementService', {
isCookieAccepted: true
});
authService = jasmine.createSpyObj('authService', ['setRedirectUrl']);
router = jasmine.createSpyObj('router', {
navigateByUrl: {},
parseUrl: new UrlTree()
parseUrl: new UrlTree(),
createUrlTree: new UrlTree()
});
guard = new EndUserAgreementCookieGuard(endUserAgreementService, authService, router);
guard = new EndUserAgreementCookieGuard(endUserAgreementService, router);
});
describe('canActivate', () => {
describe('when the cookie has been accepted', () => {
it('should return true', (done) => {
guard.canActivate(undefined, undefined).subscribe((result) => {
guard.canActivate(undefined, { url: Object.assign({ url: 'redirect' }) } as any).subscribe((result) => {
expect(result).toEqual(true);
done();
});
@@ -38,11 +36,9 @@ describe('EndUserAgreementCookieGuard', () => {
(endUserAgreementService.isCookieAccepted as jasmine.Spy).and.returnValue(false);
});
it('should navigate the user with a redirect url', (done) => {
const redirect = 'redirect/url';
guard.canActivate(undefined, Object.assign({ url: redirect })).subscribe(() => {
expect(authService.setRedirectUrl).toHaveBeenCalledWith(redirect);
expect(router.navigateByUrl).toHaveBeenCalled();
it('should return a UrlTree', (done) => {
guard.canActivate(undefined, Object.assign({ url: 'redirect' })).subscribe((result) => {
expect(result).toEqual(jasmine.any(UrlTree));
done();
});
});

View File

@@ -3,7 +3,6 @@ import { AbstractEndUserAgreementGuard } from './abstract-end-user-agreement.gua
import { Observable } from 'rxjs/internal/Observable';
import { of as observableOf } from 'rxjs';
import { EndUserAgreementService } from './end-user-agreement.service';
import { AuthService } from '../auth/auth.service';
import { Router } from '@angular/router';
/**
@@ -13,9 +12,8 @@ import { Router } from '@angular/router';
export class EndUserAgreementCookieGuard extends AbstractEndUserAgreementGuard {
constructor(protected endUserAgreementService: EndUserAgreementService,
protected authService: AuthService,
protected router: Router) {
super(authService, router);
super(router);
}
/**

View File

@@ -8,26 +8,25 @@ describe('EndUserAgreementGuard', () => {
let guard: EndUserAgreementCurrentUserGuard;
let endUserAgreementService: EndUserAgreementService;
let authService: AuthService;
let router: Router;
beforeEach(() => {
endUserAgreementService = jasmine.createSpyObj('endUserAgreementService', {
hasCurrentUserAcceptedAgreement: observableOf(true)
});
authService = jasmine.createSpyObj('authService', ['setRedirectUrl']);
router = jasmine.createSpyObj('router', {
navigateByUrl: {},
parseUrl: new UrlTree()
parseUrl: new UrlTree(),
createUrlTree: new UrlTree()
});
guard = new EndUserAgreementCurrentUserGuard(endUserAgreementService, authService, router);
guard = new EndUserAgreementCurrentUserGuard(endUserAgreementService, router);
});
describe('canActivate', () => {
describe('when the user has accepted the agreement', () => {
it('should return true', (done) => {
guard.canActivate(undefined, undefined).subscribe((result) => {
guard.canActivate(undefined, Object.assign({ url: 'redirect' })).subscribe((result) => {
expect(result).toEqual(true);
done();
});
@@ -39,11 +38,9 @@ describe('EndUserAgreementGuard', () => {
(endUserAgreementService.hasCurrentUserAcceptedAgreement as jasmine.Spy).and.returnValue(observableOf(false));
});
it('should navigate the user with a redirect url', (done) => {
const redirect = 'redirect/url';
guard.canActivate(undefined, Object.assign({ url: redirect })).subscribe(() => {
expect(authService.setRedirectUrl).toHaveBeenCalledWith(redirect);
expect(router.navigateByUrl).toHaveBeenCalled();
it('should return a UrlTree', (done) => {
guard.canActivate(undefined, Object.assign({ url: 'redirect' })).subscribe((result) => {
expect(result).toEqual(jasmine.any(UrlTree));
done();
});
});

View File

@@ -2,7 +2,6 @@ import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/internal/Observable';
import { AbstractEndUserAgreementGuard } from './abstract-end-user-agreement.guard';
import { EndUserAgreementService } from './end-user-agreement.service';
import { AuthService } from '../auth/auth.service';
import { Router } from '@angular/router';
/**
@@ -12,9 +11,8 @@ import { Router } from '@angular/router';
export class EndUserAgreementCurrentUserGuard extends AbstractEndUserAgreementGuard {
constructor(protected endUserAgreementService: EndUserAgreementService,
protected authService: AuthService,
protected router: Router) {
super(authService, router);
super(router);
}
/**

View File

@@ -195,7 +195,9 @@ export const returnUnauthorizedUrlTreeOnFalse = (router: Router) =>
/**
* Operator that returns a UrlTree to the unauthorized page when the boolean received is false
* @param router
* @param router Router
* @param redirect Redirect URL to add to the UrlTree. This is used to redirect back to the original route after the
* user accepts the agreement.
*/
export const returnEndUserAgreementUrlTreeOnFalse = (router: Router, redirect: string) =>
(source: Observable<boolean>): Observable<boolean | UrlTree> =>

View File

@@ -5,11 +5,12 @@ import { EndUserAgreementService } from '../../core/end-user-agreement/end-user-
import { NotificationsService } from '../../shared/notifications/notifications.service';
import { TranslateModule } from '@ngx-translate/core';
import { AuthService } from '../../core/auth/auth.service';
import { Router } from '@angular/router';
import { ActivatedRoute, Router } from '@angular/router';
import { of as observableOf } from 'rxjs';
import { Store } from '@ngrx/store';
import { By } from '@angular/platform-browser';
import { LogOutAction } from '../../core/auth/auth.actions';
import { ActivatedRouteStub } from '../../shared/testing/active-router.stub';
describe('EndUserAgreementComponent', () => {
let component: EndUserAgreementComponent;
@@ -20,6 +21,7 @@ describe('EndUserAgreementComponent', () => {
let authService: AuthService;
let store;
let router: Router;
let route: ActivatedRoute;
let redirectUrl;
@@ -32,11 +34,15 @@ describe('EndUserAgreementComponent', () => {
});
notificationsService = jasmine.createSpyObj('notificationsService', ['success', 'error']);
authService = jasmine.createSpyObj('authService', {
isAuthenticated: observableOf(true),
getRedirectUrl: observableOf(redirectUrl)
isAuthenticated: observableOf(true)
});
store = jasmine.createSpyObj('store', ['dispatch']);
router = jasmine.createSpyObj('router', ['navigate', 'navigateByUrl']);
route = Object.assign(new ActivatedRouteStub(), {
queryParams: observableOf({
redirect: redirectUrl
})
}) as any;
}
beforeEach(async(() => {
@@ -49,7 +55,8 @@ describe('EndUserAgreementComponent', () => {
{ provide: NotificationsService, useValue: notificationsService },
{ provide: AuthService, useValue: authService },
{ provide: Store, useValue: store },
{ provide: Router, useValue: router }
{ provide: Router, useValue: router },
{ provide: ActivatedRoute, useValue: route }
],
schemas: [NO_ERRORS_SCHEMA]
}).compileComponents();