From 1c859e94e03d0407daf55ade43ced245f208f971 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Wed, 23 Mar 2022 14:31:42 +0000 Subject: [PATCH] Fixed conctenation of direct book pages within markdown export - Updated to ensure seperation with newlines. - Added test to cover. For #3341 --- app/Entities/Tools/ExportFormatter.php | 8 ++++---- tests/Entity/ExportTest.php | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/app/Entities/Tools/ExportFormatter.php b/app/Entities/Tools/ExportFormatter.php index 9029d7270..99aa4536f 100644 --- a/app/Entities/Tools/ExportFormatter.php +++ b/app/Entities/Tools/ExportFormatter.php @@ -326,7 +326,7 @@ class ExportFormatter $text .= $this->pageToMarkdown($page) . "\n\n"; } - return $text; + return trim($text); } /** @@ -338,12 +338,12 @@ class ExportFormatter $text = '# ' . $book->name . "\n\n"; foreach ($bookTree as $bookChild) { if ($bookChild instanceof Chapter) { - $text .= $this->chapterToMarkdown($bookChild); + $text .= $this->chapterToMarkdown($bookChild) . "\n\n"; } else { - $text .= $this->pageToMarkdown($bookChild); + $text .= $this->pageToMarkdown($bookChild) . "\n\n"; } } - return $text; + return trim($text); } } diff --git a/tests/Entity/ExportTest.php b/tests/Entity/ExportTest.php index 2841175ad..f96ff97fa 100644 --- a/tests/Entity/ExportTest.php +++ b/tests/Entity/ExportTest.php @@ -420,6 +420,25 @@ class ExportTest extends TestCase $resp->assertSee('# ' . $page->name); } + public function test_book_markdown_export_concats_immediate_pages_with_newlines() + { + /** @var Book $book */ + $book = Book::query()->whereHas('pages')->first(); + + $this->asEditor()->get($book->getUrl('/create-page')); + $this->get($book->getUrl('/create-page')); + + [$pageA, $pageB] = $book->pages()->where('chapter_id', '=', 0)->get(); + $pageA->html = '

hello tester

'; + $pageA->save(); + $pageB->name = 'The second page in this test'; + $pageB->save(); + + $resp = $this->get($book->getUrl('/export/markdown')); + $resp->assertDontSee("hello tester# The second page in this test"); + $resp->assertSee("hello tester\n\n# The second page in this test"); + } + public function test_export_option_only_visible_and_accessible_with_permission() { $book = Book::query()->whereHas('pages')->whereHas('chapters')->first();