diff --git a/src/app/core/end-user-agreement/end-user-agreement-cookie.guard.spec.ts b/src/app/core/end-user-agreement/end-user-agreement-cookie.guard.spec.ts new file mode 100644 index 0000000000..feeb8d7903 --- /dev/null +++ b/src/app/core/end-user-agreement/end-user-agreement-cookie.guard.spec.ts @@ -0,0 +1,51 @@ +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() + }); + + guard = new EndUserAgreementCookieGuard(endUserAgreementService, authService, router); + }); + + describe('canActivate', () => { + describe('when the cookie has been accepted', () => { + it('should return true', (done) => { + guard.canActivate(undefined, undefined).subscribe((result) => { + expect(result).toEqual(true); + done(); + }); + }); + }); + + describe('when the cookie hasn\'t been accepted', () => { + beforeEach(() => { + (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(); + done(); + }); + }); + }); + }); +}); diff --git a/src/app/core/end-user-agreement/end-user-agreement.service.spec.ts b/src/app/core/end-user-agreement/end-user-agreement.service.spec.ts index a292b2371c..4b0a37a94f 100644 --- a/src/app/core/end-user-agreement/end-user-agreement.service.spec.ts +++ b/src/app/core/end-user-agreement/end-user-agreement.service.spec.ts @@ -47,8 +47,8 @@ describe('EndUserAgreementService', () => { cookie.set(END_USER_AGREEMENT_COOKIE, true); }); - it('hasCurrentUserAcceptedAgreement should return true', (done) => { - service.hasCurrentUserAcceptedAgreement().subscribe((result) => { + it('hasCurrentUserOrCookieAcceptedAgreement should return true', (done) => { + service.hasCurrentUserOrCookieAcceptedAgreement(false).subscribe((result) => { expect(result).toEqual(true); done(); }); @@ -75,8 +75,8 @@ describe('EndUserAgreementService', () => { (authService.getAuthenticatedUserFromStore as jasmine.Spy).and.returnValue(observableOf(userWithMetadata)); }); - it('hasCurrentUserAcceptedAgreement should return true', (done) => { - service.hasCurrentUserAcceptedAgreement().subscribe((result) => { + it('hasCurrentUserOrCookieAcceptedAgreement should return true', (done) => { + service.hasCurrentUserOrCookieAcceptedAgreement(false).subscribe((result) => { expect(result).toEqual(true); done(); }); @@ -88,8 +88,8 @@ describe('EndUserAgreementService', () => { (authService.getAuthenticatedUserFromStore as jasmine.Spy).and.returnValue(observableOf(userWithoutMetadata)); }); - it('hasCurrentUserAcceptedAgreement should return false', (done) => { - service.hasCurrentUserAcceptedAgreement().subscribe((result) => { + it('hasCurrentUserOrCookieAcceptedAgreement should return false', (done) => { + service.hasCurrentUserOrCookieAcceptedAgreement(false).subscribe((result) => { expect(result).toEqual(false); done(); }); @@ -117,8 +117,8 @@ describe('EndUserAgreementService', () => { (authService.isAuthenticated as jasmine.Spy).and.returnValue(observableOf(false)); }); - it('hasCurrentUserAcceptedAgreement should return false', (done) => { - service.hasCurrentUserAcceptedAgreement().subscribe((result) => { + it('hasCurrentUserOrCookieAcceptedAgreement should return false', (done) => { + service.hasCurrentUserOrCookieAcceptedAgreement(false).subscribe((result) => { expect(result).toEqual(false); done(); }); diff --git a/src/app/info/end-user-agreement/end-user-agreement.component.spec.ts b/src/app/info/end-user-agreement/end-user-agreement.component.spec.ts index 875d6e2dbd..33cd0bfd98 100644 --- a/src/app/info/end-user-agreement/end-user-agreement.component.spec.ts +++ b/src/app/info/end-user-agreement/end-user-agreement.component.spec.ts @@ -27,7 +27,7 @@ describe('EndUserAgreementComponent', () => { redirectUrl = 'redirect/url'; endUserAgreementService = jasmine.createSpyObj('endUserAgreementService', { - hasCurrentUserAcceptedAgreement: observableOf(false), + hasCurrentUserOrCookieAcceptedAgreement : observableOf(false), setUserAcceptedAgreement: observableOf(true) }); notificationsService = jasmine.createSpyObj('notificationsService', ['success', 'error']); @@ -63,7 +63,7 @@ describe('EndUserAgreementComponent', () => { describe('when the user hasn\'t accepted the agreement', () => { beforeEach(() => { - (endUserAgreementService.hasCurrentUserAcceptedAgreement as jasmine.Spy).and.returnValue(observableOf(false)); + (endUserAgreementService.hasCurrentUserOrCookieAcceptedAgreement as jasmine.Spy).and.returnValue(observableOf(false)); component.ngOnInit(); fixture.detectChanges(); }); @@ -80,7 +80,7 @@ describe('EndUserAgreementComponent', () => { describe('when the user has accepted the agreement', () => { beforeEach(() => { - (endUserAgreementService.hasCurrentUserAcceptedAgreement as jasmine.Spy).and.returnValue(observableOf(true)); + (endUserAgreementService.hasCurrentUserOrCookieAcceptedAgreement as jasmine.Spy).and.returnValue(observableOf(true)); component.ngOnInit(); fixture.detectChanges(); });