Skip to content

Commit 92f5c6f

Browse files
Do not use disabled or non-existing languages from language cookie
1 parent e4f483c commit 92f5c6f

3 files changed

Lines changed: 27 additions & 15 deletions

File tree

src/app/core/locale/locale.service.spec.ts

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -62,25 +62,33 @@ describe('LocaleService test suite', () => {
6262
});
6363

6464
describe('getCurrentLanguageCode', () => {
65-
it('should return language saved on cookie', () => {
65+
beforeEach(() => {
66+
spyOn(translateService, 'getLangs').and.returnValue(langList);
67+
});
68+
69+
it('should return the language saved on cookie if it\'s a valid & active language', () => {
6670
spyOnGet.and.returnValue('de');
6771
expect(service.getCurrentLanguageCode()).toBe('de');
6872
});
6973

70-
describe('', () => {
71-
beforeEach(() => {
72-
spyOn(translateService, 'getLangs').and.returnValue(langList);
73-
});
74+
it('should return the default language if the cookie language is disabled', () => {
75+
spyOnGet.and.returnValue('disabled');
76+
expect(service.getCurrentLanguageCode()).toBe('en');
77+
});
7478

75-
it('should return language from browser setting', () => {
76-
spyOn(translateService, 'getBrowserLang').and.returnValue('it');
77-
expect(service.getCurrentLanguageCode()).toBe('it');
78-
});
79+
it('should return the default language if the cookie language does not exist', () => {
80+
spyOnGet.and.returnValue('does-not-exist');
81+
expect(service.getCurrentLanguageCode()).toBe('en');
82+
});
83+
84+
it('should return language from browser setting', () => {
85+
spyOn(translateService, 'getBrowserLang').and.returnValue('it');
86+
expect(service.getCurrentLanguageCode()).toBe('it');
87+
});
7988

80-
it('should return default language from config', () => {
81-
spyOn(translateService, 'getBrowserLang').and.returnValue('fr');
82-
expect(service.getCurrentLanguageCode()).toBe('en');
83-
});
89+
it('should return default language from config', () => {
90+
spyOn(translateService, 'getBrowserLang').and.returnValue('fr');
91+
expect(service.getCurrentLanguageCode()).toBe('en');
8492
});
8593
});
8694

src/app/core/locale/locale.service.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { map, mergeMap, take } from 'rxjs/operators';
1111
import { NativeWindowRef, NativeWindowService } from '../services/window.service';
1212
import { RouteService } from '../services/route.service';
1313
import { DOCUMENT } from '@angular/common';
14+
import { LangConfig } from '../../../config/lang-config.interface';
1415

1516
export const LANG_COOKIE = 'dsLanguage';
1617

@@ -52,8 +53,7 @@ export class LocaleService {
5253
getCurrentLanguageCode(): string {
5354
// Attempt to get the language from a cookie
5455
let lang = this.getLanguageCodeFromCookie();
55-
if (isEmpty(lang)) {
56-
// Cookie not found
56+
if (isEmpty(lang) || environment.languages.find((langConfig: LangConfig) => langConfig.code === lang && langConfig.active) === undefined) {
5757
// Attempt to get the browser language from the user
5858
if (this.translate.getLangs().includes(this.translate.getBrowserLang())) {
5959
lang = this.translate.getBrowserLang();

src/environments/environment.test.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,10 @@ export const environment: AppConfig = {
178178
code: 'lv',
179179
label: 'Latviešu',
180180
active: true,
181+
}, {
182+
code: 'disabled',
183+
label: 'Disabled',
184+
active: false,
181185
}],
182186

183187
// Browse-By Pages

0 commit comments

Comments
 (0)