2021-09-14 05:54:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< ? php  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								namespace  Tests\Entity ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-11-15 19:17:27 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								use  BookStack\Entities\Models\Chapter ;  
						 
					
						
							
								
									
										
										
										
											2021-09-14 05:54:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								use  BookStack\Entities\Models\Page ;  
						 
					
						
							
								
									
										
										
										
											2024-09-23 03:06:55 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								use  BookStack\Entities\Tools\PageEditorType ;  
						 
					
						
							
								
									
										
										
										
											2021-09-14 05:54:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								use  Tests\TestCase ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  PageEditorTest  extends  TestCase  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2022-09-30 05:11:16 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    protected  Page  $page ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 05:54:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-31 04:29:59 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    protected  function  setUp () :  void 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 05:54:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        parent :: setUp (); 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-30 05:11:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> page  =  $this -> entities -> page (); 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 05:54:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-24 06:20:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  test_default_editor_is_wysiwyg_for_new_pages () 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 05:54:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> assertEquals ( 'wysiwyg' ,  setting ( 'app-editor' )); 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-24 06:20:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $resp  =  $this -> asAdmin () -> get ( $this -> page -> book -> getUrl ( '/create-page' )); 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-23 22:10:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> withHtml ( $this -> followRedirects ( $resp )) -> assertElementExists ( '#html-editor' ); 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 05:54:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-29 21:36:41 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  test_editor_set_for_new_pages () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $book  =  $this -> page -> book ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> asEditor () -> get ( $book -> getUrl ( '/create-page' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $newPage  =  $book -> pages () -> orderBy ( 'id' ,  'desc' ) -> first (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> assertEquals ( 'wysiwyg' ,  $newPage -> editor ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> setSettings ([ 'app-editor'  =>  PageEditorType :: Markdown -> value ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> asEditor () -> get ( $book -> getUrl ( '/create-page' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $newPage  =  $book -> pages () -> orderBy ( 'id' ,  'desc' ) -> first (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> assertEquals ( 'markdown' ,  $newPage -> editor ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-24 06:20:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    public  function  test_markdown_setting_shows_markdown_editor_for_new_pages () 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 05:54:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-23 03:06:55 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> setSettings ([ 'app-editor'  =>  PageEditorType :: Markdown -> value ]); 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-24 06:20:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $resp  =  $this -> asAdmin () -> get ( $this -> page -> book -> getUrl ( '/create-page' )); 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-23 22:10:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $this -> followRedirects ( $resp )) 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 05:54:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            -> assertElementNotExists ( '#html-editor' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            -> assertElementExists ( '#markdown-editor' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  test_markdown_content_given_to_editor () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $mdContent  =  '# hello. This is a test' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> page -> markdown  =  $mdContent ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-23 03:06:55 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> page -> editor  =  PageEditorType :: Markdown ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 05:54:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> page -> save (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-23 22:10:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $resp  =  $this -> asAdmin () -> get ( $this -> page -> getUrl ( '/edit' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $resp ) -> assertElementContains ( '[name="markdown"]' ,  $mdContent ); 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 05:54:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  test_html_content_given_to_editor_if_no_markdown () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-24 06:20:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> page -> editor  =  'markdown' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> page -> save (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-23 22:10:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $resp  =  $this -> asAdmin () -> get ( $this -> page -> getUrl ()  .  '/edit' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $resp ) -> assertElementContains ( '[name="markdown"]' ,  $this -> page -> html ); 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 05:54:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-16 05:18:37 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  test_empty_markdown_still_saves_without_error () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> setSettings ([ 'app-editor'  =>  'markdown' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-30 00:31:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $book  =  $this -> entities -> book (); 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-16 05:18:37 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> asEditor () -> get ( $book -> getUrl ( '/create-page' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $draft  =  Page :: query () -> where ( 'book_id' ,  '=' ,  $book -> id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            -> where ( 'draft' ,  '=' ,  true ) -> first (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $details  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            'name'      =>  'my page' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            'markdown'  =>  '' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $resp  =  $this -> post ( $book -> getUrl ( " /draft/ { $draft -> id } " ),  $details ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $resp -> assertRedirect (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> assertDatabaseHas ( 'pages' ,  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            'markdown'  =>  $details [ 'markdown' ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            'id'        =>  $draft -> id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            'draft'     =>  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-15 19:17:27 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  test_back_link_in_editor_has_correct_url () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-30 05:11:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $book  =  $this -> entities -> bookHasChaptersAndPages (); 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-15 19:17:27 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> asEditor () -> get ( $book -> getUrl ( '/create-page' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        /** @var Chapter $chapter */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $chapter  =  $book -> chapters () -> firstOrFail (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        /** @var Page $draft */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $draft  =  $book -> pages () -> where ( 'draft' ,  '=' ,  true ) -> firstOrFail (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Book draft goes back to book
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $resp  =  $this -> get ( $book -> getUrl ( " /draft/ { $draft -> id } " )); 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-23 22:10:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $resp ) -> assertElementContains ( 'a[href="'  .  $book -> getUrl ()  .  '"]' ,  'Back' ); 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-15 19:17:27 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Chapter draft goes back to chapter
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $draft -> chapter_id  =  $chapter -> id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $draft -> save (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $resp  =  $this -> get ( $book -> getUrl ( " /draft/ { $draft -> id } " )); 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-23 22:10:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $resp ) -> assertElementContains ( 'a[href="'  .  $chapter -> getUrl ()  .  '"]' ,  'Back' ); 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-15 19:17:27 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Saved page goes back to page
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> post ( $book -> getUrl ( " /draft/ { $draft -> id } " ),  [ 'name'  =>  'Updated' ,  'html'  =>  'Updated' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $draft -> refresh (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $resp  =  $this -> get ( $draft -> getUrl ( '/edit' )); 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-23 22:10:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $resp ) -> assertElementContains ( 'a[href="'  .  $draft -> getUrl ()  .  '"]' ,  'Back' ); 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-15 19:17:27 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-23 21:22:04 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  test_switching_from_html_to_clean_markdown_works () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-30 00:31:38 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $page  =  $this -> entities -> page (); 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-23 21:22:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $page -> html  =  '<h2>A Header</h2><p>Some <strong>bold</strong> content.</p>' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $page -> save (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $resp  =  $this -> asAdmin () -> get ( $page -> getUrl ( '/edit?editor=markdown-clean' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $resp -> assertStatus ( 200 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $resp -> assertSee ( " ## A Header \n \n Some **bold** content. " ); 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-23 22:10:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $resp ) -> assertElementExists ( '#markdown-editor' ); 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-23 21:22:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  test_switching_from_html_to_stable_markdown_works () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-30 00:31:38 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $page  =  $this -> entities -> page (); 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-23 21:22:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $page -> html  =  '<h2>A Header</h2><p>Some <strong>bold</strong> content.</p>' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $page -> save (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $resp  =  $this -> asAdmin () -> get ( $page -> getUrl ( '/edit?editor=markdown-stable' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $resp -> assertStatus ( 200 ); 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-25 01:22:40 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $resp -> assertSee ( '<h2>A Header</h2><p>Some <strong>bold</strong> content.</p>' ,  true ); 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-23 22:10:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $resp ) -> assertElementExists ( '[component="markdown-editor"]' ); 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-23 21:22:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  test_switching_from_markdown_to_wysiwyg_works () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-30 00:31:38 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $page  =  $this -> entities -> page (); 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-23 21:22:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $page -> html  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $page -> markdown  =  " ## A Header \n \n Some content with **bold** text! " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $page -> save (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $resp  =  $this -> asAdmin () -> get ( $page -> getUrl ( '/edit?editor=wysiwyg' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $resp -> assertStatus ( 200 ); 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-23 03:06:55 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $resp ) -> assertElementExists ( '[component="wysiwyg-editor-tinymce"]' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $resp -> assertSee ( " <h2>A Header</h2> \n <p>Some content with <strong>bold</strong> text!</p> " ,  true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  test_switching_from_markdown_to_wysiwyg2024_works () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $page  =  $this -> entities -> page (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $page -> html  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $page -> markdown  =  " ## A Header \n \n Some content with **bold** text! " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $page -> save (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $resp  =  $this -> asAdmin () -> get ( $page -> getUrl ( '/edit?editor=wysiwyg2024' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $resp -> assertStatus ( 200 ); 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-23 22:10:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $resp ) -> assertElementExists ( '[component="wysiwyg-editor"]' ); 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-23 21:22:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $resp -> assertSee ( " <h2>A Header</h2> \n <p>Some content with <strong>bold</strong> text!</p> " ,  true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-24 06:20:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    public  function  test_page_editor_changes_with_editor_property () 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-23 21:22:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-24 06:20:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $resp  =  $this -> asAdmin () -> get ( $this -> page -> getUrl ( '/edit' )); 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-23 03:06:55 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $resp ) -> assertElementExists ( '[component="wysiwyg-editor-tinymce"]' ); 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-23 21:22:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-24 06:20:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> page -> markdown  =  " ## A Header \n \n Some content with **bold** text! " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> page -> editor  =  'markdown' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> page -> save (); 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-23 21:22:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-24 06:20:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $resp  =  $this -> asAdmin () -> get ( $this -> page -> getUrl ( '/edit' )); 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-23 22:10:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $resp ) -> assertElementExists ( '[component="markdown-editor"]' ); 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-23 03:06:55 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> page -> editor  =  'wysiwyg2024' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> page -> save (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $resp  =  $this -> asAdmin () -> get ( $this -> page -> getUrl ( '/edit' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $resp ) -> assertElementExists ( '[component="wysiwyg-editor"]' ); 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-23 21:22:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  test_editor_type_switch_options_show () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-24 06:20:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $resp  =  $this -> asAdmin () -> get ( $this -> page -> getUrl ( '/edit' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $editLink  =  $this -> page -> getUrl ( '/edit' )  .  '?editor=' ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-23 22:10:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $resp ) -> assertElementContains ( " a[href= \" ${ editLink } markdown-clean \" ] " ,  '(Clean Content)' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $resp ) -> assertElementContains ( " a[href= \" ${ editLink } markdown-stable \" ] " ,  '(Stable Content)' ); 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-23 03:06:55 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $resp ) -> assertElementContains ( " a[href= \" ${ editLink } wysiwyg2024 \" ] " ,  '(In Alpha Testing)' ); 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-23 21:22:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-24 06:20:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $resp  =  $this -> asAdmin () -> get ( $this -> page -> getUrl ( '/edit?editor=markdown-stable' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $editLink  =  $this -> page -> getUrl ( '/edit' )  .  '?editor=' ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-23 22:10:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $resp ) -> assertElementContains ( " a[href= \" ${ editLink } wysiwyg \" ] " ,  'Switch to WYSIWYG Editor' ); 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-23 21:22:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  test_editor_type_switch_options_dont_show_if_without_change_editor_permissions () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-24 06:20:46 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $resp  =  $this -> asEditor () -> get ( $this -> page -> getUrl ( '/edit' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $editLink  =  $this -> page -> getUrl ( '/edit' )  .  '?editor=' ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-23 22:10:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $resp ) -> assertElementNotExists ( " a[href*= \" ${ editLink } \" ] " ); 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-23 21:22:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-24 06:34:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  test_page_editor_type_switch_does_not_work_without_change_editor_permissions () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-30 00:31:38 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $page  =  $this -> entities -> page (); 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-24 06:34:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $page -> html  =  '<h2>A Header</h2><p>Some <strong>bold</strong> content.</p>' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $page -> save (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $resp  =  $this -> asEditor () -> get ( $page -> getUrl ( '/edit?editor=markdown-stable' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $resp -> assertStatus ( 200 ); 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-23 03:06:55 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $resp ) -> assertElementExists ( '[component="wysiwyg-editor-tinymce"]' ); 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-23 22:10:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $this -> withHtml ( $resp ) -> assertElementNotExists ( '[component="markdown-editor"]' ); 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-24 06:34:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  test_page_save_does_not_change_active_editor_without_change_editor_permissions () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-30 00:31:38 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $page  =  $this -> entities -> page (); 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-24 06:34:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $page -> html  =  '<h2>A Header</h2><p>Some <strong>bold</strong> content.</p>' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $page -> editor  =  'wysiwyg' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $page -> save (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> asEditor () -> put ( $page -> getUrl (),  [ 'name'  =>  $page -> name ,  'markdown'  =>  '## Updated content abc' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> assertEquals ( 'wysiwyg' ,  $page -> refresh () -> editor ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-23 03:06:55 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  test_editor_type_change_to_wysiwyg_infers_type_from_request_or_uses_system_default () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $tests  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'setting'  =>  'wysiwyg' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'request'  =>  'wysiwyg2024' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'expected'  =>  'wysiwyg2024' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'setting'  =>  'wysiwyg2024' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'request'  =>  'wysiwyg' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'expected'  =>  'wysiwyg' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'setting'  =>  'wysiwyg' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'request'  =>  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'expected'  =>  'wysiwyg' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'setting'  =>  'wysiwyg2024' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'request'  =>  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'expected'  =>  'wysiwyg2024' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $page  =  $this -> entities -> page (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        foreach  ( $tests  as  $test )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $page -> editor  =  'markdown' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $page -> save (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $this -> setSettings ([ 'app-editor'  =>  $test [ 'setting' ]]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $this -> asAdmin () -> put ( $page -> getUrl (),  [ 'name'  =>  $page -> name ,  'html'  =>  '<p>Hello</p>' ,  'editor'  =>  $test [ 'request' ]]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $this -> assertEquals ( $test [ 'expected' ],  $page -> refresh () -> editor ,  " Failed asserting global editor  { $test [ 'setting' ] }  with request editor  { $test [ 'request' ] }  results in  { $test [ 'expected' ] }  set for the page " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-19 04:21:44 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}