diff --git a/src/app/accessibility/accessibility-settings.service.spec.ts b/src/app/accessibility/accessibility-settings.service.spec.ts index 04ae5b42be..a0952fc0db 100644 --- a/src/app/accessibility/accessibility-settings.service.spec.ts +++ b/src/app/accessibility/accessibility-settings.service.spec.ts @@ -13,7 +13,6 @@ import { of } from 'rxjs'; import { EPerson } from '../core/eperson/models/eperson.model'; import { fakeAsync, flush } from '@angular/core/testing'; import { createSuccessfulRemoteDataObject$, createFailedRemoteDataObject$ } from '../shared/remote-data.utils'; -import { KlaroService } from '../shared/cookies/klaro.service'; import { KlaroServiceStub } from '../shared/cookies/klaro.service.stub'; @@ -22,13 +21,15 @@ describe('accessibilitySettingsService', () => { let cookieService: CookieServiceMock; let authService: AuthServiceStub; let ePersonService: EPersonDataService; - let klaroService: KlaroService; + let klaroService: KlaroServiceStub; beforeEach(() => { cookieService = new CookieServiceMock(); authService = new AuthServiceStub(); klaroService = new KlaroServiceStub(); + klaroService.getSavedPreferences.and.returnValue(of({ accessibility: true })); + ePersonService = jasmine.createSpyObj('ePersonService', { createPatchFromCache: of([{ op: 'add', @@ -176,12 +177,12 @@ describe('accessibilitySettingsService', () => { describe('setSettings', () => { beforeEach(() => { - service.setSettingsInCookie = jasmine.createSpy('setSettingsInCookie'); + service.setSettingsInCookie = jasmine.createSpy('setSettingsInCookie').and.returnValue(of('cookie')); }); it('should attempt to set settings in metadata', () => { service.setSettingsInAuthenticatedUserMetadata = - jasmine.createSpy('setSettingsInAuthenticatedUserMetadata').and.returnValue(of(false)); + jasmine.createSpy('setSettingsInAuthenticatedUserMetadata').and.returnValue(of('failed')); const settings: AccessibilitySettings = { notificationTimeOut: '1000', @@ -205,7 +206,7 @@ describe('accessibilitySettingsService', () => { it('should not set settings in cookie if metadata succeeded', () => { service.setSettingsInAuthenticatedUserMetadata = - jasmine.createSpy('setSettingsInAuthenticatedUserMetadata').and.returnValue(of(true)); + jasmine.createSpy('setSettingsInAuthenticatedUserMetadata').and.returnValue(of('metadata')); const settings: AccessibilitySettings = { notificationTimeOut: '1000', @@ -217,7 +218,7 @@ describe('accessibilitySettingsService', () => { it('should return \'metadata\' if settings are stored in metadata', () => { service.setSettingsInAuthenticatedUserMetadata = - jasmine.createSpy('setSettingsInAuthenticatedUserMetadata').and.returnValue(of(true)); + jasmine.createSpy('setSettingsInAuthenticatedUserMetadata').and.returnValue(of('metadata')); const settings: AccessibilitySettings = { notificationTimeOut: '1000', @@ -280,11 +281,11 @@ describe('accessibilitySettingsService', () => { expect(service.setSettingsInMetadata).toHaveBeenCalled(); })); - it('should emit false when the user is not authenticated', fakeAsync(() => { + it('should emit "failed" when the user is not authenticated', fakeAsync(() => { authService.getAuthenticatedUserFromStoreIfAuthenticated = jasmine.createSpy().and.returnValue(of(null)); service.setSettingsInAuthenticatedUserMetadata({}) - .subscribe(value => expect(value).toBeFalse()); + .subscribe(value => expect(value).toEqual('failed')); flush(); expect(service.setSettingsInMetadata).not.toHaveBeenCalled(); @@ -320,23 +321,23 @@ describe('accessibilitySettingsService', () => { expect(ePersonService.patch).toHaveBeenCalled(); }); - it('should emit true when the update succeeded', fakeAsync(() => { + it('should emit "metadata" when the update succeeded', fakeAsync(() => { ePersonService.patch = jasmine.createSpy().and.returnValue(createSuccessfulRemoteDataObject$({})); service.setSettingsInMetadata(ePerson, { ['liveRegionTimeOut']: '500' }) .subscribe(value => { - expect(value).toBeTrue(); + expect(value).toEqual('metadata'); }); flush(); })); - it('should emit false when the update failed', fakeAsync(() => { + it('should emit "failed" when the update failed', fakeAsync(() => { ePersonService.patch = jasmine.createSpy().and.returnValue(createFailedRemoteDataObject$()); service.setSettingsInMetadata(ePerson, { ['liveRegionTimeOut']: '500' }) .subscribe(value => { - expect(value).toBeFalse(); + expect(value).toEqual('failed'); }); flush(); @@ -349,16 +350,20 @@ describe('accessibilitySettingsService', () => { cookieService.remove = jasmine.createSpy('remove'); }); - it('should store the settings in a cookie', () => { - service.setSettingsInCookie({ ['liveRegionTimeOut']: '500' }); + it('should store the settings in a cookie', fakeAsync(() => { + service.setSettingsInCookie({ ['liveRegionTimeOut']: '500' }).subscribe(); + flush(); expect(cookieService.set).toHaveBeenCalled(); - }); + })); + + it('should remove the cookie when the settings are empty', fakeAsync(() => { + service.setSettingsInCookie({}).subscribe(); + + flush(); - it('should remove the cookie when the settings are empty', () => { - service.setSettingsInCookie({}); expect(cookieService.set).not.toHaveBeenCalled(); expect(cookieService.remove).toHaveBeenCalled(); - }); + })); }); describe('convertFormValuesToStoredValues', () => {