@@ -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