class EntityTest extends TestCase
{
- public function testEntityCreation()
+ public function test_entity_creation()
{
// Test Creation
return \BookStack\Book::find($book->id);
}
+ public function test_book_sort_page_shows()
+ {
+ $books = \BookStack\Book::all();
+ $bookToSort = $books[0];
+ $this->asAdmin()
+ ->visit($bookToSort->getUrl())
+ ->click('Sort')
+ ->seePageIs($bookToSort->getUrl() . '/sort')
+ ->seeStatusCode(200)
+ ->see($bookToSort->name)
+ // Ensure page shows other books
+ ->see($books[1]->name);
+ }
+
+ public function test_book_sort_item_returns_book_content()
+ {
+ $books = \BookStack\Book::all();
+ $bookToSort = $books[0];
+ $firstPage = $bookToSort->pages[0];
+ $firstChapter = $bookToSort->chapters[0];
+ $this->asAdmin()
+ ->visit($bookToSort->getUrl() . '/sort-item')
+ // Ensure book details are returned
+ ->see($bookToSort->name)
+ ->see($firstPage->name)
+ ->see($firstChapter->name);
+ }
+
public function pageCreation($chapter)
{
$page = factory(\BookStack\Page::class)->make([
// Ensure duplicate names are given different slugs
$this->asAdmin()
->visit('/books/create')
- ->submitForm('Save Book', $book->toArray())
+ ->type($book->name, '#name')
+ ->type($book->description, '#description')
+ ->press('Save Book')
->seePageIs('/books/my-first-book-2');
$book = \BookStack\Book::where('slug', '=', 'my-first-book')->first();
return $book;
}
+ public function test_entities_viewable_after_creator_deletion()
+ {
+ // Create required assets and revisions
+ $creator = $this->getNewUser();
+ $updater = $this->getNewUser();
+ $entities = $this->createEntityChainBelongingToUser($creator, $updater);
+ $this->actingAs($creator);
+ app('BookStack\Repos\UserRepo')->destroy($creator);
+ app('BookStack\Repos\PageRepo')->saveRevision($entities['page']);
+
+ $this->checkEntitiesViewable($entities);
+ }
+
+ public function test_entities_viewable_after_updater_deletion()
+ {
+ // Create required assets and revisions
+ $creator = $this->getNewUser();
+ $updater = $this->getNewUser();
+ $entities = $this->createEntityChainBelongingToUser($creator, $updater);
+ $this->actingAs($updater);
+ app('BookStack\Repos\UserRepo')->destroy($updater);
+ app('BookStack\Repos\PageRepo')->saveRevision($entities['page']);
+
+ $this->checkEntitiesViewable($entities);
+ }
+
+ private function checkEntitiesViewable($entities)
+ {
+ // Check pages and books are visible.
+ $this->asAdmin();
+ $this->visit($entities['book']->getUrl())->seeStatusCode(200)
+ ->visit($entities['chapter']->getUrl())->seeStatusCode(200)
+ ->visit($entities['page']->getUrl())->seeStatusCode(200);
+ // Check revision listing shows no errors.
+ $this->visit($entities['page']->getUrl())
+ ->click('Revisions')->seeStatusCode(200);
+ }
+
+ public function test_recently_created_pages_view()
+ {
+ $user = $this->getNewUser();
+ $content = $this->createEntityChainBelongingToUser($user);
+
+ $this->asAdmin()->visit('/pages/recently-created')
+ ->seeInNthElement('.entity-list .page', 0, $content['page']->name);
+ }
+
+ public function test_recently_updated_pages_view()
+ {
+ $user = $this->getNewUser();
+ $content = $this->createEntityChainBelongingToUser($user);
+
+ $this->asAdmin()->visit('/pages/recently-updated')
+ ->seeInNthElement('.entity-list .page', 0, $content['page']->name);
+ }
+
+ public function test_old_page_slugs_redirect_to_new_pages()
+ {
+ $page = \BookStack\Page::all()->first();
+ $pageUrl = $page->getUrl();
+ $newPageUrl = '/books/' . $page->book->slug . '/page/super-test-page';
+ $this->asAdmin()->visit($pageUrl)
+ ->clickInElement('#content', 'Edit')
+ ->type('super test page', '#name')
+ ->press('Save Page')
+ ->seePageIs($newPageUrl)
+ ->visit($pageUrl)
+ ->seePageIs($newPageUrl);
+ }
}