]> BookStack Code Mirror - bookstack/blob - tests/Exports/MarkdownExportTest.php
Merge branch 'fix-ldap-display-name' into development
[bookstack] / tests / Exports / MarkdownExportTest.php
1 <?php
2
3 namespace Tests\Exports;
4
5 use BookStack\Entities\Models\Book;
6 use Tests\TestCase;
7
8 class MarkdownExportTest extends TestCase
9 {
10     public function test_page_markdown_export()
11     {
12         $page = $this->entities->page();
13
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"');
18     }
19
20     public function test_page_markdown_export_uses_existing_markdown_if_apparent()
21     {
22         $page = $this->entities->page()->forceFill([
23             'markdown' => '# A header',
24             'html'     => '<h1>Dogcat</h1>',
25         ]);
26         $page->save();
27
28         $resp = $this->asEditor()->get($page->getUrl('/export/markdown'));
29         $resp->assertSee('A header');
30         $resp->assertDontSee('Dogcat');
31     }
32
33     public function test_page_markdown_export_converts_html_where_no_markdown()
34     {
35         $page = $this->entities->page()->forceFill([
36             'markdown' => '',
37             'html'     => '<h1>Dogcat</h1><p>Some <strong>bold</strong> text</p>',
38         ]);
39         $page->save();
40
41         $resp = $this->asEditor()->get($page->getUrl('/export/markdown'));
42         $resp->assertSee("# Dogcat\n\nSome **bold** text");
43     }
44
45     public function test_chapter_markdown_export()
46     {
47         $chapter = $this->entities->chapter();
48         $page = $chapter->pages()->first();
49         $resp = $this->asEditor()->get($chapter->getUrl('/export/markdown'));
50
51         $resp->assertSee('# ' . $chapter->name);
52         $resp->assertSee('# ' . $page->name);
53     }
54
55     public function test_book_markdown_export()
56     {
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'));
61
62         $resp->assertSee('# ' . $book->name);
63         $resp->assertSee('# ' . $chapter->name);
64         $resp->assertSee('# ' . $page->name);
65     }
66
67     public function test_book_markdown_export_concats_immediate_pages_with_newlines()
68     {
69         /** @var Book $book */
70         $book = Book::query()->whereHas('pages')->first();
71
72         $this->asEditor()->get($book->getUrl('/create-page'));
73         $this->get($book->getUrl('/create-page'));
74
75         [$pageA, $pageB] = $book->pages()->where('chapter_id', '=', 0)->get();
76         $pageA->html = '<p>hello tester</p>';
77         $pageA->save();
78         $pageB->name = 'The second page in this test';
79         $pageB->save();
80
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");
84     }
85 }