. // }}} License /** * This file test the Macro that Embeds SVG icons. * * @package Tests * * @author Ângelo D. Moura * @copyright 2020 Free Software Foundation, Inc http://www.fsf.org * @author Hugo Sales * @copyright 2021 Free Software Foundation, Inc http://www.fsf.org * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later */ namespace App\Tests\Templates\Icons; use App\Twig\Extension; use App\Twig\Runtime; use DirectoryIterator; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; class IconsExtensionTest extends KernelTestCase { public function testIconsExtension() { // Get all Icon files names from "public/assets/icons" $icon_file_names = []; foreach (new DirectoryIterator('public/assets/icons/') as $file) { if ($file->isDot()) { continue; } $icon_file_names[] = $file->getFilename(); } //Check if every icon file as a ".svg.twig" extension foreach ($icon_file_names as $icon_file_name) { static::assertRegExp('#([a-zA-Z0-9\s_\\.\-\(\):])+(.svg.twig)$#', $icon_file_name); } //Check if the function gives a valid HTML with a class attribute equal to the one passed static::bootKernel(); $twig = self::$kernel->getContainer()->get('twig'); foreach ($icon_file_names as $icon_file_name) { $icon_name = basename($icon_file_name, '.svg.twig'); $icon_template_render = $twig->render('@public_path/assets/icons/' . $icon_file_name, ['iconClass' => 'icon icon-' . $icon_name]); $icons_extension = new IconsExtension(); $icon_extension_render = $icons_extension->embedSvgIcon($twig, $icon_name, 'icon icon-' . $icon_name); static::assertSame($icon_template_render, $icon_extension_render); } } }