X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/919660678bec2b94eaa84ac60d0313f5ef07dfb7..refs/pull/1462/head:/tests/Entity/BookShelfTest.php diff --git a/tests/Entity/BookShelfTest.php b/tests/Entity/BookShelfTest.php index 5d71ec6f6..158fb5ca1 100644 --- a/tests/Entity/BookShelfTest.php +++ b/tests/Entity/BookShelfTest.php @@ -1,5 +1,7 @@ assertElementContains('header', 'Shelves'); } + public function test_shelves_shows_in_header_if_have_any_shelve_view_permission() + { + $user = factory(User::class)->create(); + $this->giveUserPermissions($user, ['image-create-all']); + $shelf = Bookshelf::first(); + $userRole = $user->roles()->first(); + + $resp = $this->actingAs($user)->get('/'); + $resp->assertElementNotContains('header', 'Shelves'); + + $this->setEntityRestrictions($shelf, ['view'], [$userRole]); + + $resp = $this->get('/'); + $resp->assertElementContains('header', 'Shelves'); + } + public function test_shelves_page_contains_create_link() { $resp = $this->asEditor()->get('/shelves'); - $resp->assertElementContains('a', 'Create New Shelf'); + $resp->assertElementContains('a', 'New Shelf'); } public function test_shelves_create() @@ -81,9 +99,11 @@ class BookShelfTest extends TestCase { $shelf = Bookshelf::first(); $resp = $this->asAdmin()->get($shelf->getUrl()); + $resp->assertSee($shelf->getUrl('/create-book')); $resp->assertSee($shelf->getUrl('/edit')); $resp->assertSee($shelf->getUrl('/permissions')); $resp->assertSee($shelf->getUrl('/delete')); + $resp->assertElementContains('a', 'New Book'); $resp->assertElementContains('a', 'Edit'); $resp->assertElementContains('a', 'Permissions'); $resp->assertElementContains('a', 'Delete'); @@ -130,6 +150,32 @@ class BookShelfTest extends TestCase $this->assertDatabaseHas('bookshelves_books', ['bookshelf_id' => $shelf->id, 'book_id' => $booksToInclude[1]->id]); } + public function test_shelf_create_new_book() + { + $shelf = Bookshelf::first(); + $resp = $this->asEditor()->get($shelf->getUrl('/create-book')); + + $resp->assertSee('Create New Book'); + $resp->assertSee($shelf->getShortName()); + + $testName = 'Test Book in Shelf Name'; + + $createBookResp = $this->asEditor()->post($shelf->getUrl('/create-book'), [ + 'name' => $testName, + 'description' => 'Book in shelf description' + ]); + $createBookResp->assertRedirect(); + + $newBook = Book::query()->orderBy('id', 'desc')->first(); + $this->assertDatabaseHas('bookshelves_books', [ + 'bookshelf_id' => $shelf->id, + 'book_id' => $newBook->id, + ]); + + $resp = $this->asEditor()->get($shelf->getUrl()); + $resp->assertSee($testName); + } + public function test_shelf_delete() { $shelf = Bookshelf::first(); @@ -167,4 +213,30 @@ class BookShelfTest extends TestCase $this->assertDatabaseHas('entity_permissions', ['restrictable_id' => $child->id, 'action' => 'update', 'role_id' => $editorRole->id]); } + public function test_bookshelves_show_in_breadcrumbs_if_in_context() + { + $shelf = Bookshelf::first(); + $shelfBook = $shelf->books()->first(); + $shelfPage = $shelfBook->pages()->first(); + $this->asAdmin(); + + $bookVisit = $this->get($shelfBook->getUrl()); + $bookVisit->assertElementNotContains('.breadcrumbs', 'Shelves'); + $bookVisit->assertElementNotContains('.breadcrumbs', $shelf->getShortName()); + + $this->get($shelf->getUrl()); + $bookVisit = $this->get($shelfBook->getUrl()); + $bookVisit->assertElementContains('.breadcrumbs', 'Shelves'); + $bookVisit->assertElementContains('.breadcrumbs', $shelf->getShortName()); + + $pageVisit = $this->get($shelfPage->getUrl()); + $pageVisit->assertElementContains('.breadcrumbs', 'Shelves'); + $pageVisit->assertElementContains('.breadcrumbs', $shelf->getShortName()); + + $this->get('/books'); + $pageVisit = $this->get($shelfPage->getUrl()); + $pageVisit->assertElementNotContains('.breadcrumbs', 'Shelves'); + $pageVisit->assertElementNotContains('.breadcrumbs', $shelf->getShortName()); + } + }