Fixed restore revision save order, Added restore summary testing
Found during review of #2353, A revision would be stored before a restore which would result with a duplicate revision and the new summary would be assigned against the wrong content. This change saves the revison after restore and adds test to check the content and summary text.
This commit is contained in:
parent
83d77d5166
commit
024b0d8a64
3 changed files with 28 additions and 5 deletions
|
@ -220,7 +220,7 @@ class PageRepo
|
|||
/**
|
||||
* Saves a page revision into the system.
|
||||
*/
|
||||
protected function savePageRevision(Page $page, string $summary = null)
|
||||
protected function savePageRevision(Page $page, string $summary = null): PageRevision
|
||||
{
|
||||
$revision = new PageRevision($page->getAttributes());
|
||||
|
||||
|
@ -287,8 +287,6 @@ class PageRepo
|
|||
{
|
||||
$page->revision_count++;
|
||||
$revision = $page->revisions()->where('id', '=', $revisionId)->first();
|
||||
$summary = trans('entities.pages_revision_restored_from', ['id' => strval($revisionId), 'summary' => $revision->summary]);
|
||||
$this->savePageRevision($page, $summary);
|
||||
|
||||
$page->fill($revision->toArray());
|
||||
$content = new PageContent($page);
|
||||
|
@ -296,8 +294,11 @@ class PageRepo
|
|||
$page->updated_by = user()->id;
|
||||
$page->refreshSlug();
|
||||
$page->save();
|
||||
|
||||
$page->indexForSearch();
|
||||
|
||||
$summary = trans('entities.pages_revision_restored_from', ['id' => strval($revisionId), 'summary' => $revision->summary]);
|
||||
$this->savePageRevision($page, $summary);
|
||||
|
||||
Activity::addForEntity($page, ActivityType::PAGE_RESTORE);
|
||||
return $page;
|
||||
}
|
||||
|
|
|
@ -210,7 +210,7 @@ return [
|
|||
'pages_revisions' => 'Page Revisions',
|
||||
'pages_revisions_named' => 'Page Revisions for :pageName',
|
||||
'pages_revision_named' => 'Page Revision for :pageName',
|
||||
'pages_revision_restored_from' => 'Restored from #:id ":summary"',
|
||||
'pages_revision_restored_from' => 'Restored from #:id; :summary',
|
||||
'pages_revisions_created_by' => 'Created By',
|
||||
'pages_revisions_date' => 'Revision Date',
|
||||
'pages_revisions_number' => '#',
|
||||
|
|
|
@ -66,6 +66,28 @@ class PageRevisionTest extends TestCase
|
|||
$pageView->assertSee('def456');
|
||||
}
|
||||
|
||||
public function test_page_revision_restore_sets_new_revision_with_summary()
|
||||
{
|
||||
$this->asEditor();
|
||||
|
||||
$pageRepo = app(PageRepo::class);
|
||||
$page = Page::first();
|
||||
$pageRepo->update($page, ['name' => 'updated page abc123', 'html' => '<p>new contente def456</p>', 'summary' => 'My first update']);
|
||||
$pageRepo->update($page, ['name' => 'updated page again', 'html' => '<p>new content</p>', 'summary' => '']);
|
||||
$page->refresh();
|
||||
|
||||
$revToRestore = $page->revisions()->where('name', 'like', '%abc123')->first();
|
||||
$this->put($page->getUrl() . '/revisions/' . $revToRestore->id . '/restore');
|
||||
$page->refresh();
|
||||
|
||||
$this->assertDatabaseHas('page_revisions', [
|
||||
'page_id' => $page->id,
|
||||
'text' => 'new contente def456',
|
||||
'type' => 'version',
|
||||
'summary' => "Restored from #{$revToRestore->id}; My first update",
|
||||
]);
|
||||
}
|
||||
|
||||
public function test_page_revision_count_increments_on_update()
|
||||
{
|
||||
$page = Page::first();
|
||||
|
|
Loading…
Reference in a new issue