From: Dan Brown Date: Mon, 2 Dec 2024 11:50:15 +0000 (+0000) Subject: Merge branch 'fix/markdown-export' into development X-Git-Tag: v24.12~1^2~18 X-Git-Url: http://source.bookstackapp.com/bookstack/commitdiff_plain/18ab38a87b9b3ea957a29075da1ed47a141398e0 Merge branch 'fix/markdown-export' into development --- 18ab38a87b9b3ea957a29075da1ed47a141398e0 diff --cc tests/Exports/MarkdownExportTest.php index 05ebbc68d,000000000..3bccd4682 mode 100644,000000..100644 --- a/tests/Exports/MarkdownExportTest.php +++ b/tests/Exports/MarkdownExportTest.php @@@ -1,85 -1,0 +1,97 @@@ +entities->page(); + + $resp = $this->asEditor()->get($page->getUrl('/export/markdown')); + $resp->assertStatus(200); + $resp->assertSee($page->name); + $resp->assertHeader('Content-Disposition', 'attachment; filename="' . $page->slug . '.md"'); + } + + public function test_page_markdown_export_uses_existing_markdown_if_apparent() + { + $page = $this->entities->page()->forceFill([ + 'markdown' => '# A header', + 'html' => '

Dogcat

', + ]); + $page->save(); + + $resp = $this->asEditor()->get($page->getUrl('/export/markdown')); + $resp->assertSee('A header'); + $resp->assertDontSee('Dogcat'); + } + + public function test_page_markdown_export_converts_html_where_no_markdown() + { + $page = $this->entities->page()->forceFill([ + 'markdown' => '', + 'html' => '

Dogcat

Some bold text

', + ]); + $page->save(); + + $resp = $this->asEditor()->get($page->getUrl('/export/markdown')); + $resp->assertSee("# Dogcat\n\nSome **bold** text"); + } + + public function test_chapter_markdown_export() + { + $chapter = $this->entities->chapter(); ++ $chapter->description_html = '

My chapter description

'; ++ $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 = '

My book description

'; ++ $book->save(); ++ + $chapter = $book->chapters()->first(); ++ $chapter->description_html = '

My chapter description

'; ++ $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() + { + /** @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"); + } +}