class HtmlTagTest
Same name in other branches
- 9 core/tests/Drupal/Tests/Core/Render/Element/HtmlTagTest.php \Drupal\Tests\Core\Render\Element\HtmlTagTest
- 8.9.x core/tests/Drupal/Tests/Core/Render/Element/HtmlTagTest.php \Drupal\Tests\Core\Render\Element\HtmlTagTest
- 10 core/tests/Drupal/Tests/Core/Render/Element/HtmlTagTest.php \Drupal\Tests\Core\Render\Element\HtmlTagTest
@coversDefaultClass \Drupal\Core\Render\Element\HtmlTag @group Render
Hierarchy
- class \Drupal\Tests\UnitTestCase extends \PHPUnit\Framework\TestCase uses \Drupal\Tests\PhpUnitCompatibilityTrait, \Prophecy\PhpUnit\ProphecyTrait, \Drupal\TestTools\Extension\DeprecationBridge\ExpectDeprecationTrait, \Drupal\Tests\RandomGeneratorTrait
- class \Drupal\Tests\Core\Render\RendererTestBase extends \Drupal\Tests\UnitTestCase
- class \Drupal\Tests\Core\Render\Element\HtmlTagTest extends \Drupal\Tests\Core\Render\RendererTestBase
- class \Drupal\Tests\Core\Render\RendererTestBase extends \Drupal\Tests\UnitTestCase
Expanded class hierarchy of HtmlTagTest
File
-
core/
tests/ Drupal/ Tests/ Core/ Render/ Element/ HtmlTagTest.php, line 15
Namespace
Drupal\Tests\Core\Render\ElementView source
class HtmlTagTest extends RendererTestBase {
/**
* @covers ::getInfo
*/
public function testGetInfo() : void {
$htmlTag = new HtmlTag([], 'test', 'test');
$info = $htmlTag->getInfo();
$this->assertArrayHasKey('#pre_render', $info);
$this->assertArrayHasKey('#attributes', $info);
$this->assertArrayHasKey('#value', $info);
}
/**
* @covers ::preRenderHtmlTag
* @dataProvider providerPreRenderHtmlTag
*/
public function testPreRenderHtmlTag($element, $expected) : void {
$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 static function providerPreRenderHtmlTag() {
$tags = [];
// Value prefix/suffix.
$element = [
'#value' => 'value',
'#tag' => 'p',
];
$tags['value'] = [
$element,
'<p>value</p>' . "\n",
];
// Normal element without a value should not result in a void element.
$element = [
'#tag' => 'p',
'#value' => NULL,
];
$tags['no-value'] = [
$element,
"<p></p>\n",
];
// A void element.
$element = [
'#tag' => 'br',
];
$tags['void-element'] = [
$element,
"<br />\n",
];
// Attributes.
$element = [
'#tag' => 'div',
'#attributes' => [
'class' => 'test',
'id' => 'id',
],
'#value' => 'value',
];
$tags['attributes'] = [
$element,
'<div class="test" id="id">value</div>' . "\n",
];
// No script tags.
$element['#noscript'] = TRUE;
$tags['noscript'] = [
$element,
'<noscript><div class="test" id="id">value</div>' . "\n" . '</noscript>',
];
// Ensure that #tag is sanitized.
$element = [
'#tag' => 'p><script>alert()</script><p',
'#value' => 'value',
];
$tags['sanitized-tag'] = [
$element,
"<p><script>alert()</script><p>value</p><script>alert()</script><p>\n",
];
// Ensure that #value is not filtered if it is marked as safe.
$element = [
'#tag' => 'p',
'#value' => Markup::create('<script>value</script>'),
];
$tags['value-safe'] = [
$element,
"<p><script>value</script></p>\n",
];
// Ensure that #value is filtered if it is not safe.
$element = [
'#tag' => 'p',
'#value' => '<script>value</script>',
];
$tags['value-not-safe'] = [
$element,
"<p>value</p>\n",
];
// Ensure that nested render arrays render properly.
$element = [
'#tag' => 'p',
'#value' => NULL,
[
[
'#markup' => '<b>value1</b>',
],
[
'#markup' => '<b>value2</b>',
],
],
];
$tags['nested'] = [
$element,
"<p><b>value1</b><b>value2</b></p>\n",
];
// Ensure svg elements.
$element = [
'#tag' => 'rect',
'#attributes' => [
'width' => 25,
'height' => 25,
'x' => 5,
'y' => 10,
],
];
$tags['rect'] = [
$element,
'<rect width="25" height="25" x="5" y="10" />' . "\n",
];
$element = [
'#tag' => 'circle',
'#attributes' => [
'cx' => 100,
'cy' => 100,
'r' => 100,
],
];
$tags['circle'] = [
$element,
'<circle cx="100" cy="100" r="100" />' . "\n",
];
$element = [
'#tag' => 'polygon',
'#attributes' => [
'points' => '60,20 100,40 100,80 60,100 20,80 20,40',
],
];
$tags['polygon'] = [
$element,
'<polygon points="60,20 100,40 100,80 60,100 20,80 20,40" />' . "\n",
];
$element = [
'#tag' => 'ellipse',
'#attributes' => [
'cx' => 60,
'cy' => 60,
'rx' => 50,
'ry' => 25,
],
];
$tags['ellipse'] = [
$element,
'<ellipse cx="60" cy="60" rx="50" ry="25" />' . "\n",
];
$element = [
'#tag' => 'use',
'#attributes' => [
'x' => 50,
'y' => 10,
'width' => 50,
'height' => 50,
],
];
$tags['use'] = [
$element,
'<use x="50" y="10" width="50" height="50" />' . "\n",
];
$element = [
'#tag' => 'path',
'#attributes' => [
'd' => 'M 100 100 L 300 100 L 200 300 z',
'fill' => 'orange',
'stroke' => 'black',
'stroke-width' => 3,
],
];
$tags['path'] = [
$element,
'<path d="M 100 100 L 300 100 L 200 300 z" fill="orange" stroke="black" stroke-width="3" />' . "\n",
];
$element = [
'#tag' => 'stop',
'#attributes' => [
'offset' => '5%',
'stop-color' => '#F60',
],
];
$tags['stop'] = [
$element,
'<stop offset="5%" stop-color="#F60" />' . "\n",
];
// Nested svg elements.
$element = [
'#tag' => 'linearGradient',
'#value' => NULL,
[
'#tag' => 'stop',
'#value' => NULL,
'#attributes' => [
'offset' => '5%',
'stop-color' => '#F60',
],
],
[
'#tag' => 'stop',
'#value' => NULL,
'#attributes' => [
'offset' => '95%',
'stop-color' => '#FF6',
],
],
];
$tags['linearGradient'] = [
$element,
'<linearGradient><stop offset="5%" stop-color="#F60" />' . "\n" . '<stop offset="95%" stop-color="#FF6" />' . "\n" . '</linearGradient>' . "\n",
];
// Simple link.
$element = [
'#tag' => 'link',
];
$tags['link'] = [
$element,
'<link />' . "\n",
];
return $tags;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
ExpectDeprecationTrait::expectDeprecation | public | function | Adds an expected deprecation. | ||
ExpectDeprecationTrait::getCallableName | private static | function | Returns a callable as a string suitable for inclusion in a message. | ||
ExpectDeprecationTrait::setUpErrorHandler | public | function | Sets up the test error handler. | ||
ExpectDeprecationTrait::tearDownErrorHandler | public | function | Tears down the test error handler. | ||
HtmlTagTest::providerPreRenderHtmlTag | public static | function | Data provider for preRenderHtmlTag test. | ||
HtmlTagTest::testGetInfo | public | function | @covers ::getInfo | ||
HtmlTagTest::testPreRenderHtmlTag | public | function | @covers ::preRenderHtmlTag @dataProvider providerPreRenderHtmlTag |
||
RandomGeneratorTrait::getRandomGenerator | protected | function | Gets the random generator for the utility methods. | ||
RandomGeneratorTrait::randomMachineName | protected | function | Generates a unique random string containing letters and numbers. | ||
RandomGeneratorTrait::randomObject | public | function | Generates a random PHP object. | ||
RandomGeneratorTrait::randomString | public | function | Generates a pseudo-random string of ASCII characters of codes 32 to 126. | ||
RendererTestBase::$cacheContextsManager | protected | property | |||
RendererTestBase::$cacheFactory | protected | property | |||
RendererTestBase::$callableResolver | protected | property | The mocked controller resolver. | ||
RendererTestBase::$currentUserRole | protected | property | The simulated "current" user role, for use in tests with cache contexts. | ||
RendererTestBase::$datetimeTime | protected | property | System time service. | ||
RendererTestBase::$elementInfo | protected | property | The mocked element info. | ||
RendererTestBase::$memoryCache | protected | property | |||
RendererTestBase::$placeholderGenerator | protected | property | The tested placeholder generator. | 1 | |
RendererTestBase::$renderCache | protected | property | The tested render cache. | ||
RendererTestBase::$renderer | protected | property | The tested renderer. | ||
RendererTestBase::$rendererConfig | protected | property | The mocked renderer configuration. | ||
RendererTestBase::$requestStack | protected | property | |||
RendererTestBase::$themeManager | protected | property | The mocked theme manager. | ||
RendererTestBase::assertRenderCacheItem | protected | function | Asserts a render cache item. | ||
RendererTestBase::randomContextValue | protected static | function | Generates a random context value for the placeholder tests. | ||
RendererTestBase::setUp | protected | function | Overrides UnitTestCase::setUp | 4 | |
RendererTestBase::setUpMemoryCache | protected | function | Sets up a memory-based render cache back-end. | ||
RendererTestBase::setUpRequest | protected | function | Sets up a request object on the request stack. | ||
RendererTestBase::setUpUnusedCache | protected | function | Sets up a render cache back-end that is asserted to be never used. | ||
UnitTestCase::$root | protected | property | The app root. | ||
UnitTestCase::getClassResolverStub | protected | function | Returns a stub class resolver. | ||
UnitTestCase::getConfigFactoryStub | public | function | Returns a stub config factory that behaves according to the passed array. | ||
UnitTestCase::getConfigStorageStub | public | function | Returns a stub config storage that returns the supplied configuration. | ||
UnitTestCase::getContainerWithCacheTagsInvalidator | protected | function | Sets up a container with a cache tags invalidator. | ||
UnitTestCase::getStringTranslationStub | public | function | Returns a stub translation manager that just returns the passed string. | ||
UnitTestCase::setUpBeforeClass | public static | function |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.