@@ -4,10 +4,12 @@ import {
44} from '@angular/core/testing' ;
55import { of } from 'rxjs' ;
66
7+ import { AppConfig } from '../../config/app-config.interface' ;
78import { AuthService } from '../core/auth/auth.service' ;
89import { EPersonDataService } from '../core/eperson/eperson-data.service' ;
910import { EPerson } from '../core/eperson/models/eperson.model' ;
1011import { CookieService } from '../core/services/cookie.service' ;
12+ import { KlaroServiceStub } from '../shared/cookies/klaro.service.stub' ;
1113import { CookieServiceMock } from '../shared/mocks/cookie.service.mock' ;
1214import {
1315 createFailedRemoteDataObject$ ,
@@ -29,10 +31,16 @@ describe('accessibilitySettingsService', () => {
2931 let cookieService : CookieServiceMock ;
3032 let authService : AuthServiceStub ;
3133 let ePersonService : EPersonDataService ;
34+ let klaroService : KlaroServiceStub ;
35+ let appConfig : AppConfig ;
3236
3337 beforeEach ( ( ) => {
3438 cookieService = new CookieServiceMock ( ) ;
3539 authService = new AuthServiceStub ( ) ;
40+ klaroService = new KlaroServiceStub ( ) ;
41+ appConfig = { accessibility : { cookieExpirationDuration : 10 } } as AppConfig ;
42+
43+ klaroService . getSavedPreferences . and . returnValue ( of ( { accessibility : true } ) ) ;
3644
3745 ePersonService = jasmine . createSpyObj ( 'ePersonService' , {
3846 createPatchFromCache : of ( [ {
@@ -46,6 +54,8 @@ describe('accessibilitySettingsService', () => {
4654 cookieService as unknown as CookieService ,
4755 authService as unknown as AuthService ,
4856 ePersonService ,
57+ klaroService ,
58+ appConfig ,
4959 ) ;
5060 } ) ;
5161
@@ -180,12 +190,12 @@ describe('accessibilitySettingsService', () => {
180190
181191 describe ( 'setSettings' , ( ) => {
182192 beforeEach ( ( ) => {
183- service . setSettingsInCookie = jasmine . createSpy ( 'setSettingsInCookie' ) ;
193+ service . setSettingsInCookie = jasmine . createSpy ( 'setSettingsInCookie' ) . and . returnValue ( of ( 'cookie' ) ) ;
184194 } ) ;
185195
186196 it ( 'should attempt to set settings in metadata' , ( ) => {
187197 service . setSettingsInAuthenticatedUserMetadata =
188- jasmine . createSpy ( 'setSettingsInAuthenticatedUserMetadata' ) . and . returnValue ( of ( false ) ) ;
198+ jasmine . createSpy ( 'setSettingsInAuthenticatedUserMetadata' ) . and . returnValue ( of ( 'failed' ) ) ;
189199
190200 const settings : AccessibilitySettings = {
191201 notificationTimeOut : '1000' ,
@@ -209,7 +219,7 @@ describe('accessibilitySettingsService', () => {
209219
210220 it ( 'should not set settings in cookie if metadata succeeded' , ( ) => {
211221 service . setSettingsInAuthenticatedUserMetadata =
212- jasmine . createSpy ( 'setSettingsInAuthenticatedUserMetadata' ) . and . returnValue ( of ( true ) ) ;
222+ jasmine . createSpy ( 'setSettingsInAuthenticatedUserMetadata' ) . and . returnValue ( of ( 'metadata' ) ) ;
213223
214224 const settings : AccessibilitySettings = {
215225 notificationTimeOut : '1000' ,
@@ -221,7 +231,7 @@ describe('accessibilitySettingsService', () => {
221231
222232 it ( 'should return \'metadata\' if settings are stored in metadata' , ( ) => {
223233 service . setSettingsInAuthenticatedUserMetadata =
224- jasmine . createSpy ( 'setSettingsInAuthenticatedUserMetadata' ) . and . returnValue ( of ( true ) ) ;
234+ jasmine . createSpy ( 'setSettingsInAuthenticatedUserMetadata' ) . and . returnValue ( of ( 'metadata' ) ) ;
225235
226236 const settings : AccessibilitySettings = {
227237 notificationTimeOut : '1000' ,
@@ -284,11 +294,11 @@ describe('accessibilitySettingsService', () => {
284294 expect ( service . setSettingsInMetadata ) . toHaveBeenCalled ( ) ;
285295 } ) ) ;
286296
287- it ( 'should emit false when the user is not authenticated' , fakeAsync ( ( ) => {
297+ it ( 'should emit "failed" when the user is not authenticated' , fakeAsync ( ( ) => {
288298 authService . getAuthenticatedUserFromStoreIfAuthenticated = jasmine . createSpy ( ) . and . returnValue ( of ( null ) ) ;
289299
290300 service . setSettingsInAuthenticatedUserMetadata ( { } )
291- . subscribe ( value => expect ( value ) . toBeFalse ( ) ) ;
301+ . subscribe ( value => expect ( value ) . toEqual ( 'failed' ) ) ;
292302 flush ( ) ;
293303
294304 expect ( service . setSettingsInMetadata ) . not . toHaveBeenCalled ( ) ;
@@ -324,23 +334,23 @@ describe('accessibilitySettingsService', () => {
324334 expect ( ePersonService . patch ) . toHaveBeenCalled ( ) ;
325335 } ) ;
326336
327- it ( 'should emit true when the update succeeded' , fakeAsync ( ( ) => {
337+ it ( 'should emit "metadata" when the update succeeded' , fakeAsync ( ( ) => {
328338 ePersonService . patch = jasmine . createSpy ( ) . and . returnValue ( createSuccessfulRemoteDataObject$ ( { } ) ) ;
329339
330340 service . setSettingsInMetadata ( ePerson , { [ 'liveRegionTimeOut' ] : '500' } )
331341 . subscribe ( value => {
332- expect ( value ) . toBeTrue ( ) ;
342+ expect ( value ) . toEqual ( 'metadata' ) ;
333343 } ) ;
334344
335345 flush ( ) ;
336346 } ) ) ;
337347
338- it ( 'should emit false when the update failed' , fakeAsync ( ( ) => {
348+ it ( 'should emit "failed" when the update failed' , fakeAsync ( ( ) => {
339349 ePersonService . patch = jasmine . createSpy ( ) . and . returnValue ( createFailedRemoteDataObject$ ( ) ) ;
340350
341351 service . setSettingsInMetadata ( ePerson , { [ 'liveRegionTimeOut' ] : '500' } )
342352 . subscribe ( value => {
343- expect ( value ) . toBeFalse ( ) ;
353+ expect ( value ) . toEqual ( 'failed' ) ;
344354 } ) ;
345355
346356 flush ( ) ;
@@ -353,16 +363,34 @@ describe('accessibilitySettingsService', () => {
353363 cookieService . remove = jasmine . createSpy ( 'remove' ) ;
354364 } ) ;
355365
356- it ( 'should store the settings in a cookie' , ( ) => {
357- service . setSettingsInCookie ( { [ 'liveRegionTimeOut' ] : '500' } ) ;
366+ it ( 'should fail to store settings in the cookie when the user has not accepted the cookie' , fakeAsync ( ( ) => {
367+ klaroService . getSavedPreferences . and . returnValue ( of ( { accessibility : false } ) ) ;
368+
369+ service . setSettingsInCookie ( { [ 'liveRegionTimeOut' ] : '500' } ) . subscribe ( value => {
370+ expect ( value ) . toEqual ( 'failed' ) ;
371+ } ) ;
372+ flush ( ) ;
373+ expect ( cookieService . set ) . not . toHaveBeenCalled ( ) ;
374+ } ) ) ;
375+
376+ it ( 'should store the settings in a cookie' , fakeAsync ( ( ) => {
377+ service . setSettingsInCookie ( { [ 'liveRegionTimeOut' ] : '500' } ) . subscribe ( value => {
378+ expect ( value ) . toEqual ( 'cookie' ) ;
379+ } ) ;
380+ flush ( ) ;
358381 expect ( cookieService . set ) . toHaveBeenCalled ( ) ;
359- } ) ;
382+ } ) ) ;
383+
384+ it ( 'should remove the cookie when the settings are empty' , fakeAsync ( ( ) => {
385+ service . setSettingsInCookie ( { } ) . subscribe ( value => {
386+ expect ( value ) . toEqual ( 'cookie' ) ;
387+ } ) ;
388+
389+ flush ( ) ;
360390
361- it ( 'should remove the cookie when the settings are empty' , ( ) => {
362- service . setSettingsInCookie ( { } ) ;
363391 expect ( cookieService . set ) . not . toHaveBeenCalled ( ) ;
364392 expect ( cookieService . remove ) . toHaveBeenCalled ( ) ;
365- } ) ;
393+ } ) ) ;
366394 } ) ;
367395
368396 describe ( 'convertFormValuesToStoredValues' , ( ) => {
0 commit comments