]> BookStack Code Mirror - bookstack/blobdiff - tests/EntityTest.php
Closes #55. Allows you to set the primary color.
[bookstack] / tests / EntityTest.php
index 493f99cac396c7c27e867c30124174fdb6c9e851..2936fc0475abe698fdbe420a6f1ece8718dadae0 100644 (file)
@@ -5,7 +5,7 @@ use Illuminate\Support\Facades\DB;
 class EntityTest extends TestCase
 {
 
-    public function testEntityCreation()
+    public function test_entity_creation()
     {
 
         // Test Creation
@@ -51,6 +51,34 @@ class EntityTest extends TestCase
         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([
@@ -118,12 +146,83 @@ class EntityTest extends TestCase
         // 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);
+    }
 
 }