X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/7cda9b026e11b67c861faa76dd1ce402467fe30b..refs/pull/1462/head:/tests/HomepageTest.php diff --git a/tests/HomepageTest.php b/tests/HomepageTest.php index 2c8b8d5c0..286d4cf60 100644 --- a/tests/HomepageTest.php +++ b/tests/HomepageTest.php @@ -1,5 +1,7 @@ setSettings(['app-homepage-type' => false]); $this->test_default_homepage_visible(); } + + public function test_shelves_list_homepage_adheres_to_book_visibility_permissions() + { + $editor = $this->getEditor(); + setting()->putUser($editor, 'bookshelves_view_type', 'list'); + $this->setSettings(['app-homepage-type' => 'bookshelves']); + $this->asEditor(); + + $shelf = Bookshelf::query()->first(); + $book = $shelf->books()->first(); + + // Ensure initially visible + $homeVisit = $this->get('/'); + $homeVisit->assertElementContains('.content-wrap', $shelf->name); + $homeVisit->assertElementContains('.content-wrap', $book->name); + + // Ensure book no longer visible without view permission + $editor->roles()->detach(); + $this->giveUserPermissions($editor, ['bookshelf-view-all']); + $homeVisit = $this->get('/'); + $homeVisit->assertElementContains('.content-wrap', $shelf->name); + $homeVisit->assertElementNotContains('.content-wrap', $book->name); + + // Ensure is visible again with entity-level view permission + $this->setEntityRestrictions($book, ['view'], [$editor->roles()->first()]); + $homeVisit = $this->get('/'); + $homeVisit->assertElementContains('.content-wrap', $shelf->name); + $homeVisit->assertElementContains('.content-wrap', $book->name); + } }