@@ -10,8 +10,8 @@ describe('useLocale', () => {
1010 // onUnmounted state pollution (document.documentElement.lang) across tests
1111 let wrappers : Array < ReturnType < typeof mount > > = [ ] ;
1212
13- const makeLanguage = ( language : string , localeCode : string ) : FormLanguage => ( {
14- isDefault : false ,
13+ const makeLanguage = ( language : string , localeCode : string , isDefault = false ) : FormLanguage => ( {
14+ isDefault,
1515 language,
1616 locale : new Intl . Locale ( localeCode ) ,
1717 } ) ;
@@ -49,7 +49,7 @@ describe('useLocale', () => {
4949 wrappers = [ ] ;
5050 } ) ;
5151
52- describe ( 'language priority order (saved > browser > first)' , ( ) => {
52+ describe ( 'language priority order (saved > designer default > browser > first)' , ( ) => {
5353 it ( 'prefers saved locale over browser language' , ( ) => {
5454 localStorage . setItem ( STORAGE_KEY as string , 'fr' ) ;
5555 vi . spyOn ( navigator , 'languages' , 'get' ) . mockReturnValue ( [ 'en' ] ) ;
@@ -60,7 +60,19 @@ describe('useLocale', () => {
6060 expect ( document . documentElement . lang ) . toBe ( 'fr' ) ;
6161 } ) ;
6262
63- it ( 'uses browser language when no saved locale' , ( ) => {
63+ it ( 'prefers designer default over browser language when no saved locale' , ( ) => {
64+ vi . spyOn ( navigator , 'languages' , 'get' ) . mockReturnValue ( [ 'en' ] ) ;
65+
66+ const formRef = makeFormRef ( [
67+ makeLanguage ( 'English' , 'en' ) ,
68+ makeLanguage ( 'French' , 'fr' , true ) ,
69+ ] ) ;
70+ mountLocale ( formRef ) ;
71+
72+ expect ( document . documentElement . lang ) . toBe ( 'fr' ) ;
73+ } ) ;
74+
75+ it ( 'uses browser language when no saved locale and no designer default' , ( ) => {
6476 vi . spyOn ( navigator , 'languages' , 'get' ) . mockReturnValue ( [ 'jp' ] ) ;
6577
6678 const formRef = makeFormRef ( [ makeLanguage ( 'English' , 'en' ) , makeLanguage ( 'Japanese' , 'jp' ) ] ) ;
@@ -69,7 +81,7 @@ describe('useLocale', () => {
6981 expect ( document . documentElement . lang ) . toBe ( 'jp' ) ;
7082 } ) ;
7183
72- it ( 'falls back to first available language when no saved locale and no browser match' , ( ) => {
84+ it ( 'falls back to first available language when no saved locale, no designer default, and no browser match' , ( ) => {
7385 vi . spyOn ( navigator , 'languages' , 'get' ) . mockReturnValue ( [ 'de' ] ) ;
7486
7587 const formRef = makeFormRef ( [ makeLanguage ( 'English' , 'en' ) , makeLanguage ( 'French' , 'fr' ) ] ) ;
0 commit comments