From 0f9957bc036e40d068dfb0958560485f7456964a Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Mon, 2 Dec 2024 11:46:56 +0000
Subject: [PATCH] MD Exports: Added HTML description conversion

Also updated tests to cover checking description use/conversion.
Made during review of #5313
---
 app/Entities/Tools/ExportFormatter.php | 12 +++++++-----
 tests/Entity/ExportTest.php            | 12 ++++++++++++
 2 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/app/Entities/Tools/ExportFormatter.php b/app/Entities/Tools/ExportFormatter.php
index e85992a9d..0af68b8db 100644
--- a/app/Entities/Tools/ExportFormatter.php
+++ b/app/Entities/Tools/ExportFormatter.php
@@ -316,8 +316,9 @@ class ExportFormatter
     {
         $text = '# ' . $chapter->name . "\n\n";
 
-        if (!empty($chapter->description)) {
-            $text .= $chapter->description . "\n\n";
+        $description = (new HtmlToMarkdown($chapter->descriptionHtml()))->convert();
+        if ($description) {
+            $text .= $description . "\n\n";
         }
 
         foreach ($chapter->pages as $page) {
@@ -334,9 +335,10 @@ class ExportFormatter
     {
         $bookTree = (new BookContents($book))->getTree(false, true);
         $text = '# ' . $book->name . "\n\n";
-        
-        if (!empty($book->description)) {
-            $text .= $book->description . "\n\n";
+
+        $description = (new HtmlToMarkdown($book->descriptionHtml()))->convert();
+        if ($description) {
+            $text .= $description . "\n\n";
         }
 
         foreach ($bookTree as $bookChild) {
diff --git a/tests/Entity/ExportTest.php b/tests/Entity/ExportTest.php
index 7aafa3b79..97b1ff1bc 100644
--- a/tests/Entity/ExportTest.php
+++ b/tests/Entity/ExportTest.php
@@ -417,23 +417,35 @@ class ExportTest extends TestCase
     public function test_chapter_markdown_export()
     {
         $chapter = $this->entities->chapter();
+        $chapter->description_html = '<p>My <strong>chapter</strong> description</p>';
+        $chapter->save();
         $page = $chapter->pages()->first();
+
         $resp = $this->asEditor()->get($chapter->getUrl('/export/markdown'));
 
         $resp->assertSee('# ' . $chapter->name);
         $resp->assertSee('# ' . $page->name);
+        $resp->assertSee('My **chapter** description');
     }
 
     public function test_book_markdown_export()
     {
         $book = Book::query()->whereHas('pages')->whereHas('chapters')->first();
+        $book->description_html = '<p>My <strong>book</strong> description</p>';
+        $book->save();
+
         $chapter = $book->chapters()->first();
+        $chapter->description_html = '<p>My <strong>chapter</strong> description</p>';
+        $chapter->save();
+
         $page = $chapter->pages()->first();
         $resp = $this->asEditor()->get($book->getUrl('/export/markdown'));
 
         $resp->assertSee('# ' . $book->name);
         $resp->assertSee('# ' . $chapter->name);
         $resp->assertSee('# ' . $page->name);
+        $resp->assertSee('My **book** description');
+        $resp->assertSee('My **chapter** description');
     }
 
     public function test_book_markdown_export_concats_immediate_pages_with_newlines()