]> BookStack Code Mirror - bookstack/blobdiff - tests/Entity/PageEditorTest.php
Updated minimum php version from 7.3 to 7.4
[bookstack] / tests / Entity / PageEditorTest.php
index 9b0a8f188106d7d46d15d91ba535165cf6395ac8..c06aa5bf125406fc0160b581d3dc5f2fe6e648e0 100644 (file)
@@ -3,6 +3,7 @@
 namespace Tests\Entity;
 
 use BookStack\Entities\Models\Book;
+use BookStack\Entities\Models\Chapter;
 use BookStack\Entities\Models\Page;
 use Tests\TestCase;
 
@@ -11,7 +12,7 @@ class PageEditorTest extends TestCase
     /** @var Page */
     protected $page;
 
-    public function setUp(): void
+    protected function setUp(): void
     {
         parent::setUp();
         $this->page = Page::query()->first();
@@ -74,4 +75,31 @@ class PageEditorTest extends TestCase
             'draft'    => false,
         ]);
     }
+
+    public function test_back_link_in_editor_has_correct_url()
+    {
+        /** @var Book $book */
+        $book = Book::query()->whereHas('pages')->whereHas('chapters')->firstOrFail();
+        $this->asEditor()->get($book->getUrl('/create-page'));
+        /** @var Chapter $chapter */
+        $chapter = $book->chapters()->firstOrFail();
+        /** @var Page $draft */
+        $draft = $book->pages()->where('draft', '=', true)->firstOrFail();
+
+        // Book draft goes back to book
+        $resp = $this->get($book->getUrl("/draft/{$draft->id}"));
+        $resp->assertElementContains('a[href="' . $book->getUrl() . '"]', 'Back');
+
+        // Chapter draft goes back to chapter
+        $draft->chapter_id = $chapter->id;
+        $draft->save();
+        $resp = $this->get($book->getUrl("/draft/{$draft->id}"));
+        $resp->assertElementContains('a[href="' . $chapter->getUrl() . '"]', 'Back');
+
+        // Saved page goes back to page
+        $this->post($book->getUrl("/draft/{$draft->id}"), ['name' => 'Updated', 'html' => 'Updated']);
+        $draft->refresh();
+        $resp = $this->get($draft->getUrl('/edit'));
+        $resp->assertElementContains('a[href="' . $draft->getUrl() . '"]', 'Back');
+    }
 }