]> BookStack Code Mirror - bookstack/commitdiff
Updated pages API to not clear content if not provided
authorDan Brown <redacted>
Sat, 21 Aug 2021 17:54:38 +0000 (18:54 +0100)
committerDan Brown <redacted>
Sat, 21 Aug 2021 17:54:38 +0000 (18:54 +0100)
Can now update page details without supplying page content.
Added test to cover.

Closes #2856

app/Entities/Repos/PageRepo.php
tests/Api/PagesApiTest.php

index 28949b2dd7e3dd35f80d915fb053fd3918e5dfba..c37c643732338a4ef39dc3ccb1ee751f905fa1a3 100644 (file)
@@ -218,8 +218,8 @@ class PageRepo
         $pageContent = new PageContent($page);
         if (!empty($input['markdown'] ?? '')) {
             $pageContent->setNewMarkdown($input['markdown']);
-        } else {
-            $pageContent->setNewHTML($input['html'] ?? '');
+        } else if (isset($input['html'])) {
+            $pageContent->setNewHTML($input['html']);
         }
     }
 
index d52c6b513892374d955a5c758ad8ca5a46562837..eca606234bf4791af06101af8cac011ec63867c9 100644 (file)
@@ -219,6 +219,27 @@ class PagesApiTest extends TestCase
         $resp->assertStatus(403);
     }
 
+    public function test_update_endpoint_does_not_wipe_content_if_no_html_or_md_provided()
+    {
+        $this->actingAsApiEditor();
+        $page = Page::visible()->first();
+        $originalContent = $page->html;
+        $details = [
+            'name' => 'My updated API page',
+            'tags' => [
+                [
+                    'name'  => 'freshtag',
+                    'value' => 'freshtagval',
+                ],
+            ],
+        ];
+
+        $this->putJson($this->baseEndpoint . "/{$page->id}", $details);
+        $page->refresh();
+
+        $this->assertEquals($originalContent, $page->html);
+    }
+
     public function test_delete_endpoint()
     {
         $this->actingAsApiEditor();