Dan Brown

Fixed bug preventing page revision restore

Added regression tests to cover.
Fixes #341
...@@ -1058,7 +1058,7 @@ class EntityRepo ...@@ -1058,7 +1058,7 @@ class EntityRepo
1058 public function restorePageRevision(Page $page, Book $book, $revisionId) 1058 public function restorePageRevision(Page $page, Book $book, $revisionId)
1059 { 1059 {
1060 $this->savePageRevision($page); 1060 $this->savePageRevision($page);
1061 - $revision = $this->getById('page_revision', $revisionId); 1061 + $revision = $page->revisions()->where('id', '=', $revisionId)->first();
1062 $page->fill($revision->toArray()); 1062 $page->fill($revision->toArray());
1063 $page->slug = $this->findSuitableSlug('page', $page->name, $page->id, $book->id); 1063 $page->slug = $this->findSuitableSlug('page', $page->name, $page->id, $book->id);
1064 $page->text = strip_tags($page->html); 1064 $page->text = strip_tags($page->html);
......
...@@ -53,4 +53,31 @@ class PageContentTest extends TestCase ...@@ -53,4 +53,31 @@ class PageContentTest extends TestCase
53 $revisionView->assertSee('new content'); 53 $revisionView->assertSee('new content');
54 } 54 }
55 55
56 + public function test_page_revision_restore_updates_content()
57 + {
58 + $this->asEditor();
59 +
60 + $entityRepo = $this->app[EntityRepo::class];
61 + $page = Page::first();
62 + $entityRepo->updatePage($page, $page->book_id, ['name' => 'updated page abc123', 'html' => '<p>new contente def456</p>', 'summary' => 'initial page revision testing']);
63 + $entityRepo->updatePage($page, $page->book_id, ['name' => 'updated page again', 'html' => '<p>new content</p>', 'summary' => 'page revision testing']);
64 + $page = Page::find($page->id);
65 +
66 +
67 + $pageView = $this->get($page->getUrl());
68 + $pageView->assertDontSee('abc123');
69 + $pageView->assertDontSee('def456');
70 +
71 + $revToRestore = $page->revisions()->where('name', 'like', '%abc123')->first();
72 + $restoreReq = $this->get($page->getUrl() . '/revisions/' . $revToRestore->id . '/restore');
73 + $page = Page::find($page->id);
74 +
75 + $restoreReq->assertStatus(302);
76 + $restoreReq->assertRedirect($page->getUrl());
77 +
78 + $pageView = $this->get($page->getUrl());
79 + $pageView->assertSee('abc123');
80 + $pageView->assertSee('def456');
81 + }
82 +
56 } 83 }
......