2021-06-26 23:23:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< ? php  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								namespace  Tests\Commands ;  
						 
					
						
							
								
									
										
										
										
											2021-02-12 06:42:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								use  BookStack\Entities\Models\Page ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								use  Symfony\Component\Console\Exception\RuntimeException ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								use  Tests\TestCase ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  UpdateUrlCommandTest  extends  TestCase  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2021-02-12 07:14:37 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  test_command_updates_page_content () 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-12 06:42:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $page  =  Page :: query () -> first (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $page -> html  =  '<a href="https://example.com/donkeys"></a>' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $page -> save (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> artisan ( 'bookstack:update-url https://example.com https://cats.example.com' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            -> expectsQuestion ( " This will search for  \" https://example.com \"  in your database and replace it with   \" https://cats.example.com \" . \n Are you sure you want to proceed? " ,  'y' ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-26 23:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            -> expectsQuestion ( 'This operation could cause issues if used incorrectly. Have you made a backup of your existing database?' ,  'y' ); 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-12 06:42:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> assertDatabaseHas ( 'pages' ,  [ 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-26 23:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            'id'    =>  $page -> id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            'html'  =>  '<a href="https://cats.example.com/donkeys"></a>' , 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-12 06:42:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-02-12 07:14:37 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    public  function  test_command_requires_valid_url () 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-12 06:42:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-26 23:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $badUrlMessage  =  'The given urls are expected to be full urls starting with http:// or https://' ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-12 06:42:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> artisan ( 'bookstack:update-url //example.com https://cats.example.com' ) -> expectsOutput ( $badUrlMessage ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> artisan ( 'bookstack:update-url https://example.com htts://cats.example.com' ) -> expectsOutput ( $badUrlMessage ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> artisan ( 'bookstack:update-url example.com https://cats.example.com' ) -> expectsOutput ( $badUrlMessage ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> expectException ( RuntimeException :: class ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> artisan ( 'bookstack:update-url https://cats.example.com' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-02-12 07:14:37 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    public  function  test_command_updates_settings () 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-12 06:42:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        setting () -> put ( 'my-custom-item' ,  'https://example.com/donkey/cat' ); 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-12 07:14:37 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> runUpdate ( 'https://example.com' ,  'https://cats.example.com' ); 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-12 06:42:36 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $settingVal  =  setting ( 'my-custom-item' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> assertEquals ( 'https://cats.example.com/donkey/cat' ,  $settingVal ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-12 07:14:37 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  test_command_updates_array_settings () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        setting () -> put ( 'my-custom-array-item' ,  [[ 'name'  =>  'a https://example.com/donkey/cat url' ]]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> runUpdate ( 'https://example.com' ,  'https://cats.example.com' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $settingVal  =  setting ( 'my-custom-array-item' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> assertEquals ( 'a https://cats.example.com/donkey/cat url' ,  $settingVal [ 0 ][ 'name' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    protected  function  runUpdate ( string  $oldUrl ,  string  $newUrl ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> artisan ( " bookstack:update-url  { $oldUrl }   { $newUrl } " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            -> expectsQuestion ( " This will search for  \" { $oldUrl } \"  in your database and replace it with   \" { $newUrl } \" . \n Are you sure you want to proceed? " ,  'y' ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-26 23:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            -> expectsQuestion ( 'This operation could cause issues if used incorrectly. Have you made a backup of your existing database?' ,  'y' ); 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-12 07:14:37 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-26 23:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}