function SvgExtractorTest::testLoadIconSvg
Test the SvgExtractor::loadIcon() method.
@dataProvider providerLoadIconSvg
Parameters
array<array<string, string>> $icons_extracted: The icons data to test.
array<string> $file_content: The content returned by IconFinder:getFileContents.
array<string> $expected_content: The icons expected content.
array<string, string> $expected_attributes: The attributes expected.
File
-
core/
tests/ Drupal/ Tests/ Core/ Theme/ Icon/ Plugin/ SvgExtractorTest.php, line 276
Class
- SvgExtractorTest
- @coversDefaultClass \Drupal\Core\Theme\Plugin\IconExtractor\SvgExtractor
Namespace
Drupal\Tests\Core\Theme\Icon\PluginCode
public function testLoadIconSvg(array $icons_extracted = [], array $file_content = [], array $expected_content = [], ?array $expected_attributes = NULL) : void {
foreach ($icons_extracted as $index => $icon) {
$this->iconFinder
->method('getFileContents')
->with($icon['absolute_path'])
->willReturn($file_content[$index]);
$icon_loaded = $this->svgExtractorPlugin
->loadIcon($icon);
// Empty or ignored file test.
if (empty($expected_content[$index])) {
$this->assertNull($icon_loaded);
continue;
}
$this->assertInstanceOf(IconDefinitionInterface::class, $icon_loaded);
$data_loaded = $icon_loaded->getAllData();
$expected_content[$index] = new FormattableMarkup($expected_content[$index], []);
$this->assertEquals($expected_content[$index], $data_loaded['content']);
$expected_attributes[$index] = new Attribute($expected_attributes[$index] ?? []);
$this->assertEquals($expected_attributes[$index], $data_loaded['attributes']);
$expected_id = $this->pluginId . IconDefinition::ICON_SEPARATOR . $icon['icon_id'];
$this->assertSame($expected_id, $icon_loaded->getId());
// Basic data are not altered and can be compared directly.
$this->assertSame($icon['icon_id'], $icon_loaded->getIconId());
$this->assertSame($icon['source'], $icon_loaded->getSource());
$this->assertSame($icon['group'] ?? NULL, $icon_loaded->getGroup());
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.