Changes as per code review, and fixes failing test cases.

Signed-off-by: Abijeet <abijeetpatro@gmail.com>
This commit is contained in:
Abijeet 2018-09-16 20:44:09 +05:30
parent 0c8b6b7324
commit 08b967607f
3 changed files with 14 additions and 11 deletions

View File

@ -459,7 +459,7 @@ class PageController extends Controller
* Deletes a revision using the id of the specified revision. * Deletes a revision using the id of the specified revision.
* @param string $bookSlug * @param string $bookSlug
* @param string $pageSlug * @param string $pageSlug
* @param int $revisionId * @param int $revId
* @throws NotFoundException * @throws NotFoundException
* @throws BadRequestException * @throws BadRequestException
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
@ -467,7 +467,7 @@ class PageController extends Controller
public function destroyRevision($bookSlug, $pageSlug, $revId) public function destroyRevision($bookSlug, $pageSlug, $revId)
{ {
$page = $this->entityRepo->getBySlug('page', $pageSlug, $bookSlug); $page = $this->entityRepo->getBySlug('page', $pageSlug, $bookSlug);
$this->checkOwnablePermission('page-update', $page); $this->checkOwnablePermission('page-delete', $page);
$revision = $page->revisions()->where('id', '=', $revId)->first(); $revision = $page->revisions()->where('id', '=', $revId)->first();
if ($revision === null) { if ($revision === null) {
@ -480,7 +480,7 @@ class PageController extends Controller
// Check if its the latest revision, cannot delete latest revision. // Check if its the latest revision, cannot delete latest revision.
if (intval($currentRevision->id) === intval($revId)) { if (intval($currentRevision->id) === intval($revId)) {
session()->flash('error', trans('entities.revision_cannot_delete_latest')); 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(); $revision->delete();

View File

@ -119,9 +119,6 @@ class Page extends Entity
*/ */
public function getCurrentRevision() public function getCurrentRevision()
{ {
if ($id = PageRevision::where('page_id', '=', $this->id)->max('id')) { return $this->revisions()->first();
return PageRevision::find($id);
}
return null;
} }
} }

View File

@ -21,9 +21,11 @@ class PageRevisionTest extends TestCase
{ {
$page = Page::first(); $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']);
$this->asEditor()->put($page->getUrl(), ['name' => 'Updated page', 'html' => 'new page html', 'summary' => 'Update a']);
$page = Page::find($page->id);
$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 = $this->get($page->getUrl());
$pageView->assertSee('Revision #' . $page->revision_count); $pageView->assertSee('Revision #' . $page->revision_count);
} }
@ -31,12 +33,15 @@ class PageRevisionTest extends TestCase
public function test_revision_deletion() { public function test_revision_deletion() {
$page = Page::first(); $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']); $this->asEditor()->put($page->getUrl(), ['name' => 'Updated page', 'html' => 'new page html', 'summary' => 'Update a']);
$page = Page::find($page->id); $page = Page::find($page->id);
$beforeRevisionCount = $page->revisions->count(); $beforeRevisionCount = $page->revisions->count();
// Delete the first revision // Delete the first revision
$revision = $page->revisions->get(0); $revision = $page->revisions->get(1);
$resp = $this->asEditor()->delete($revision->getUrl('/delete/')); $resp = $this->asEditor()->delete($revision->getUrl('/delete/'));
$resp->assertStatus(200); $resp->assertStatus(200);
@ -48,7 +53,8 @@ class PageRevisionTest extends TestCase
// Try to delete the latest revision // Try to delete the latest revision
$beforeRevisionCount = $page->revisions->count(); $beforeRevisionCount = $page->revisions->count();
$currentRevision = $page->getCurrentRevision(); $currentRevision = $page->getCurrentRevision();
$this->asEditor()->delete($currentRevision->getUrl('/delete/')); $resp = $this->asEditor()->delete($currentRevision->getUrl('/delete/'));
$resp->assertStatus(400);
$page = Page::find($page->id); $page = Page::find($page->id);
$afterRevisionCount = $page->revisions->count(); $afterRevisionCount = $page->revisions->count();