daux.io/tests/Format/HTML/TableOfContentsTest.php

120 lines
2.6 KiB
PHP
Raw Normal View History

2020-04-22 21:55:53 +02:00
<?php namespace Todaymade\Daux\Format\HTML\Test;
use PHPUnit\Framework\TestCase;
2020-04-22 22:24:52 +02:00
use Todaymade\Daux\Config as MainConfig;
use Todaymade\Daux\Format\HTML\ContentTypes\Markdown\CommonMarkConverter;
2020-04-22 21:55:53 +02:00
class Engine
{
public function render($template, $data)
{
2017-12-11 22:02:20 +01:00
return $data['content'];
}
}
2020-04-22 21:55:53 +02:00
class Template
{
public function getEngine()
{
2020-04-22 22:24:52 +02:00
return new Engine();
2017-12-11 22:02:20 +01:00
}
}
class TableOfContentsTest extends TestCase
{
2020-04-22 21:55:53 +02:00
public function getConfig()
{
2020-04-22 22:24:52 +02:00
$config = new MainConfig();
$config->templateRenderer = new Template();
2020-04-22 21:55:53 +02:00
2017-12-11 22:02:20 +01:00
return ['daux' => $config];
}
2020-04-22 21:55:53 +02:00
public function testNoTOCByDefault()
{
2017-12-11 22:02:20 +01:00
$converter = new CommonMarkConverter($this->getConfig());
$this->assertEquals("<h1 id=\"page_Test\">Test</h1>\n", $converter->convertToHtml('# Test'));
}
2020-04-22 21:55:53 +02:00
public function testTOCToken()
{
2017-12-11 22:02:20 +01:00
$converter = new CommonMarkConverter($this->getConfig());
$source = "[TOC]\n# Title";
2020-04-22 22:24:52 +02:00
$expected = <<<'EXPECTED'
<ul class="TableOfContents">
<li>
<p><a href="#page_Title">Title</a></p>
</li>
</ul>
<h1 id="page_Title">Title</h1>
EXPECTED;
$this->assertEquals($expected, $converter->convertToHtml($source));
}
2020-04-22 21:55:53 +02:00
public function testUnicodeTOC()
{
2017-12-11 22:02:20 +01:00
$converter = new CommonMarkConverter($this->getConfig());
$source = "[TOC]\n# 基础操作\n# 操作基础";
2020-04-22 22:24:52 +02:00
$expected = <<<'EXPECTED'
<ul class="TableOfContents">
<li>
2019-12-29 20:41:13 +01:00
<p><a href="#page_ji_chu_cao_zuo">基础操作</a></p>
</li>
<li>
2019-12-29 20:41:13 +01:00
<p><a href="#page_cao_zuo_ji_chu">操作基础</a></p>
</li>
</ul>
2019-12-29 20:41:13 +01:00
<h1 id="page_ji_chu_cao_zuo">基础操作</h1>
<h1 id="page_cao_zuo_ji_chu">操作基础</h1>
EXPECTED;
$this->assertEquals($expected, $converter->convertToHtml($source));
}
2020-04-22 21:55:53 +02:00
public function testDuplicatedTOC()
{
2017-12-11 22:02:20 +01:00
$converter = new CommonMarkConverter($this->getConfig());
$source = "[TOC]\n# Test\n# Test";
2020-04-22 22:24:52 +02:00
$expected = <<<'EXPECTED'
<ul class="TableOfContents">
<li>
<p><a href="#page_Test">Test</a></p>
</li>
<li>
<p><a href="#page_Test-2">Test</a></p>
</li>
</ul>
<h1 id="page_Test">Test</h1>
<h1 id="page_Test-2">Test</h1>
EXPECTED;
$this->assertEquals($expected, $converter->convertToHtml($source));
}
2020-04-22 21:55:53 +02:00
public function testEscapedTOC()
{
2017-12-11 22:02:20 +01:00
$converter = new CommonMarkConverter($this->getConfig());
$source = "[TOC]\n# TEST : Test";
2020-04-22 22:24:52 +02:00
$expected = <<<'EXPECTED'
<ul class="TableOfContents">
<li>
2019-12-29 20:41:13 +01:00
<p><a href="#page_TEST_Test">TEST : Test</a></p>
</li>
</ul>
2019-12-29 20:41:13 +01:00
<h1 id="page_TEST_Test">TEST : Test</h1>
EXPECTED;
$this->assertEquals($expected, $converter->convertToHtml($source));
}
}