Skip to content

Commit da5a4f3

Browse files
committed
Merge branch 'accessibility-settings-7.6' into accessibility-settings-8_x
# Conflicts: # src/app/accessibility/accessibility-settings.service.spec.ts # src/app/accessibility/accessibility-settings.service.ts # src/app/info/accessibility-settings/accessibility-settings.component.spec.ts # src/app/info/accessibility-settings/accessibility-settings.component.ts # src/app/shared/cookies/klaro-configuration.ts
2 parents f4fb0b3 + dcd32c4 commit da5a4f3

9 files changed

Lines changed: 281 additions & 84 deletions

src/app/accessibility/accessibility-settings.service.spec.ts

Lines changed: 44 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@ import {
44
} from '@angular/core/testing';
55
import { of } from 'rxjs';
66

7+
import { AppConfig } from '../../config/app-config.interface';
78
import { AuthService } from '../core/auth/auth.service';
89
import { EPersonDataService } from '../core/eperson/eperson-data.service';
910
import { EPerson } from '../core/eperson/models/eperson.model';
1011
import { CookieService } from '../core/services/cookie.service';
12+
import { KlaroServiceStub } from '../shared/cookies/klaro.service.stub';
1113
import { CookieServiceMock } from '../shared/mocks/cookie.service.mock';
1214
import {
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', () => {

src/app/accessibility/accessibility-settings.service.stub.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,9 @@ export class AccessibilitySettingsServiceStub {
3737

3838
convertStoredValuesToFormValues = jasmine.createSpy('convertStoredValuesToFormValues').and.returnValue({});
3939

40-
getPlaceholder = jasmine.createSpy('getPlaceholder').and.returnValue('placeholder');
40+
getDefaultValue = jasmine.createSpy('getPlaceholder').and.returnValue('placeholder');
41+
42+
isValid = jasmine.createSpy('isValid').and.returnValue(true);
43+
44+
formValuesValid = jasmine.createSpy('allValid').and.returnValue(true);
4145
}

0 commit comments

Comments
 (0)