X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/371779205a29816b90fcf31bb6dba609aeb192fc..refs/pull/4467/head:/tests/User/UserPreferencesTest.php diff --git a/tests/User/UserPreferencesTest.php b/tests/User/UserPreferencesTest.php index a30484bd2..9d72f4e14 100644 --- a/tests/User/UserPreferencesTest.php +++ b/tests/User/UserPreferencesTest.php @@ -2,6 +2,8 @@ namespace Tests\User; +use BookStack\Activity\Tools\UserEntityWatchOptions; +use BookStack\Activity\WatchLevels; use Tests\TestCase; class UserPreferencesTest extends TestCase @@ -14,13 +16,15 @@ class UserPreferencesTest extends TestCase $resp->assertSee('Edit Profile'); } - public function test_index_view_accessible_but_without_profile_for_guest_user() + public function test_index_view_accessible_but_without_profile_and_notifications_for_guest_user() { $this->setSettings(['app-public' => 'true']); + $this->permissions->grantUserRolePermissions($this->users->guest(), ['receive-notifications']); $resp = $this->get('/preferences'); $resp->assertOk(); $resp->assertSee('Interface Keyboard Shortcuts'); $resp->assertDontSee('Edit Profile'); + $resp->assertDontSee('Notification'); } public function test_interface_shortcuts_updating() { @@ -79,7 +83,6 @@ class UserPreferencesTest extends TestCase public function test_notification_preferences_updating() { $editor = $this->users->editor(); - $this->permissions->grantUserRolePermissions($editor, ['receive-notifications']); // View preferences with defaults $resp = $this->actingAs($editor)->get('/preferences/notifications'); @@ -102,6 +105,40 @@ class UserPreferencesTest extends TestCase $html->assertFieldHasValue('preferences[comment-replies]', 'true'); } + public function test_notification_preferences_show_watches() + { + $editor = $this->users->editor(); + $book = $this->entities->book(); + + $options = new UserEntityWatchOptions($editor, $book); + $options->updateLevelByValue(WatchLevels::COMMENTS); + + $resp = $this->actingAs($editor)->get('/preferences/notifications'); + $resp->assertSee($book->name); + $resp->assertSee('All Page Updates & Comments'); + + $options->updateLevelByValue(WatchLevels::DEFAULT); + + $resp = $this->actingAs($editor)->get('/preferences/notifications'); + $resp->assertDontSee($book->name); + $resp->assertDontSee('All Page Updates & Comments'); + } + + public function test_notification_preferences_not_accessible_to_guest() + { + $this->setSettings(['app-public' => 'true']); + $guest = $this->users->guest(); + $this->permissions->grantUserRolePermissions($guest, ['receive-notifications']); + + $resp = $this->get('/preferences/notifications'); + $this->assertPermissionError($resp); + + $resp = $this->put('/preferences/notifications', [ + 'preferences' => ['comment-replies' => 'true'], + ]); + $this->assertPermissionError($resp); + } + public function test_update_sort_preference() { $editor = $this->users->editor();