+++ /dev/null
-<?php
-
-namespace Tests;
-
-use BookStack\Entities\Models\Book;
-
-class ActivityTrackingTest extends BrowserKitTest
-{
- public function test_recently_viewed_books()
- {
- $books = Book::all()->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);
- }
-}
namespace Tests\Entity;
use BookStack\Entities\Models\Book;
+use BookStack\Entities\Models\Bookshelf;
use Tests\TestCase;
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();
$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'));
+ }
}
->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([
$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();