2021-06-26 23:23:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< ? php  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								namespace  Tests ;  
						 
					
						
							
								
									
										
										
										
											2017-03-05 23:10:06 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  LanguageTest  extends  TestCase  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2017-03-05 23:34:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    protected  $langs ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  LanguageTest  constructor . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-31 04:29:59 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    protected  function  setUp () :  void 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 23:34:54 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        parent :: setUp (); 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-05 20:07:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> langs  =  array_diff ( scandir ( resource_path ( 'lang' )),  [ '..' ,  '.' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 23:34:54 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-29 23:47:41 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  test_locales_config_key_set_properly () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $configLocales  =  config ( 'app.locales' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        sort ( $configLocales ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        sort ( $this -> langs ); 
							 
						 
					
						
							
								
									
										
										
										
											2020-03-05 06:14:25 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> assertEquals ( implode ( ':' ,  $configLocales ),  implode ( ':' ,  $this -> langs ),  'app.locales configuration variable does not match those found in lang files' ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-29 23:47:41 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-04-05 20:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    // Not part of standard phpunit test runs since we sometimes expect non-added langs.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  do_test_locales_all_have_language_dropdown_entry () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $dropdownLocales  =  array_keys ( trans ( 'settings.language_select' ,  [],  'en' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        sort ( $dropdownLocales ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        sort ( $this -> langs ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $diffs  =  array_diff ( $this -> langs ,  $dropdownLocales ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( count ( $diffs )  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $diffText  =  implode ( ',' ,  $diffs ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $this -> addWarning ( " Languages:  { $diffText }  found in files but not in language select dropdown. " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> assertTrue ( true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-29 23:47:41 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    public  function  test_correct_language_if_not_logged_in () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $loginReq  =  $this -> get ( '/login' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $loginReq -> assertSee ( 'Log In' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $loginPageFrenchReq  =  $this -> get ( '/login' ,  [ 'Accept-Language'  =>  'fr' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $loginPageFrenchReq -> assertSee ( 'Se Connecter' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-08-12 20:34:14 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  test_public_lang_autodetect_can_be_disabled () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        config () -> set ( 'app.auto_detect_locale' ,  false ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $loginReq  =  $this -> get ( '/login' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $loginReq -> assertSee ( 'Log In' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $loginPageFrenchReq  =  $this -> get ( '/login' ,  [ 'Accept-Language'  =>  'fr' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $loginPageFrenchReq -> assertDontSee ( 'Se Connecter' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 23:34:54 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    public  function  test_all_lang_files_loadable () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $files  =  array_diff ( scandir ( resource_path ( 'lang/en' )),  [ '..' ,  '.' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        foreach  ( $this -> langs  as  $lang )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            foreach  ( $files  as  $file )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $loadError  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-26 23:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 23:34:54 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    $translations  =  trans ( str_replace ( '.php' ,  '' ,  $file ),  [],  $lang ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                }  catch  ( \Exception  $e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    $loadError  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                $this -> assertFalse ( $loadError ,  " Translation file  { $lang } / { $file }  failed to load " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-22 20:18:26 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  test_rtl_config_set_if_lang_is_rtl () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> asEditor (); 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-26 23:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> assertFalse ( config ( 'app.rtl' ),  'App RTL config should be false by default' ); 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-22 20:18:26 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        setting () -> putUser ( $this -> getEditor (),  'language' ,  'ar' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> get ( '/' ); 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-26 23:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> assertTrue ( config ( 'app.rtl' ),  'App RTL config should have been set to true by middleware' ); 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-22 20:18:26 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-26 23:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}