3 namespace Tests\Exports;
5 use BookStack\Entities\Models\Book;
8 class MarkdownExportTest extends TestCase
10 public function test_page_markdown_export()
12 $page = $this->entities->page();
14 $resp = $this->asEditor()->get($page->getUrl('/export/markdown'));
15 $resp->assertStatus(200);
16 $resp->assertSee($page->name);
17 $resp->assertHeader('Content-Disposition', 'attachment; filename="' . $page->slug . '.md"');
20 public function test_page_markdown_export_uses_existing_markdown_if_apparent()
22 $page = $this->entities->page()->forceFill([
23 'markdown' => '# A header',
24 'html' => '<h1>Dogcat</h1>',
28 $resp = $this->asEditor()->get($page->getUrl('/export/markdown'));
29 $resp->assertSee('A header');
30 $resp->assertDontSee('Dogcat');
33 public function test_page_markdown_export_converts_html_where_no_markdown()
35 $page = $this->entities->page()->forceFill([
37 'html' => '<h1>Dogcat</h1><p>Some <strong>bold</strong> text</p>',
41 $resp = $this->asEditor()->get($page->getUrl('/export/markdown'));
42 $resp->assertSee("# Dogcat\n\nSome **bold** text");
45 public function test_chapter_markdown_export()
47 $chapter = $this->entities->chapter();
48 $page = $chapter->pages()->first();
49 $resp = $this->asEditor()->get($chapter->getUrl('/export/markdown'));
51 $resp->assertSee('# ' . $chapter->name);
52 $resp->assertSee('# ' . $page->name);
55 public function test_book_markdown_export()
57 $book = Book::query()->whereHas('pages')->whereHas('chapters')->first();
58 $chapter = $book->chapters()->first();
59 $page = $chapter->pages()->first();
60 $resp = $this->asEditor()->get($book->getUrl('/export/markdown'));
62 $resp->assertSee('# ' . $book->name);
63 $resp->assertSee('# ' . $chapter->name);
64 $resp->assertSee('# ' . $page->name);
67 public function test_book_markdown_export_concats_immediate_pages_with_newlines()
69 /** @var Book $book */
70 $book = Book::query()->whereHas('pages')->first();
72 $this->asEditor()->get($book->getUrl('/create-page'));
73 $this->get($book->getUrl('/create-page'));
75 [$pageA, $pageB] = $book->pages()->where('chapter_id', '=', 0)->get();
76 $pageA->html = '<p>hello tester</p>';
78 $pageB->name = 'The second page in this test';
81 $resp = $this->get($book->getUrl('/export/markdown'));
82 $resp->assertDontSee('hello tester# The second page in this test');
83 $resp->assertSee("hello tester\n\n# The second page in this test");