Merge pull request #15338 from totten/master-poc-postcommit
[civicrm-core.git] / tests / phpunit / CRM / Utils / HtmlToTextTest.php
1 <?php
2
3 /**
4 * Class CRM_Utils_HtmlToTextTest
5 * @group headless
6 */
7 class CRM_Utils_HtmlToTextTest extends CiviUnitTestCase {
8
9 public function setUp() {
10 parent::setUp();
11 }
12
13 /**
14 * @return array
15 */
16 public function htmlToTextExamples() {
17 // array(0 => string $html, 1 => string $text)
18 $cases = [];
19
20 $cases[] = [
21 '<br/><p>',
22 '',
23 ];
24
25 $cases[] = [
26 "\n<p>\n" .
27 "This is a paragraph with <b>Bold</b> and <i>italics</i>\n" .
28 "Also some <a href=\"http://www.example.com\">hrefs</a> and a\n" .
29 "few <mailto:\"info@example.org\">mailto</mailto> tags.\n" .
30 "This is also a really long long line\n" .
31 "\n",
32 "This is a paragraph with BOLD and _italics_ Also some hrefs [1] and a few\n" .
33 "mailto tags. This is also a really long long line\n" .
34 "\n" .
35 "Links:\n" .
36 "------\n" .
37 "[1] http://www.example.com\n" .
38 "",
39 ];
40
41 $cases[] = [
42 "<p>\nA <a href=\"{action.do_something}\">token</a>\nis not treated as a relative URL",
43 "A token [1] is not treated as a relative URL\n" .
44 "\n" .
45 "Links:\n" .
46 "------\n" .
47 "[1] {action.do_something}\n",
48 ];
49
50 return $cases;
51 }
52
53 /**
54 * @param string $html
55 * Example HTML input.
56 * @param string $text
57 * Expected text output.
58 * @dataProvider htmlToTextExamples
59 */
60 public function testHtmlToText($html, $text) {
61 $output = CRM_Utils_String::htmlToText($html);
62 $this->assertEquals(
63 trim($output),
64 trim($text),
65 "Text Output did not match for $html"
66 );
67 }
68
69 }