1 mail.test | BackdropHtmlToTextTestCase::testTags() |
Test all supported tags of backdrop_html_to_text().
File
- core/
modules/ simpletest/ tests/ mail.test, line 131 - Test the Backdrop mailing system.
Class
- BackdropHtmlToTextTestCase
- Unit tests for backdrop_html_to_text().
Code
function testTags() {
global $base_path, $base_url;
$tests = array(
// @todo Trailing linefeeds should be trimmed.
'<a href = "https://backdropcms.org">BackdropCMS.org</a>' => "BackdropCMS.org [1]\n\n[1] https://backdropcms.org\n",
// @todo Footer URLs should be absolute.
"<a href = \"$base_path\">Homepage</a>" => "Homepage [1]\n\n[1] $base_url/\n",
'<address>Backdrop</address>' => "Backdrop\n",
// @todo The <address> tag is currently not supported.
'<address>Backdrop</address><address>Backdrop</address>' => "BackdropBackdrop\n",
'<b>Backdrop</b>' => "*Backdrop*\n",
// @todo There should be a space between the '>' and the text.
'<blockquote>Backdrop</blockquote>' => ">Backdrop\n",
'<blockquote>Backdrop</blockquote><blockquote>Backdrop</blockquote>' => ">Backdrop\n>Backdrop\n",
'<br />Backdrop<br />Backdrop<br /><br />Backdrop' => "Backdrop\nBackdrop\nBackdrop\n",
'<br/>Backdrop<br/>Backdrop<br/><br/>Backdrop' => "Backdrop\nBackdrop\nBackdrop\n",
// @todo There should be two line breaks before the paragraph.
'<br/>Backdrop<br/>Backdrop<br/><br/>Backdrop<p>Backdrop</p>' => "Backdrop\nBackdrop\nBackdrop\nBackdrop\n\n",
'<div>Backdrop</div>' => "Backdrop\n",
// @todo The <div> tag is currently not supported.
'<div>Backdrop</div><div>Backdrop</div>' => "BackdropBackdrop\n",
'<em>Backdrop</em>' => "/Backdrop/\n",
'<h1>Backdrop</h1>' => "======== BACKDROP ============================================================\n\n",
'<h1>Backdrop</h1><p>Backdrop</p>' => "======== BACKDROP ============================================================\n\nBackdrop\n\n",
'<h2>Backdrop</h2>' => "-------- BACKDROP ------------------------------------------------------------\n\n",
'<h2>Backdrop</h2><p>Backdrop</p>' => "-------- BACKDROP ------------------------------------------------------------\n\nBackdrop\n\n",
'<h3>Backdrop</h3>' => ".... Backdrop\n\n",
'<h3>Backdrop</h3><p>Backdrop</p>' => ".... Backdrop\n\nBackdrop\n\n",
'<h4>Backdrop</h4>' => ".. Backdrop\n\n",
'<h4>Backdrop</h4><p>Backdrop</p>' => ".. Backdrop\n\nBackdrop\n\n",
'<h5>Backdrop</h5>' => "Backdrop\n\n",
'<h5>Backdrop</h5><p>Backdrop</p>' => "Backdrop\n\nBackdrop\n\n",
'<h6>Backdrop</h6>' => "Backdrop\n\n",
'<h6>Backdrop</h6><p>Backdrop</p>' => "Backdrop\n\nBackdrop\n\n",
'<hr />Backdrop<hr />' => "------------------------------------------------------------------------------\nBackdrop\n------------------------------------------------------------------------------\n",
'<hr/>Backdrop<hr/>' => "------------------------------------------------------------------------------\nBackdrop\n------------------------------------------------------------------------------\n",
'<hr/>Backdrop<hr/><p>Backdrop</p>' => "------------------------------------------------------------------------------\nBackdrop\n------------------------------------------------------------------------------\nBackdrop\n\n",
'<i>Backdrop</i>' => "/Backdrop/\n",
'<p>Backdrop</p>' => "Backdrop\n\n",
'<p>Backdrop</p><p>Backdrop</p>' => "Backdrop\n\nBackdrop\n\n",
'<strong>Backdrop</strong>' => "*Backdrop*\n",
// @todo Tables are currently not supported.
'<table><tr><td>Backdrop</td><td>Backdrop</td></tr><tr><td>Backdrop</td><td>Backdrop</td></tr></table>' => "BackdropBackdropBackdropBackdrop\n",
'<table><tr><td>Backdrop</td></tr></table><p>Backdrop</p>' => "Backdrop\nBackdrop\n\n",
// @todo The <u> tag is currently not supported.
'<u>Backdrop</u>' => "Backdrop\n",
'<ul><li>Backdrop</li></ul>' => " * Backdrop\n\n",
'<ul><li>Backdrop <em>Backdrop</em> Backdrop</li></ul>' => " * Backdrop /Backdrop/ Backdrop\n\n",
// @todo Lines containing nothing but spaces should be trimmed.
'<ul><li>Backdrop</li><li><ol><li>Backdrop</li><li>Backdrop</li></ol></li></ul>' => " * Backdrop\n * 1) Backdrop\n 2) Backdrop\n \n\n",
'<ul><li>Backdrop</li><li><ol><li>Backdrop</li></ol></li><li>Backdrop</li></ul>' => " * Backdrop\n * 1) Backdrop\n \n * Backdrop\n\n",
'<ul><li>Backdrop</li><li>Backdrop</li></ul>' => " * Backdrop\n * Backdrop\n\n",
'<ul><li>Backdrop</li></ul><p>Backdrop</p>' => " * Backdrop\n\nBackdrop\n\n",
'<ol><li>Backdrop</li></ol>' => " 1) Backdrop\n\n",
'<ol><li>Backdrop</li><li><ul><li>Backdrop</li><li>Backdrop</li></ul></li></ol>' => " 1) Backdrop\n 2) * Backdrop\n * Backdrop\n \n\n",
'<ol><li>Backdrop</li><li>Backdrop</li></ol>' => " 1) Backdrop\n 2) Backdrop\n\n",
'<ol>Backdrop</ol>' => "Backdrop\n\n",
'<ol><li>Backdrop</li></ol><p>Backdrop</p>' => " 1) Backdrop\n\nBackdrop\n\n",
'<dl><dt>Backdrop</dt></dl>' => "Backdrop\n\n",
'<dl><dt>Backdrop</dt><dd>Backdrop</dd></dl>' => "Backdrop\n Backdrop\n\n",
'<dl><dt>Backdrop</dt><dd>Backdrop</dd><dt>Backdrop</dt><dd>Backdrop</dd></dl>' => "Backdrop\n Backdrop\nBackdrop\n Backdrop\n\n",
'<dl><dt>Backdrop</dt><dd>Backdrop</dd></dl><p>Backdrop</p>' => "Backdrop\n Backdrop\n\nBackdrop\n\n",
'<dl><dt>Backdrop<dd>Backdrop</dl>' => "Backdrop\n Backdrop\n\n",
'<dl><dt>Backdrop</dt></dl><p>Backdrop</p>' => "Backdrop\n\nBackdrop\n\n",
// @todo Again, lines containing only spaces should be trimmed.
'<ul><li>Backdrop</li><li><dl><dt>Backdrop</dt><dd>Backdrop</dd><dt>Backdrop</dt><dd>Backdrop</dd></dl></li><li>Backdrop</li></ul>' => " * Backdrop\n * Backdrop\n Backdrop\n Backdrop\n Backdrop\n \n * Backdrop\n\n",
// Tests malformed HTML tags.
'<br>Backdrop<br>Backdrop' => "Backdrop\nBackdrop\n",
'<hr>Backdrop<hr>Backdrop' => "------------------------------------------------------------------------------\nBackdrop\n------------------------------------------------------------------------------\nBackdrop\n",
'<ol><li>Backdrop<li>Backdrop</ol>' => " 1) Backdrop\n 2) Backdrop\n\n",
'<ul><li>Backdrop <em>Backdrop</em> Backdrop</ul></ul>' => " * Backdrop /Backdrop/ Backdrop\n\n",
'<ul><li>Backdrop<li>Backdrop</ol>' => " * Backdrop\n * Backdrop\n\n",
'<ul><li>Backdrop<li>Backdrop</ul>' => " * Backdrop\n * Backdrop\n\n",
'<ul>Backdrop</ul>' => "Backdrop\n\n",
'Backdrop</ul></ol></dl><li>Backdrop' => "Backdrop\n * Backdrop\n",
'<dl>Backdrop</dl>' => "Backdrop\n\n",
'<dl>Backdrop</dl><p>Backdrop</p>' => "Backdrop\n\nBackdrop\n\n",
'<dt>Backdrop</dt>' => "Backdrop\n",
// Tests some unsupported HTML tags.
'<html>Backdrop</html>' => "Backdrop\n",
// @todo Perhaps the contents of <script> tags should be dropped.
'<script type="text/javascript">Backdrop</script>' => "Backdrop\n",
// A couple of tests for Unicode characters.
'<q>I <em>will</em> be back…</q>' => "I /will/ be back…\n",
// cspell:disable-next-line
'FrançAIS is ÜBER-åwesome' => "FrançAIS is ÜBER-åwesome\n",
);
foreach ($tests as $html => $text) {
$this->assertHtmlToText($html, $text, 'Supported tags');
}
}