. * */ namespace Friendica\Test\src\Content\Text; use Exception; use Friendica\Content\Text\HTML; use Friendica\Network\HTTPException\InternalServerErrorException; use Friendica\Test\MockedTest; use Friendica\Test\Util\AppMockTrait; use Friendica\Test\Util\VFSTrait; class HTMLTest extends MockedTest { use VFSTrait; use AppMockTrait; protected function setUp(): void { parent::setUp(); $this->setUpVfsDir(); $this->mockApp($this->root); } public function dataHTML() { $inputFiles = glob(__DIR__ . '/../../../datasets/content/text/html/*.html'); $data = []; foreach ($inputFiles as $file) { $data[str_replace('.html', '', $file)] = [ 'input' => file_get_contents($file), 'expected' => file_get_contents(str_replace('.html', '.txt', $file)) ]; } return $data; } /** * Test convert different input Markdown text into HTML * * @dataProvider dataHTML * * @param string $input The Markdown text to test * @param string $expected The expected HTML output * * @throws Exception */ public function testToPlaintext(string $input, string $expected) { $output = HTML::toPlaintext($input, 0); self::assertEquals($expected, $output); } public function dataHTMLText() { return [ 'bug-7665-audio-tag' => [ 'expectedBBCode' => '[audio]http://www.cendrones.fr/colloque2017/jonathanbocquet.mp3[/audio]', 'html' => '', ], 'bug-8075-html-tags' => [ 'expectedBBCode' => " I don't understand tests", 'html' => "<big rant here> I don't understand tests", ], ]; } /** * Test convert bbcodes to HTML * * @dataProvider dataHTMLText * * @param string $expectedBBCode Expected BBCode output * @param string $html HTML text * * @throws InternalServerErrorException */ public function testToBBCode(string $expectedBBCode, string $html) { $actual = HTML::toBBCode($html); self::assertEquals($expectedBBCode, $actual); } }