‪TYPO3CMS  11.5
IconRegistryTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use Prophecy\Argument;
21 use Prophecy\PhpUnit\ProphecyTrait;
22 use Prophecy\Prophecy\ObjectProphecy;
29 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
30 
34 class ‪IconRegistryTest extends UnitTestCase
35 {
36  use ProphecyTrait;
37 
41  protected string ‪$notRegisteredIconIdentifier = 'my-super-unregistered-identifier';
42 
44  protected ObjectProphecy ‪$cacheFrontendProphecy;
45 
46  public function ‪setUp(): void
47  {
48  parent::setUp();
49  $this->cacheFrontendProphecy = $this->prophesize(FrontendInterface::class);
50  $this->cacheFrontendProphecy->get(Argument::cetera())->willReturn(false);
51  $this->cacheFrontendProphecy->set(Argument::cetera())->willReturn(null);
52  }
53 
58  {
59  $result = (new ‪IconRegistry($this->cacheFrontendProphecy->reveal(), 'BackendIcons'))->getDefaultIconIdentifier();
60  self::assertEquals('default-not-found', $result);
61  }
62 
66  public function ‪isRegisteredReturnsTrueForRegisteredIcon(): void
67  {
68  $subject = new ‪IconRegistry($this->cacheFrontendProphecy->reveal(), 'BackendIcons');
69  $result = $subject->isRegistered($subject->getDefaultIconIdentifier());
70  self::assertTrue($result);
71  }
72 
77  {
78  $result = (new ‪IconRegistry($this->cacheFrontendProphecy->reveal(), 'BackendIcons'))->isRegistered($this->notRegisteredIconIdentifier);
79  self::assertFalse($result);
80  }
81 
85  public function ‪registerIconAddNewIconToRegistry(): void
86  {
87  $unregisteredIcon = 'foo-bar-unregistered';
88  $subject = new ‪IconRegistry($this->cacheFrontendProphecy->reveal(), 'BackendIcons');
89  self::assertFalse($subject->isRegistered($unregisteredIcon));
90  $subject->registerIcon($unregisteredIcon, FontawesomeIconProvider::class, [
91  'name' => 'pencil',
92  'additionalClasses' => 'fa-fw',
93  ]);
94  self::assertTrue($subject->isRegistered($unregisteredIcon));
95  }
96 
101  {
102  $this->expectException(\InvalidArgumentException::class);
103  $this->expectExceptionCode(1437425803);
104 
105  (new IconRegistry($this->cacheFrontendProphecy->reveal(), 'BackendIcons'))->registerIcon($this->notRegisteredIconIdentifier, GeneralUtility::class);
106  }
107 
112  {
113  $this->expectException(Exception::class);
114  $this->expectExceptionCode(1437425804);
115 
116  (new IconRegistry($this->cacheFrontendProphecy->reveal(), 'BackendIcons'))->getIconConfigurationByIdentifier($this->notRegisteredIconIdentifier);
117  }
118 
123  {
124  $result = (new IconRegistry($this->cacheFrontendProphecy->reveal(), 'BackendIcons'))->getIconConfigurationByIdentifier('default-not-found');
125  // result must contain at least provider and options array
126  self::assertArrayHasKey('provider', $result);
127  self::assertArrayHasKey('options', $result);
128  // the provider must implement the IconProviderInterface
129  self::assertContains(IconProviderInterface::class, class_implements($result['provider']));
130  }
131 
136  {
137  self::assertIsArray((new IconRegistry($this->cacheFrontendProphecy->reveal(), 'BackendIcons'))->getAllRegisteredIconIdentifiers());
138  }
139 
144  {
145  $result = (new IconRegistry($this->cacheFrontendProphecy->reveal(), 'BackendIcons'))->getAllRegisteredIconIdentifiers();
146  self::assertIsArray($result);
147  self::assertContains('default-not-found', $result);
148  }
149 
154  {
155  $result = (new IconRegistry($this->cacheFrontendProphecy->reveal(), 'BackendIcons'))->getIconIdentifierForFileExtension('');
156  self::assertEquals('mimetypes-other-other', $result);
157  }
158 
163  {
164  $result = (new IconRegistry($this->cacheFrontendProphecy->reveal(), 'BackendIcons'))->getIconIdentifierForFileExtension('xyz');
165  self::assertEquals('mimetypes-other-other', $result);
166  }
167 
172  {
173  $result = (new IconRegistry($this->cacheFrontendProphecy->reveal(), 'BackendIcons'))->getIconIdentifierForFileExtension('jpg');
174  self::assertEquals('mimetypes-media-image', $result);
175  }
176 
180  public function ‪registerFileExtensionRegisterAnIcon(): void
181  {
182  $subject = new IconRegistry($this->cacheFrontendProphecy->reveal(), 'BackendIcons');
183  $subject->registerFileExtension('abc', 'xyz');
184  $result = $subject->getIconIdentifierForFileExtension('abc');
185  self::assertEquals('xyz', $result);
186  }
187 
192  {
193  $subject = new IconRegistry($this->cacheFrontendProphecy->reveal(), 'BackendIcons');
194  $subject->registerFileExtension('jpg', 'xyz');
195  $result = $subject->getIconIdentifierForFileExtension('jpg');
196  self::assertEquals('xyz', $result);
197  }
198 
202  public function ‪registerMimeTypeIconRegisterAnIcon(): void
203  {
204  $subject = new IconRegistry($this->cacheFrontendProphecy->reveal(), 'BackendIcons');
205  $subject->registerMimeTypeIcon('foo/bar', 'mimetype-foo-bar');
206  $result = $subject->getIconIdentifierForMimeType('foo/bar');
207  self::assertEquals('mimetype-foo-bar', $result);
208  }
209 
213  public function ‪registerMimeTypeIconOverwriteAnExistingIcon(): void
214  {
215  $subject = new IconRegistry($this->cacheFrontendProphecy->reveal(), 'BackendIcons');
216  $subject->registerMimeTypeIcon('video/*', 'mimetype-foo-bar');
217  $result = $subject->getIconIdentifierForMimeType('video/*');
218  self::assertEquals('mimetype-foo-bar', $result);
219  }
220 
225  {
226  $result = (new IconRegistry($this->cacheFrontendProphecy->reveal(), 'BackendIcons'))->getIconIdentifierForMimeType('bar/foo');
227  self::assertNull($result);
228  }
229 }
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\getIconIdentifierForFileExtensionReturnsDefaultIconIdentifierForEmptyFileExtension
‪getIconIdentifierForFileExtensionReturnsDefaultIconIdentifierForEmptyFileExtension()
Definition: IconRegistryTest.php:152
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\getAllRegisteredIconIdentifiersReturnsArrayWithAllRegisteredIconIdentifiers
‪getAllRegisteredIconIdentifiersReturnsArrayWithAllRegisteredIconIdentifiers()
Definition: IconRegistryTest.php:142
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\setUp
‪setUp()
Definition: IconRegistryTest.php:45
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\isRegisteredReturnsFalseForNotRegisteredIcon
‪isRegisteredReturnsFalseForNotRegisteredIcon()
Definition: IconRegistryTest.php:75
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\registerFileExtensionOverwriteAnExistingIcon
‪registerFileExtensionOverwriteAnExistingIcon()
Definition: IconRegistryTest.php:190
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\$cacheFrontendProphecy
‪ObjectProphecy $cacheFrontendProphecy
Definition: IconRegistryTest.php:43
‪TYPO3\CMS\Core\Exception
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest
Definition: IconRegistryTest.php:35
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\getIconIdentifierForFileExtensionReturnsDefaultIconIdentifierForUnknownFileExtension
‪getIconIdentifierForFileExtensionReturnsDefaultIconIdentifierForUnknownFileExtension()
Definition: IconRegistryTest.php:161
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\getIconIdentifierForMimeTypeWithUnknownMimeTypeReturnNull
‪getIconIdentifierForMimeTypeWithUnknownMimeTypeReturnNull()
Definition: IconRegistryTest.php:223
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\registerFileExtensionRegisterAnIcon
‪registerFileExtensionRegisterAnIcon()
Definition: IconRegistryTest.php:179
‪TYPO3\CMS\Core\Tests\Unit\Imaging
Definition: DimensionTest.php:18
‪TYPO3\CMS\Core\Imaging\IconProvider\FontawesomeIconProvider
Definition: FontawesomeIconProvider.php:27
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\$notRegisteredIconIdentifier
‪string $notRegisteredIconIdentifier
Definition: IconRegistryTest.php:40
‪TYPO3\CMS\Core\Imaging\IconProviderInterface
Definition: IconProviderInterface.php:22
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\getAllRegisteredIconIdentifiersReturnsAnArrayWithIconIdentifiers
‪getAllRegisteredIconIdentifiersReturnsAnArrayWithIconIdentifiers()
Definition: IconRegistryTest.php:134
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\getIconConfigurationByIdentifierReturnsCorrectConfiguration
‪getIconConfigurationByIdentifierReturnsCorrectConfiguration()
Definition: IconRegistryTest.php:121
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\getIconIdentifierForFileExtensionReturnsImageIconIdentifierForImageFileExtension
‪getIconIdentifierForFileExtensionReturnsImageIconIdentifierForImageFileExtension()
Definition: IconRegistryTest.php:170
‪TYPO3\CMS\Core\Imaging\IconRegistry
Definition: IconRegistry.php:32
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\getDefaultIconIdentifierReturnsTheCorrectDefaultIconIdentifierString
‪getDefaultIconIdentifierReturnsTheCorrectDefaultIconIdentifierString()
Definition: IconRegistryTest.php:56
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\registerIconAddNewIconToRegistry
‪registerIconAddNewIconToRegistry()
Definition: IconRegistryTest.php:84
‪TYPO3\CMS\Core\Cache\Frontend\FrontendInterface
Definition: FrontendInterface.php:22
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\registerMimeTypeIconRegisterAnIcon
‪registerMimeTypeIconRegisterAnIcon()
Definition: IconRegistryTest.php:201
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\isRegisteredReturnsTrueForRegisteredIcon
‪isRegisteredReturnsTrueForRegisteredIcon()
Definition: IconRegistryTest.php:65
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\registerIconThrowsInvalidArgumentExceptionWithInvalidIconProvider
‪registerIconThrowsInvalidArgumentExceptionWithInvalidIconProvider()
Definition: IconRegistryTest.php:99
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\getIconConfigurationByIdentifierThrowsExceptionWithUnregisteredIconIdentifier
‪getIconConfigurationByIdentifierThrowsExceptionWithUnregisteredIconIdentifier()
Definition: IconRegistryTest.php:110
‪TYPO3\CMS\Core\Tests\Unit\Imaging\IconRegistryTest\registerMimeTypeIconOverwriteAnExistingIcon
‪registerMimeTypeIconOverwriteAnExistingIcon()
Definition: IconRegistryTest.php:212