View source
<?php
namespace Drupal\Tests\Core\Render\Element;
use Drupal\Core\Render\Markup;
use Drupal\Tests\UnitTestCase;
use Drupal\Core\Render\Element\HtmlTag;
class HtmlTagTest extends UnitTestCase {
public function testGetInfo() {
$htmlTag = new HtmlTag(array(), 'test', 'test');
$info = $htmlTag
->getInfo();
$this
->assertArrayHasKey('#pre_render', $info);
$this
->assertArrayHasKey('#attributes', $info);
$this
->assertArrayHasKey('#value', $info);
}
public function testPreRenderHtmlTag($element, $expected) {
$result = HtmlTag::preRenderHtmlTag($element);
$this
->assertArrayHasKey('#markup', $result);
$this
->assertEquals($expected, $result['#markup']);
}
public function providerPreRenderHtmlTag() {
$tags = array();
$element = array(
'#value' => 'value',
'#tag' => 'p',
);
$tags[] = array(
$element,
'<p>value</p>' . "\n",
);
$element = array(
'#tag' => 'p',
'#value' => NULL,
);
$tags[] = array(
$element,
"<p></p>\n",
);
$element = array(
'#tag' => 'br',
);
$tags[] = array(
$element,
"<br />\n",
);
$element = array(
'#tag' => 'div',
'#attributes' => array(
'class' => 'test',
'id' => 'id',
),
'#value' => 'value',
);
$tags[] = array(
$element,
'<div class="test" id="id">value</div>' . "\n",
);
$element['#noscript'] = TRUE;
$tags[] = array(
$element,
'<noscript><div class="test" id="id">value</div>' . "\n" . '</noscript>',
);
$element = array(
'#tag' => 'p><script>alert()</script><p',
'#value' => 'value',
);
$tags[] = array(
$element,
"<p><script>alert()</script><p>value</p><script>alert()</script><p>\n",
);
$element = array(
'#tag' => 'p',
'#value' => Markup::create('<script>value</script>'),
);
$tags[] = array(
$element,
"<p><script>value</script></p>\n",
);
$element = array(
'#tag' => 'p',
'#value' => '<script>value</script>',
);
$tags[] = array(
$element,
"<p>value</p>\n",
);
return $tags;
}
public function testPreRenderConditionalComments($element, $expected, $set_safe = FALSE) {
if ($set_safe) {
$element['#prefix'] = Markup::create($element['#prefix']);
$element['#suffix'] = Markup::create($element['#suffix']);
}
$this
->assertEquals($expected, HtmlTag::preRenderConditionalComments($element));
}
public function providerPreRenderConditionalComments() {
$element = array(
'#tag' => 'link',
);
$tags[] = array(
$element,
$element,
);
$element['#browsers'] = array(
'IE' => TRUE,
'!IE' => TRUE,
);
$tags[] = array(
$element,
$element,
);
$element = array(
'#tag' => 'link',
'#browsers' => array(
'IE' => TRUE,
'!IE' => FALSE,
),
);
$expected = $element;
$expected['#prefix'] = "\n<!--[if IE]>\n";
$expected['#suffix'] = "<![endif]-->\n";
$tags[] = array(
$element,
$expected,
);
$element = array(
'#tag' => 'link',
'#browsers' => array(
'IE' => FALSE,
),
);
$expected = $element;
$expected['#prefix'] = "\n<!--[if !IE]><!-->\n";
$expected['#suffix'] = "<!--<![endif]-->\n";
$tags[] = array(
$element,
$expected,
);
$element = array(
'#tag' => 'link',
'#browsers' => array(
'IE' => 'gt IE 8',
),
);
$expected = $element;
$expected['#prefix'] = "\n<!--[if gt IE 8]><!-->\n";
$expected['#suffix'] = "<!--<![endif]-->\n";
$tags[] = array(
$element,
$expected,
);
$element = array(
'#tag' => 'link',
'#browsers' => array(
'IE' => FALSE,
),
'#prefix' => '<blink>prefix</blink>',
'#suffix' => '<blink>suffix</blink>',
);
$expected = $element;
$expected['#prefix'] = "\n<!--[if !IE]><!-->\nprefix";
$expected['#suffix'] = "suffix<!--<![endif]-->\n";
$tags[] = array(
$element,
$expected,
);
$expected['#prefix'] = "\n<!--[if !IE]><!-->\n<blink>prefix</blink>";
$expected['#suffix'] = "<blink>suffix</blink><!--<![endif]-->\n";
$tags[] = array(
$element,
$expected,
TRUE,
);
return $tags;
}
}