From 121a746d591e2f79d7426a63645b37c73ad8f2ba Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Mon, 13 Sep 2021 23:26:39 +0100 Subject: [PATCH] Moved/Updated old Activity tracking tests, started on entity tests Started moving old EntityTests into more appropriate places within non-browserkit-test classes. Still many more to do. --- tests/ActivityTrackingTest.php | 37 ------------------ tests/Entity/BookShelfTest.php | 8 ++++ tests/Entity/BookTest.php | 71 ++++++++++++++++++++++++++++++++++ tests/Entity/EntityTest.php | 45 --------------------- 4 files changed, 79 insertions(+), 82 deletions(-) delete mode 100644 tests/ActivityTrackingTest.php diff --git a/tests/ActivityTrackingTest.php b/tests/ActivityTrackingTest.php deleted file mode 100644 index 494a1f506..000000000 --- a/tests/ActivityTrackingTest.php +++ /dev/null @@ -1,37 +0,0 @@ -take(10); - - $this->asAdmin()->visit('/books') - ->dontSeeInElement('#recents', $books[0]->name) - ->dontSeeInElement('#recents', $books[1]->name) - ->visit($books[0]->getUrl()) - ->visit($books[1]->getUrl()) - ->visit('/books') - ->seeInElement('#recents', $books[0]->name) - ->seeInElement('#recents', $books[1]->name); - } - - public function test_popular_books() - { - $books = Book::all()->take(10); - - $this->asAdmin()->visit('/books') - ->dontSeeInElement('#popular', $books[0]->name) - ->dontSeeInElement('#popular', $books[1]->name) - ->visit($books[0]->getUrl()) - ->visit($books[1]->getUrl()) - ->visit($books[0]->getUrl()) - ->visit('/books') - ->seeInNthElement('#popular .book', 0, $books[0]->name) - ->seeInNthElement('#popular .book', 1, $books[1]->name); - } -} diff --git a/tests/Entity/BookShelfTest.php b/tests/Entity/BookShelfTest.php index 480d29002..1780ddee8 100644 --- a/tests/Entity/BookShelfTest.php +++ b/tests/Entity/BookShelfTest.php @@ -369,4 +369,12 @@ class BookShelfTest extends TestCase $resp = $this->asEditor()->get($newBook->getUrl()); $resp->assertDontSee($shelfInfo['name']); } + + public function test_cancel_on_child_book_creation_returns_to_original_shelf() + { + /** @var Bookshelf $shelf */ + $shelf = Bookshelf::query()->first(); + $resp = $this->asEditor()->get($shelf->getUrl('/create-book')); + $resp->assertElementContains('form a[href="' . $shelf->getUrl() . '"]', 'Cancel'); + } } diff --git a/tests/Entity/BookTest.php b/tests/Entity/BookTest.php index b4ba2fa82..a2d4aee20 100644 --- a/tests/Entity/BookTest.php +++ b/tests/Entity/BookTest.php @@ -3,6 +3,7 @@ namespace Tests\Entity; use BookStack\Entities\Models\Book; +use BookStack\Entities\Models\Bookshelf; use Tests\TestCase; class BookTest extends TestCase @@ -34,6 +35,20 @@ class BookTest extends TestCase $redirectReq->assertNotificationContains('Book Successfully Deleted'); } + public function test_cancel_on_create_page_leads_back_to_books_listing() + { + $resp = $this->asEditor()->get('/create-book'); + $resp->assertElementContains('form a[href="' . url('/books') . '"]', 'Cancel'); + } + + public function test_cancel_on_edit_book_page_leads_back_to_book() + { + /** @var Book $book */ + $book = Book::query()->first(); + $resp = $this->asEditor()->get($book->getUrl('/edit')); + $resp->assertElementContains('form a[href="' . $book->getUrl() . '"]', 'Cancel'); + } + public function test_next_previous_navigation_controls_show_within_book_content() { $book = Book::query()->first(); @@ -48,4 +63,60 @@ class BookTest extends TestCase $resp->assertElementContains('#sibling-navigation', 'Previous'); $resp->assertElementContains('#sibling-navigation', substr($chapter->name, 0, 20)); } + + public function test_recently_viewed_books_updates_as_expected() + { + $books = Book::all()->take(2); + + $this->asAdmin()->get('/books') + ->assertElementNotContains('#recents', $books[0]->name) + ->assertElementNotContains('#recents', $books[1]->name); + + $this->get($books[0]->getUrl()); + $this->get($books[1]->getUrl()); + + $this->get('/books') + ->assertElementContains('#recents', $books[0]->name) + ->assertElementContains('#recents', $books[1]->name); + } + + public function test_popular_books_updates_upon_visits() + { + $books = Book::all()->take(2); + + $this->asAdmin()->get('/books') + ->assertElementNotContains('#popular', $books[0]->name) + ->assertElementNotContains('#popular', $books[1]->name); + + $this->get($books[0]->getUrl()); + $this->get($books[1]->getUrl()); + $this->get($books[0]->getUrl()); + + $this->get('/books') + ->assertElementContains('#popular .book:nth-child(1)', $books[0]->name) + ->assertElementContains('#popular .book:nth-child(2)', $books[1]->name); + } + + public function test_books_view_shows_view_toggle_option() + { + /** @var Book $book */ + $editor = $this->getEditor(); + setting()->putUser($editor, 'books_view_type', 'list'); + + $resp = $this->actingAs($editor)->get('/books'); + $resp->assertElementContains('form[action$="/settings/users/' . $editor->id . '/switch-books-view"]', 'Grid View'); + $resp->assertElementExists('input[name="view_type"][value="grid"]'); + + $resp = $this->patch("/settings/users/{$editor->id}/switch-books-view", ['view_type' => 'grid']); + $resp->assertRedirect(); + $this->assertEquals('grid', setting()->getUser($editor, 'books_view_type')); + + $resp = $this->actingAs($editor)->get('/books'); + $resp->assertElementContains('form[action$="/settings/users/' . $editor->id . '/switch-books-view"]', 'List View'); + $resp->assertElementExists('input[name="view_type"][value="list"]'); + + $resp = $this->patch("/settings/users/{$editor->id}/switch-books-view", ['view_type' => 'list']); + $resp->assertRedirect(); + $this->assertEquals('list', setting()->getUser($editor, 'books_view_type')); + } } diff --git a/tests/Entity/EntityTest.php b/tests/Entity/EntityTest.php index f8c88b1fe..60d66d07f 100644 --- a/tests/Entity/EntityTest.php +++ b/tests/Entity/EntityTest.php @@ -67,26 +67,6 @@ 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('List View') - // Check redirection. - ->seePageIs('/books') - ->pageNotHasElement('.featured-image-container'); - - $this->actingAs($editor) - ->visit('/books') - ->submitForm('Grid View') - ->seePageIs('/books') - ->pageHasElement('.featured-image-container'); - } - public function pageCreation($chapter) { $page = factory(Page::class)->make([ @@ -282,31 +262,6 @@ class EntityTest extends BrowserKitTest $this->assertEquals('parta-partb-partc', $book->slug); } - public function test_shelf_cancel_creation_returns_to_correct_place() - { - $shelf = Bookshelf::first(); - - // Cancel button from shelf goes back to shelf - $this->asEditor()->visit($shelf->getUrl('/create-book')) - ->see('Cancel') - ->click('Cancel') - ->seePageIs($shelf->getUrl()); - - // Cancel button from books goes back to books - $this->asEditor()->visit('/create-book') - ->see('Cancel') - ->click('Cancel') - ->seePageIs('/books'); - - // Cancel button from book edit goes back to book - $book = Book::first(); - - $this->asEditor()->visit($book->getUrl('/edit')) - ->see('Cancel') - ->click('Cancel') - ->seePageIs($book->getUrl()); - } - public function test_page_within_chapter_deletion_returns_to_chapter() { $chapter = Chapter::query()->first();