1
0
mirror of https://github.com/erusev/parsedown.git synced 2023-08-10 21:13:06 +03:00

Adjust tests for new API

Remove tests that test old core and extension features
Comment out test for no markup independent of safe mode
This commit is contained in:
Aidan Woods 2019-01-20 02:56:19 +00:00
parent e2c9b2fa2b
commit 04816a9944
No known key found for this signature in database
GPG Key ID: 9A6A8EFAA512BBB9
2 changed files with 49 additions and 120 deletions

View File

@ -2,7 +2,10 @@
namespace Erusev\Parsedown\Tests; namespace Erusev\Parsedown\Tests;
use Erusev\Parsedown\Configurables\SafeMode;
use Erusev\Parsedown\Configurables\StrictMode;
use Erusev\Parsedown\Parsedown; use Erusev\Parsedown\Parsedown;
use Erusev\Parsedown\State;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
class ParsedownTest extends TestCase class ParsedownTest extends TestCase
@ -10,7 +13,6 @@ class ParsedownTest extends TestCase
final public function __construct($name = null, array $data = [], $dataName = '') final public function __construct($name = null, array $data = [], $dataName = '')
{ {
$this->dirs = $this->initDirs(); $this->dirs = $this->initDirs();
$this->Parsedown = $this->initParsedown();
parent::__construct($name, $data, $dataName); parent::__construct($name, $data, $dataName);
} }
@ -28,16 +30,6 @@ class ParsedownTest extends TestCase
return $dirs; return $dirs;
} }
/**
* @return Parsedown
*/
protected function initParsedown()
{
$Parsedown = new TestParsedown();
return $Parsedown;
}
/** /**
* @dataProvider data * @dataProvider data
* @param $test * @param $test
@ -52,48 +44,16 @@ class ParsedownTest extends TestCase
$expectedMarkup = \str_replace("\r\n", "\n", $expectedMarkup); $expectedMarkup = \str_replace("\r\n", "\n", $expectedMarkup);
$expectedMarkup = \str_replace("\r", "\n", $expectedMarkup); $expectedMarkup = \str_replace("\r", "\n", $expectedMarkup);
$this->Parsedown->setSafeMode(\substr($test, 0, 3) === 'xss'); $Parsedown = new Parsedown(new State([
$this->Parsedown->setStrictMode(\substr($test, 0, 6) === 'strict'); new SafeMode(\substr($test, 0, 3) === 'xss'),
new StrictMode(\substr($test, 0, 6) === 'strict'),
]));
$actualMarkup = $this->Parsedown->text($markdown); $actualMarkup = $Parsedown->text($markdown);
$this->assertEquals($expectedMarkup, $actualMarkup); $this->assertEquals($expectedMarkup, $actualMarkup);
} }
public function testRawHtml()
{
$markdown = "```php\nfoobar\n```";
$expectedMarkup = '<pre><code class="language-php"><p>foobar</p></code></pre>';
$expectedSafeMarkup = '<pre><code class="language-php">&lt;p&gt;foobar&lt;/p&gt;</code></pre>';
$unsafeExtension = new SampleExtensions\UnsafeExtension;
$actualMarkup = $unsafeExtension->text($markdown);
$this->assertEquals($expectedMarkup, $actualMarkup);
$unsafeExtension->setSafeMode(true);
$actualSafeMarkup = $unsafeExtension->text($markdown);
$this->assertEquals($expectedSafeMarkup, $actualSafeMarkup);
}
public function testTrustDelegatedRawHtml()
{
$markdown = "```php\nfoobar\n```";
$expectedMarkup = '<pre><code class="language-php"><p>foobar</p></code></pre>';
$expectedSafeMarkup = $expectedMarkup;
$unsafeExtension = new SampleExtensions\TrustDelegatedExtension;
$actualMarkup = $unsafeExtension->text($markdown);
$this->assertEquals($expectedMarkup, $actualMarkup);
$unsafeExtension->setSafeMode(true);
$actualSafeMarkup = $unsafeExtension->text($markdown);
$this->assertEquals($expectedSafeMarkup, $actualSafeMarkup);
}
public function data() public function data()
{ {
$data = []; $data = [];
@ -127,70 +87,52 @@ class ParsedownTest extends TestCase
return $data; return $data;
} }
public function test_no_markup() // public function test_no_markup()
{ // {
$markdownWithHtml = <<<MARKDOWN_WITH_MARKUP // $markdownWithHtml = <<<MARKDOWN_WITH_MARKUP
<div>_content_</div> // <div>_content_</div>
sparse: // sparse:
<div> // <div>
<div class="inner"> // <div class="inner">
_content_ // _content_
</div> // </div>
</div> // </div>
paragraph // paragraph
<style type="text/css"> // <style type="text/css">
p { // p {
color: red; // color: red;
} // }
</style> // </style>
comment // comment
<!-- html comment --> // <!-- html comment -->
MARKDOWN_WITH_MARKUP; // MARKDOWN_WITH_MARKUP;
$expectedHtml = <<<EXPECTED_HTML // $expectedHtml = <<<EXPECTED_HTML
<p>&lt;div&gt;<em>content</em>&lt;/div&gt;</p> // <p>&lt;div&gt;<em>content</em>&lt;/div&gt;</p>
<p>sparse:</p> // <p>sparse:</p>
<p>&lt;div&gt; // <p>&lt;div&gt;
&lt;div class="inner"&gt; // &lt;div class="inner"&gt;
<em>content</em> // <em>content</em>
&lt;/div&gt; // &lt;/div&gt;
&lt;/div&gt;</p> // &lt;/div&gt;</p>
<p>paragraph</p> // <p>paragraph</p>
<p>&lt;style type="text/css"&gt; // <p>&lt;style type="text/css"&gt;
p { // p {
color: red; // color: red;
} // }
&lt;/style&gt;</p> // &lt;/style&gt;</p>
<p>comment</p> // <p>comment</p>
<p>&lt;!-- html comment --&gt;</p> // <p>&lt;!-- html comment --&gt;</p>
EXPECTED_HTML; // EXPECTED_HTML;
$parsedownWithNoMarkup = new TestParsedown(); // $parsedownWithNoMarkup = new TestParsedown();
$parsedownWithNoMarkup->setMarkupEscaped(true); // $parsedownWithNoMarkup->setMarkupEscaped(true);
$this->assertEquals($expectedHtml, $parsedownWithNoMarkup->text($markdownWithHtml)); // $this->assertEquals($expectedHtml, $parsedownWithNoMarkup->text($markdownWithHtml));
} // }
public function testLateStaticBinding()
{
$parsedown = Parsedown::instance();
$this->assertInstanceOf('Erusev\Parsedown\Parsedown', $parsedown);
// After instance is already called on Parsedown
// subsequent calls with the same arguments return the same instance
$sameParsedown = TestParsedown::instance();
$this->assertInstanceOf('Erusev\Parsedown\Parsedown', $sameParsedown);
$this->assertSame($parsedown, $sameParsedown);
$testParsedown = TestParsedown::instance('test late static binding');
$this->assertInstanceOf('Erusev\Parsedown\Parsedown', $testParsedown);
$sameInstanceAgain = TestParsedown::instance('test late static binding');
$this->assertSame($testParsedown, $sameInstanceAgain);
}
} }

View File

@ -1,13 +0,0 @@
<?php
namespace Erusev\Parsedown\Tests;
use Erusev\Parsedown\Parsedown;
class TestParsedown extends Parsedown
{
public function getTextLevelElements()
{
return $this->textLevelElements;
}
}