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); $this->assertArrayHasKey('#markup', $result); $this->assertEquals($expected, $result['#markup']); } /** * Data provider for preRenderHtmlTag test. */ public function providerPreRenderHtmlTag() { $tags = []; // Value prefix/suffix. $element = [ '#value' => 'value', '#tag' => 'p', ]; $tags[] = [$element, '

value

' . "\n"]; // Normal element without a value should not result in a void element. $element = [ '#tag' => 'p', '#value' => NULL, ]; $tags[] = [$element, "

\n"]; // A void element. $element = [ '#tag' => 'br', ]; $tags[] = [$element, "
\n"]; // Attributes. $element = [ '#tag' => 'div', '#attributes' => ['class' => 'test', 'id' => 'id'], '#value' => 'value', ]; $tags[] = [$element, '
value
' . "\n"]; // No script tags. $element['#noscript'] = TRUE; $tags[] = [$element, '']; // Ensure that #tag is sanitised. $element = [ '#tag' => 'p> 'value', ]; $tags[] = [$element, "value\n"]; // Ensure that #value is not filtered if it is marked as safe. $element = [ '#tag' => 'p', '#value' => Markup::create(''), ]; $tags[] = [$element, "

\n"]; // Ensure that #value is filtered if it is not safe. $element = [ '#tag' => 'p', '#value' => '', ]; $tags[] = [$element, "

value

\n"]; return $tags; } /** * @covers ::preRenderConditionalComments * @dataProvider providerPreRenderConditionalComments */ 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)); } /** * Data provider for conditional comments test. */ public function providerPreRenderConditionalComments() { // No browser specification. $element = [ '#tag' => 'link', ]; $tags[] = [$element, $element]; // Specify all browsers. $element['#browsers'] = [ 'IE' => TRUE, '!IE' => TRUE, ]; $tags[] = [$element, $element]; // All IE. $element = [ '#tag' => 'link', '#browsers' => [ 'IE' => TRUE, '!IE' => FALSE, ], ]; $expected = $element; $expected['#prefix'] = "\n\n"; $tags[] = [$element, $expected]; // Exclude IE. $element = [ '#tag' => 'link', '#browsers' => [ 'IE' => FALSE, ], ]; $expected = $element; $expected['#prefix'] = "\n\n"; $expected['#suffix'] = "\n"; $tags[] = [$element, $expected]; // IE gt 8 $element = [ '#tag' => 'link', '#browsers' => [ 'IE' => 'gt IE 8', ], ]; $expected = $element; $expected['#prefix'] = "\n\n"; $expected['#suffix'] = "\n"; $tags[] = [$element, $expected]; // Prefix and suffix filtering if not safe. $element = [ '#tag' => 'link', '#browsers' => [ 'IE' => FALSE, ], '#prefix' => 'prefix', '#suffix' => 'suffix', ]; $expected = $element; $expected['#prefix'] = "\n\nprefix"; $expected['#suffix'] = "suffix\n"; $tags[] = [$element, $expected]; // Prefix and suffix filtering if marked as safe. This has to come after the // previous test case. $expected['#prefix'] = "\n\nprefix"; $expected['#suffix'] = "suffix\n"; $tags[] = [$element, $expected, TRUE]; return $tags; } }