| 
									
										
										
										
											2017-02-04 19:58:42 +08:00
										 |  |  | <?php namespace Tests; | 
					
						
							| 
									
										
										
										
											2016-02-19 03:32:07 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-26 03:35:40 +08:00
										 |  |  | class UserProfileTest extends BrowserKitTest | 
					
						
							| 
									
										
										
										
											2016-02-19 03:32:07 +08:00
										 |  |  | { | 
					
						
							|  |  |  |     protected $user; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function setUp() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         parent::setUp(); | 
					
						
							|  |  |  |         $this->user = \BookStack\User::all()->last(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function test_profile_page_shows_name() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->asAdmin() | 
					
						
							|  |  |  |             ->visit('/user/' . $this->user->id) | 
					
						
							|  |  |  |             ->see($this->user->name); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function test_profile_page_shows_recent_entities() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $content = $this->createEntityChainBelongingToUser($this->user, $this->user); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->asAdmin() | 
					
						
							|  |  |  |             ->visit('/user/' . $this->user->id) | 
					
						
							|  |  |  |             // Check the recently created page is shown
 | 
					
						
							|  |  |  |             ->see($content['page']->name) | 
					
						
							|  |  |  |             // Check the recently created chapter is shown
 | 
					
						
							|  |  |  |             ->see($content['chapter']->name) | 
					
						
							|  |  |  |             // Check the recently created book is shown
 | 
					
						
							|  |  |  |             ->see($content['book']->name); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function test_profile_page_shows_created_content_counts() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2017-11-19 23:56:06 +08:00
										 |  |  |         $newUser = $this->getNewBlankUser(); | 
					
						
							| 
									
										
										
										
											2016-02-19 03:32:07 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $this->asAdmin()->visit('/user/' . $newUser->id) | 
					
						
							|  |  |  |             ->see($newUser->name) | 
					
						
							|  |  |  |             ->seeInElement('#content-counts', '0 Books') | 
					
						
							|  |  |  |             ->seeInElement('#content-counts', '0 Chapters') | 
					
						
							|  |  |  |             ->seeInElement('#content-counts', '0 Pages'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->createEntityChainBelongingToUser($newUser, $newUser); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->asAdmin()->visit('/user/' . $newUser->id) | 
					
						
							|  |  |  |             ->see($newUser->name) | 
					
						
							|  |  |  |             ->seeInElement('#content-counts', '1 Book') | 
					
						
							|  |  |  |             ->seeInElement('#content-counts', '1 Chapter') | 
					
						
							|  |  |  |             ->seeInElement('#content-counts', '1 Page'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function test_profile_page_shows_recent_activity() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2017-11-19 23:56:06 +08:00
										 |  |  |         $newUser = $this->getNewBlankUser(); | 
					
						
							| 
									
										
										
										
											2016-02-19 03:32:07 +08:00
										 |  |  |         $this->actingAs($newUser); | 
					
						
							|  |  |  |         $entities = $this->createEntityChainBelongingToUser($newUser, $newUser); | 
					
						
							| 
									
										
										
										
											2017-02-04 19:58:42 +08:00
										 |  |  |         \Activity::add($entities['book'], 'book_update', $entities['book']->id); | 
					
						
							|  |  |  |         \Activity::add($entities['page'], 'page_create', $entities['book']->id); | 
					
						
							| 
									
										
										
										
											2016-02-19 03:32:07 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $this->asAdmin()->visit('/user/' . $newUser->id) | 
					
						
							|  |  |  |             ->seeInElement('#recent-activity', 'updated book') | 
					
						
							|  |  |  |             ->seeInElement('#recent-activity', 'created page') | 
					
						
							|  |  |  |             ->seeInElement('#recent-activity', $entities['page']->name); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function test_clicking_user_name_in_activity_leads_to_profile_page() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2017-11-19 23:56:06 +08:00
										 |  |  |         $newUser = $this->getNewBlankUser(); | 
					
						
							| 
									
										
										
										
											2016-02-19 03:32:07 +08:00
										 |  |  |         $this->actingAs($newUser); | 
					
						
							|  |  |  |         $entities = $this->createEntityChainBelongingToUser($newUser, $newUser); | 
					
						
							| 
									
										
										
										
											2017-02-04 19:58:42 +08:00
										 |  |  |         \Activity::add($entities['book'], 'book_update', $entities['book']->id); | 
					
						
							|  |  |  |         \Activity::add($entities['page'], 'page_create', $entities['book']->id); | 
					
						
							| 
									
										
										
										
											2016-02-19 03:32:07 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $this->asAdmin()->visit('/')->clickInElement('#recent-activity', $newUser->name) | 
					
						
							|  |  |  |             ->seePageIs('/user/' . $newUser->id) | 
					
						
							|  |  |  |             ->see($newUser->name); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-09-30 00:07:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     public function test_guest_profile_shows_limited_form() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->asAdmin() | 
					
						
							|  |  |  |             ->visit('/settings/users') | 
					
						
							|  |  |  |             ->click('Guest') | 
					
						
							|  |  |  |             ->dontSeeElement('#password'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function test_guest_profile_cannot_be_deleted() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $guestUser = \BookStack\User::getDefault(); | 
					
						
							|  |  |  |         $this->asAdmin()->visit('/settings/users/' . $guestUser->id . '/delete') | 
					
						
							|  |  |  |             ->see('Delete User')->see('Guest') | 
					
						
							|  |  |  |             ->press('Confirm') | 
					
						
							|  |  |  |             ->seePageIs('/settings/users/' . $guestUser->id) | 
					
						
							|  |  |  |             ->see('cannot delete the guest user'); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2017-07-15 18:20:42 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-04 22:57:52 +08:00
										 |  |  |     public function test_books_view_is_list() | 
					
						
							| 
									
										
										
										
											2017-07-15 14:01:43 +08:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2017-12-07 00:34:26 +08:00
										 |  |  |         $editor = $this->getEditor(); | 
					
						
							|  |  |  |         setting()->putUser($editor, 'books_view_type', 'list'); | 
					
						
							| 
									
										
										
										
											2017-07-15 20:30:39 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $this->actingAs($editor) | 
					
						
							| 
									
										
										
										
											2017-07-15 14:01:43 +08:00
										 |  |  |             ->visit('/books') | 
					
						
							| 
									
										
										
										
											2017-09-04 22:57:52 +08:00
										 |  |  |             ->pageNotHasElement('.featured-image-container') | 
					
						
							| 
									
										
										
										
											2017-12-26 18:16:20 +08:00
										 |  |  |             ->pageHasElement('.content .entity-list-item'); | 
					
						
							| 
									
										
										
										
											2017-07-15 14:01:43 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-04 22:57:52 +08:00
										 |  |  |     public function test_books_view_is_grid() | 
					
						
							| 
									
										
										
										
											2017-07-15 14:01:43 +08:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2017-12-07 00:34:26 +08:00
										 |  |  |         $editor = $this->getEditor(); | 
					
						
							|  |  |  |         setting()->putUser($editor, 'books_view_type', 'grid'); | 
					
						
							| 
									
										
										
										
											2017-07-15 20:30:39 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $this->actingAs($editor) | 
					
						
							| 
									
										
										
										
											2017-07-15 14:01:43 +08:00
										 |  |  |             ->visit('/books') | 
					
						
							| 
									
										
										
										
											2017-09-04 22:57:52 +08:00
										 |  |  |             ->pageHasElement('.featured-image-container'); | 
					
						
							| 
									
										
										
										
											2017-07-15 14:01:43 +08:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-01-28 22:08:14 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-19 03:32:07 +08:00
										 |  |  | } |