Move html to markdown formatting tests to their own class

This commit is contained in:
Dan Brown 2022-04-29 11:50:34 +01:00
parent ac7b2dd1bf
commit d3b39fbe50
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
2 changed files with 53 additions and 36 deletions

View File

@ -362,42 +362,6 @@ class ExportTest extends TestCase
$resp->assertSee("# Dogcat\n\nSome **bold** text");
}
public function test_page_markdown_export_does_not_convert_callouts()
{
$page = Page::query()->first()->forceFill([
'markdown' => '',
'html' => '<h1>Dogcat</h1><p class="callout info">Some callout text</p><p>Another line</p>',
]);
$page->save();
$resp = $this->asEditor()->get($page->getUrl('/export/markdown'));
$resp->assertSee("# Dogcat\n\n<p class=\"callout info\">Some callout text</p>\n\nAnother line", false);
}
public function test_page_markdown_export_handles_bookstacks_wysiwyg_codeblock_format()
{
$page = Page::query()->first()->forceFill([
'markdown' => '',
'html' => '<h1>Dogcat</h1>' . "\r\n" . '<pre id="bkmrk-var-a-%3D-%27cat%27%3B"><code class="language-JavaScript">var a = \'cat\';</code></pre><p>Another line</p>',
]);
$page->save();
$resp = $this->asEditor()->get($page->getUrl('/export/markdown'));
$resp->assertSee("# Dogcat\n\n```JavaScript\nvar a = 'cat';\n```\n\nAnother line", false);
}
public function test_page_markdown_export_handles_tasklist_checkboxes()
{
$page = Page::query()->first()->forceFill([
'markdown' => '',
'html' => '<ul><li><input type="checkbox" checked="checked">Item A</li><li><input type="checkbox">Item B</li></ul>',
]);
$page->save();
$resp = $this->asEditor()->get($page->getUrl('/export/markdown'));
$resp->assertSee("- [x] Item A\n- [ ] Item B", false);
}
public function test_chapter_markdown_export()
{
$chapter = Chapter::query()->first();

View File

@ -0,0 +1,53 @@
<?php
namespace Tests\Entity;
use BookStack\Entities\Tools\Markdown\HtmlToMarkdown;
use Tests\TestCase;
class MarkdownToHtmlTest extends TestCase
{
public function test_basic_formatting_conversion()
{
$this->assertConversion(
'<h1>Dogcat</h1><p>Some <strong>bold</strong> text</p>',
"# Dogcat\n\nSome **bold** text"
);
}
public function test_callouts_remain_html()
{
$this->assertConversion(
'<h1>Dogcat</h1><p class="callout info">Some callout text</p><p>Another line</p>',
"# Dogcat\n\n<p class=\"callout info\">Some callout text</p>\n\nAnother line"
);
}
public function test_wysiwyg_code_format_handled_cleanly()
{
$this->assertConversion(
'<h1>Dogcat</h1>' . "\r\n" . '<pre id="bkmrk-var-a-%3D-%27cat%27%3B"><code class="language-JavaScript">var a = \'cat\';</code></pre><p>Another line</p>',
"# Dogcat\n\n```JavaScript\nvar a = 'cat';\n```\n\nAnother line"
);
}
public function test_tasklist_checkboxes_are_handled()
{
$this->assertConversion(
'<ul><li><input type="checkbox" checked="checked">Item A</li><li><input type="checkbox">Item B</li></ul>',
"- [x] Item A\n- [ ] Item B"
);
}
protected function assertConversion(string $html, string $expectedMarkdown, bool $partialMdMatch = false)
{
$markdown = (new HtmlToMarkdown($html))->convert();
if ($partialMdMatch) {
static::assertStringContainsString($expectedMarkdown, $markdown);
} else {
static::assertEquals($expectedMarkdown, $markdown);
}
}
}