]> BookStack Code Mirror - bookstack/blobdiff - tests/Entity/PageContentTest.php
Add `ja` locale to config
[bookstack] / tests / Entity / PageContentTest.php
index 4f65d3406449e3e0d42192bf494d9a35bfdb6b85..6b64c2c640ef8427f72322ae489b9508636bf44e 100644 (file)
@@ -1,33 +1,83 @@
 <?php namespace Tests;
 
-class PageContentTest extends BrowserKitTest
+use BookStack\Page;
+use BookStack\Repos\EntityRepo;
+
+class PageContentTest extends TestCase
 {
 
     public function test_page_includes()
     {
-        $page = \BookStack\Page::first();
-        $secondPage = \BookStack\Page::all()->get(2);
+        $page = Page::first();
+        $secondPage = Page::all()->get(2);
 
         $secondPage->html = "<p id='section1'>Hello, This is a test</p><p id='section2'>This is a second block of content</p>";
         $secondPage->save();
 
-        $this->asAdmin()->visit($page->getUrl())
-            ->dontSee('Hello, This is a test');
+        $this->asEditor();
+
+        $pageContent = $this->get($page->getUrl());
+        $pageContent->assertDontSee('Hello, This is a test');
 
         $originalHtml = $page->html;
         $page->html .= "{{@{$secondPage->id}}}";
         $page->save();
 
-        $this->asAdmin()->visit($page->getUrl())
-            ->see('Hello, This is a test')
-            ->see('This is a second block of content');
+        $pageContent = $this->get($page->getUrl());
+        $pageContent->assertSee('Hello, This is a test');
+        $pageContent->assertSee('This is a second block of content');
 
         $page->html = $originalHtml . " Well {{@{$secondPage->id}#section2}}";
         $page->save();
 
-        $this->asAdmin()->visit($page->getUrl())
-            ->dontSee('Hello, This is a test')
-            ->see('Well This is a second block of content');
+        $pageContent = $this->get($page->getUrl());
+        $pageContent->assertDontSee('Hello, This is a test');
+        $pageContent->assertSee('Well This is a second block of content');
+    }
+
+    public function test_page_revision_views_viewable()
+    {
+        $this->asEditor();
+
+        $entityRepo = $this->app[EntityRepo::class];
+        $page = Page::first();
+        $entityRepo->updatePage($page, $page->book_id, ['name' => 'updated page', 'html' => '<p>new content</p>', 'summary' => 'page revision testing']);
+        $pageRevision = $page->revisions->last();
+
+        $revisionView = $this->get($page->getUrl() . '/revisions/' . $pageRevision->id);
+        $revisionView->assertStatus(200);
+        $revisionView->assertSee('new content');
+
+        $revisionView = $this->get($page->getUrl() . '/revisions/' . $pageRevision->id . '/changes');
+        $revisionView->assertStatus(200);
+        $revisionView->assertSee('new content');
+    }
+
+    public function test_page_revision_restore_updates_content()
+    {
+        $this->asEditor();
+
+        $entityRepo = $this->app[EntityRepo::class];
+        $page = Page::first();
+        $entityRepo->updatePage($page, $page->book_id, ['name' => 'updated page abc123', 'html' => '<p>new contente def456</p>', 'summary' => 'initial page revision testing']);
+        $entityRepo->updatePage($page, $page->book_id, ['name' => 'updated page again', 'html' => '<p>new content</p>', 'summary' => 'page revision testing']);
+        $page =  Page::find($page->id);
+
+
+        $pageView = $this->get($page->getUrl());
+        $pageView->assertDontSee('abc123');
+        $pageView->assertDontSee('def456');
+
+        $revToRestore = $page->revisions()->where('name', 'like', '%abc123')->first();
+        $restoreReq = $this->get($page->getUrl() . '/revisions/' . $revToRestore->id . '/restore');
+        $page =  Page::find($page->id);
+
+        $restoreReq->assertStatus(302);
+        $restoreReq->assertRedirect($page->getUrl());
+
+        $pageView = $this->get($page->getUrl());
+        $pageView->assertSee('abc123');
+        $pageView->assertSee('def456');
     }
 
 }