getInfo();
$this->assertArrayHasKey('#pre_render', $info);
$this->assertArrayHasKey('#attributes', $info);
$this->assertArrayHasKey('#value', $info);
}
/**
* @covers ::preRenderHtmlTag
* @dataProvider providerPreRenderHtmlTag
*/
public function testPreRenderHtmlTag($element, $expected) {
$result = HtmlTag::preRenderHtmlTag($element);
foreach ($result as &$child) {
if (is_array($child) && isset($child['#tag'])) {
$child = HtmlTag::preRenderHtmlTag($child);
}
}
$this->assertEquals($expected, (string) $this->renderer->renderRoot($result));
}
/**
* Data provider for preRenderHtmlTag test.
*/
public function providerPreRenderHtmlTag() {
$tags = [];
// Value prefix/suffix.
$element = [
'#value' => 'value',
'#tag' => 'p',
];
$tags['value'] = [$element, '
value
' . "\n"];
// Normal element without a value should not result in a void element.
$element = [
'#tag' => 'p',
'#value' => NULL,
];
$tags['no-value'] = [$element, "\n"];
// A void element.
$element = [
'#tag' => 'br',
];
$tags['void-element'] = [$element, " \n"];
// Attributes.
$element = [
'#tag' => 'div',
'#attributes' => ['class' => 'test', 'id' => 'id'],
'#value' => 'value',
];
$tags['attributes'] = [$element, '
value
' . "\n"];
// No script tags.
$element['#noscript'] = TRUE;
$tags['noscript'] = [$element, ''];
// Ensure that #tag is sanitised.
$element = [
'#tag' => 'p>
'value',
];
$tags['sanitized-tag'] = [$element, "
value
\n"];
// Ensure that #value is not filtered if it is marked as safe.
$element = [
'#tag' => 'p',
'#value' => Markup::create(''),
];
$tags['value-safe'] = [$element, "\n"];
// Ensure that #value is filtered if it is not safe.
$element = [
'#tag' => 'p',
'#value' => '',
];
$tags['value-not-safe'] = [$element, "