Skip to content

Commit 80b2f71

Browse files
committed
[DSC-1742] Reinstate test for DSC-758
1 parent f79957a commit 80b2f71

1 file changed

Lines changed: 65 additions & 4 deletions

File tree

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

Lines changed: 65 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,20 @@ describe('LocaleService', () => {
3535
let authService;
3636
let routeService;
3737
let document;
38+
let spyOnGetLanguage;
39+
40+
41+
const translateServiceStub: any = {
42+
getLangs: () => {
43+
return langList;
44+
},
45+
getBrowserLang: () => {
46+
return langList;
47+
},
48+
// eslint-disable-next-line @typescript-eslint/no-empty-function
49+
use: (param: string) => {
50+
},
51+
};
3852

3953
authService = jasmine.createSpyObj('AuthService', {
4054
isAuthenticated: jasmine.createSpy('isAuthenticated'),
@@ -44,6 +58,8 @@ describe('LocaleService', () => {
4458

4559
const langList = ['en', 'xx', 'de'];
4660

61+
describe('with valid language', () => {
62+
4763
beforeEach(waitForAsync(() => {
4864
return TestBed.configureTestingModule({
4965
imports: [
@@ -58,6 +74,7 @@ describe('LocaleService', () => {
5874
{ provide: CookieService, useValue: new CookieServiceMock() },
5975
{ provide: AuthService, userValue: authService },
6076
{ provide: RouteService, useValue: routeServiceStub },
77+
{ provide: TranslateService, useValue: translateServiceStub },
6178
{ provide: Document, useValue: document },
6279
],
6380
});
@@ -73,6 +90,7 @@ describe('LocaleService', () => {
7390
serviceAsAny = service;
7491
spyOnGet = spyOn(cookieService, 'get');
7592
spyOnSet = spyOn(cookieService, 'set');
93+
spyOnGetLanguage = spyOn(routeService, 'getQueryParameterValue').withArgs('lang');
7694
});
7795

7896
describe('getCurrentLanguageCode', () => {
@@ -151,6 +169,22 @@ describe('LocaleService', () => {
151169
expectObservable(service.getLanguageCodeList()).toBe('(a|)', { a: ['fr;q=0.5', 'en-US;q=1', 'en;q=0.9'] });
152170
});
153171
});
172+
173+
describe('', () => {
174+
beforeEach(() => {
175+
spyOn(translateService, 'getLangs').and.returnValue(langList);
176+
});
177+
178+
it('should return language from browser setting', () => {
179+
spyOn(translateService, 'getBrowserLang').and.returnValue('xx');
180+
expect(service.getCurrentLanguageCode()).toBe(of('xx'));
181+
});
182+
183+
it('should return default language from config', () => {
184+
spyOn(translateService, 'getBrowserLang').and.returnValue('fr');
185+
expect(service.getCurrentLanguageCode()).toBe(of('en'));
186+
});
187+
});
154188
});
155189

156190
describe('getLanguageCodeFromCookie', () => {
@@ -175,27 +209,53 @@ describe('LocaleService', () => {
175209
});
176210

177211
it('should set the given language', () => {
178-
service.setCurrentLanguageCode('xx');
179-
expect(translateService.use).toHaveBeenCalledWith('xx');
180-
expect(service.saveLanguageCodeToCookie).toHaveBeenCalledWith('xx');
212+
service.setCurrentLanguageCode('it');
213+
expect(translateService.use).toHaveBeenCalledWith('it');
214+
expect(service.saveLanguageCodeToCookie).toHaveBeenCalledWith('it');
181215
});
182216

183217
it('should set the current language', () => {
184218
spyOn(service, 'getCurrentLanguageCode').and.returnValue(of('es'));
185219
service.setCurrentLanguageCode();
186220
expect(translateService.use).toHaveBeenCalledWith('es');
221+
expect(service.saveLanguageCodeToCookie).toHaveBeenCalledWith('es');
187222
});
188223

189224
it('should set the current language on the html tag', () => {
190225
spyOn(service, 'getCurrentLanguageCode').and.returnValue(of('es'));
191226
service.setCurrentLanguageCode();
192227
expect((service as any).document.documentElement.lang).toEqual('es');
193228
});
229+
230+
describe('should set language on init', () => {
231+
beforeEach(() => {
232+
spyOn(translateService, 'getLangs').and.returnValue(langList);
233+
spyOn(service, 'setCurrentLanguageCode');
234+
});
235+
describe('whith correct lang query param ', () => {
236+
beforeEach(() => {
237+
spyOnGetLanguage.and.returnValue(of('en'));
238+
service.initDefaults();
239+
});
240+
it('should set correct lang', () => {
241+
expect(service.setCurrentLanguageCode).toHaveBeenCalledWith('en');
242+
});
243+
});
244+
describe('whith wrong lang query param ', () => {
245+
beforeEach(() => {
246+
spyOnGetLanguage.and.returnValue(of('abcd'));
247+
service.initDefaults();
248+
});
249+
it('should not set lang', () => {
250+
expect(service.setCurrentLanguageCode).not.toHaveBeenCalled();
251+
});
252+
});
253+
});
194254
});
195255

196256
describe('', () => {
197257
it('should set quality to current language list', () => {
198-
const langListWithQuality = ['en;q=1', 'xx;q=0.9', 'de;q=0.8'];
258+
const langListWithQuality = ['en;q=1', 'it;q=0.9', 'de;q=0.8'];
199259
spyOn(service, 'setQuality').and.returnValue(langListWithQuality);
200260
service.setQuality(langList, LANG_ORIGIN.BROWSER, false);
201261
expect(service.setQuality).toHaveBeenCalledWith(langList, LANG_ORIGIN.BROWSER, false);
@@ -208,3 +268,4 @@ describe('LocaleService', () => {
208268
});
209269
});
210270
});
271+
});

0 commit comments

Comments
 (0)