+ public function test_bookshelves_create_all_permissions()
+ {
+ $this->checkAccessPermission('bookshelf-create-all', [
+ '/create-shelf'
+ ], [
+ '/shelves' => 'New Shelf'
+ ]);
+
+ $this->visit('/create-shelf')
+ ->type('test shelf', 'name')
+ ->type('shelf desc', 'description')
+ ->press('Save Shelf')
+ ->seePageIs('/shelves/test-shelf');
+ }
+
+ public function test_bookshelves_edit_own_permission()
+ {
+ $otherShelf = Bookshelf::first();
+ $ownShelf = $this->newShelf(['name' => 'test-shelf', 'slug' => 'test-shelf']);
+ $ownShelf->forceFill(['owned_by' => $this->user->id, 'updated_by' => $this->user->id])->save();
+ $this->regenEntityPermissions($ownShelf);
+
+ $this->checkAccessPermission('bookshelf-update-own', [
+ $ownShelf->getUrl('/edit')
+ ], [
+ $ownShelf->getUrl() => 'Edit'
+ ]);
+
+ $this->visit($otherShelf->getUrl())
+ ->dontSeeInElement('.action-buttons', 'Edit')
+ ->visit($otherShelf->getUrl('/edit'))
+ ->seePageIs('/');
+ }
+
+ public function test_bookshelves_edit_all_permission()
+ {
+ $otherShelf = Bookshelf::first();
+ $this->checkAccessPermission('bookshelf-update-all', [
+ $otherShelf->getUrl('/edit')
+ ], [
+ $otherShelf->getUrl() => 'Edit'
+ ]);
+ }
+
+ public function test_bookshelves_delete_own_permission()
+ {
+ $this->giveUserPermissions($this->user, ['bookshelf-update-all']);
+ $otherShelf = Bookshelf::first();
+ $ownShelf = $this->newShelf(['name' => 'test-shelf', 'slug' => 'test-shelf']);
+ $ownShelf->forceFill(['owned_by' => $this->user->id, 'updated_by' => $this->user->id])->save();
+ $this->regenEntityPermissions($ownShelf);
+
+ $this->checkAccessPermission('bookshelf-delete-own', [
+ $ownShelf->getUrl('/delete')
+ ], [
+ $ownShelf->getUrl() => 'Delete'
+ ]);
+
+ $this->visit($otherShelf->getUrl())
+ ->dontSeeInElement('.action-buttons', 'Delete')
+ ->visit($otherShelf->getUrl('/delete'))
+ ->seePageIs('/');
+ $this->visit($ownShelf->getUrl())->visit($ownShelf->getUrl('/delete'))
+ ->press('Confirm')
+ ->seePageIs('/shelves')
+ ->dontSee($ownShelf->name);
+ }
+
+ public function test_bookshelves_delete_all_permission()
+ {
+ $this->giveUserPermissions($this->user, ['bookshelf-update-all']);
+ $otherShelf = Bookshelf::first();
+ $this->checkAccessPermission('bookshelf-delete-all', [
+ $otherShelf->getUrl('/delete')
+ ], [
+ $otherShelf->getUrl() => 'Delete'
+ ]);
+
+ $this->visit($otherShelf->getUrl())->visit($otherShelf->getUrl('/delete'))
+ ->press('Confirm')
+ ->seePageIs('/shelves')
+ ->dontSee($otherShelf->name);
+ }
+