]> BookStack Code Mirror - bookstack/commitdiff
Changes as per code review, and fixes failing test cases. 1008/head
authorAbijeet <redacted>
Sun, 16 Sep 2018 15:14:09 +0000 (20:44 +0530)
committerAbijeet <redacted>
Sun, 16 Sep 2018 15:14:09 +0000 (20:44 +0530)
Signed-off-by: Abijeet <redacted>
app/Http/Controllers/PageController.php
app/Page.php
tests/Entity/PageRevisionTest.php

index 505fb7e5a1af0bb5663ab7a87b9540d0891708ea..e3079047cac436c13873cdf8876841d98a23f165 100644 (file)
@@ -459,7 +459,7 @@ class PageController extends Controller
      * Deletes a revision using the id of the specified revision.
      * @param string $bookSlug
      * @param string $pageSlug
-     * @param int $revisionId
+     * @param int $revId
      * @throws NotFoundException
      * @throws BadRequestException
      * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
@@ -467,7 +467,7 @@ class PageController extends Controller
     public function destroyRevision($bookSlug, $pageSlug, $revId)
     {
         $page = $this->entityRepo->getBySlug('page', $pageSlug, $bookSlug);
-        $this->checkOwnablePermission('page-update', $page);
+        $this->checkOwnablePermission('page-delete', $page);
 
         $revision = $page->revisions()->where('id', '=', $revId)->first();
         if ($revision === null) {
@@ -480,7 +480,7 @@ class PageController extends Controller
         // Check if its the latest revision, cannot delete latest revision.
         if (intval($currentRevision->id) === intval($revId)) {
             session()->flash('error', trans('entities.revision_cannot_delete_latest'));
-            return view('pages/revisions', ['page' => $page, 'book' => $page->book, 'current' => $page]);
+            return response()->view('pages/revisions', ['page' => $page, 'book' => $page->book, 'current' => $page], 400);
         }
 
         $revision->delete();
index db6996c23494da1f9f5fdc717ddc2fbe43127ff4..5c03e7d66f610d21b8499370307314b924bcca3d 100644 (file)
@@ -119,9 +119,6 @@ class Page extends Entity
      */
     public function getCurrentRevision()
     {
-        if ($id = PageRevision::where('page_id', '=', $this->id)->max('id')) {
-            return PageRevision::find($id);
-        }
-        return null;
+        return $this->revisions()->first();
     }
 }
index cd7aa766e8c13f01a7123da2edd2da3853fd8258..08b379107f3bf049c6b26f8efc3a48662ba9c755 100644 (file)
@@ -21,9 +21,11 @@ class PageRevisionTest extends TestCase
     {
         $page = Page::first();
         $this->asEditor()->put($page->getUrl(), ['name' => 'Updated page', 'html' => 'new page html', 'summary' => 'Update a']);
-        $this->asEditor()->put($page->getUrl(), ['name' => 'Updated page', 'html' => 'new page html', 'summary' => 'Update a']);
+
         $page = Page::find($page->id);
+        $this->asEditor()->put($page->getUrl(), ['name' => 'Updated page', 'html' => 'new page html', 'summary' => 'Update a']);
 
+        $page = Page::find($page->id);
         $pageView = $this->get($page->getUrl());
         $pageView->assertSee('Revision #' . $page->revision_count);
     }
@@ -31,12 +33,15 @@ class PageRevisionTest extends TestCase
     public function test_revision_deletion() {
         $page = Page::first();
         $this->asEditor()->put($page->getUrl(), ['name' => 'Updated page', 'html' => 'new page html', 'summary' => 'Update a']);
+
+        $page = Page::find($page->id);
         $this->asEditor()->put($page->getUrl(), ['name' => 'Updated page', 'html' => 'new page html', 'summary' => 'Update a']);
+
         $page = Page::find($page->id);
         $beforeRevisionCount = $page->revisions->count();
 
         // Delete the first revision
-        $revision = $page->revisions->get(0);
+        $revision = $page->revisions->get(1);
         $resp = $this->asEditor()->delete($revision->getUrl('/delete/'));
         $resp->assertStatus(200);
 
@@ -48,7 +53,8 @@ class PageRevisionTest extends TestCase
         // Try to delete the latest revision
         $beforeRevisionCount = $page->revisions->count();
         $currentRevision = $page->getCurrentRevision();
-        $this->asEditor()->delete($currentRevision->getUrl('/delete/'));
+        $resp = $this->asEditor()->delete($currentRevision->getUrl('/delete/'));
+        $resp->assertStatus(400);
 
         $page = Page::find($page->id);
         $afterRevisionCount = $page->revisions->count();
Morty Proxy This is a proxified and sanitized view of the page, visit original site.