| 
									
										
										
										
											2020-10-20 23:38:56 +01:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // {{{ License
 | 
					
						
							| 
									
										
										
										
											2021-03-31 09:54:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-20 23:38:56 +01:00
										 |  |  | // This file is part of GNU social - https://www.gnu.org/software/social
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // GNU social is free software: you can redistribute it and/or modify
 | 
					
						
							|  |  |  | // it under the terms of the GNU Affero General Public License as published by
 | 
					
						
							|  |  |  | // the Free Software Foundation, either version 3 of the License, or
 | 
					
						
							|  |  |  | // (at your option) any later version.
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // GNU social is distributed in the hope that it will be useful,
 | 
					
						
							|  |  |  | // but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					
						
							|  |  |  | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					
						
							|  |  |  | // GNU Affero General Public License for more details.
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // You should have received a copy of the GNU Affero General Public License
 | 
					
						
							|  |  |  | // along with GNU social.  If not, see <http://www.gnu.org/licenses/>.
 | 
					
						
							| 
									
										
										
										
											2021-03-31 09:54:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-20 23:38:56 +01:00
										 |  |  | // }}} License
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * This file test the Macro that Embeds SVG icons. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @package   Tests | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @author    Ângelo D. Moura <up201303828@fe.up.pt> | 
					
						
							|  |  |  |  * @copyright 2020 Free Software Foundation, Inc http://www.fsf.org | 
					
						
							|  |  |  |  * @author    Hugo Sales <hugo@hsal.es> | 
					
						
							|  |  |  |  * @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; | 
					
						
							| 
									
										
										
										
											2020-11-09 19:43:39 +00:00
										 |  |  | use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; | 
					
						
							| 
									
										
										
										
											2020-10-20 23:38:56 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-02 14:44:04 +00:00
										 |  |  | class ExtensionTest extends KernelTestCase | 
					
						
							| 
									
										
										
										
											2020-10-20 23:38:56 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     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(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-09 19:43:39 +00:00
										 |  |  |         //Check if every icon file as a ".svg.twig" extension
 | 
					
						
							|  |  |  |         foreach ($icon_file_names as $icon_file_name) { | 
					
						
							| 
									
										
										
										
											2020-12-02 14:44:04 +00:00
										 |  |  |             static::assertRegExp('/.svg.twig/', $icon_file_name); | 
					
						
							| 
									
										
										
										
											2020-11-09 19:43:39 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         //Check if the function gives a valid HTML with a class attribute equal to the one passed
 | 
					
						
							|  |  |  |         static::bootKernel(); | 
					
						
							| 
									
										
										
										
											2020-10-20 23:38:56 +01:00
										 |  |  |         $twig = self::$kernel->getContainer()->get('twig'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         foreach ($icon_file_names as $icon_file_name) { | 
					
						
							| 
									
										
										
										
											2020-11-09 19:43:39 +00:00
										 |  |  |             $icon_name = basename($icon_file_name, '.svg.twig'); | 
					
						
							| 
									
										
										
										
											2020-10-20 23:38:56 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-09 19:43:39 +00:00
										 |  |  |             $icon_template_render = $twig->render('@public_path/assets/icons/' . $icon_file_name, ['iconClass' => 'icon icon-' . $icon_name]); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-31 09:54:50 +00:00
										 |  |  |             $icons_extension       = new Runtime(); | 
					
						
							| 
									
										
										
										
											2020-10-20 23:38:56 +01:00
										 |  |  |             $icon_extension_render = $icons_extension->embedSvgIcon($twig, $icon_name, 'icon icon-' . $icon_name); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-09 19:43:39 +00:00
										 |  |  |             static::assertSame($icon_template_render, $icon_extension_render); | 
					
						
							| 
									
										
										
										
											2020-10-20 23:38:56 +01:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |