diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 5c10133a2..397bb2922 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -251,7 +251,9 @@ class UserController extends Controller } public function switchBookView($id, Request $request) { - $this->checkPermission('users-manage'); + $this->checkPermissionOr('users-manage', function () use ($id) { + return $this->currentUser->id == $id; + }); $viewType = $request->get('book_view_type'); if (!in_array($viewType, ['grid', 'list'])) { diff --git a/tests/Entity/EntityTest.php b/tests/Entity/EntityTest.php index a43f65b5e..549253417 100644 --- a/tests/Entity/EntityTest.php +++ b/tests/Entity/EntityTest.php @@ -82,6 +82,27 @@ class EntityTest extends BrowserKitTest ->see($firstChapter->name); } + public function test_toggle_book_view() + { + $editor = $this->getEditor(); + setting()->putUser($editor, 'books_view_type', 'grid'); + + $this->actingAs($editor) + ->visit('/books') + ->pageHasElement('.featured-image-container') + ->submitForm('Toggle Book View') + // Check redirection. + ->seePageIs('/books') + ->pageNotHasElement('.featured-image-container'); + + $this->actingAs($editor) + ->visit('/books') + ->submitForm('Toggle Book View') + ->seePageIs('/books') + ->pageHasElement('.featured-image-container'); + + } + public function pageCreation($chapter) { $page = factory(Page::class)->make([ @@ -155,7 +176,7 @@ class EntityTest extends BrowserKitTest ->type($book->name, '#name') ->type($book->description, '#description') ->press('Save Book'); - + $expectedPattern = '/\/books\/my-first-book-[0-9a-zA-Z]{3}/'; $this->assertRegExp($expectedPattern, $this->currentUri, "Did not land on expected page [$expectedPattern].\n"); diff --git a/tests/UserProfileTest.php b/tests/UserProfileTest.php index 0c66363f0..3262117d5 100644 --- a/tests/UserProfileTest.php +++ b/tests/UserProfileTest.php @@ -103,7 +103,7 @@ class UserProfileTest extends BrowserKitTest $this->actingAs($editor) ->visit('/books') ->pageNotHasElement('.featured-image-container') - ->pageHasElement('.entity-list-item'); + ->pageHasElement('.content .entity-list-item'); } public function test_books_view_is_grid()