‪TYPO3CMS  11.5
FileReferenceTest.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 PHPUnit\Framework\MockObject\MockObject;
24 use TYPO3\TestingFramework\Core\AccessibleObjectInterface;
25 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
26 
30 class ‪FileReferenceTest extends UnitTestCase
31 {
37  protected function ‪prepareFixture(array $fileReferenceProperties, array $originalFileProperties)
38  {
39  $fixture = $this->getAccessibleMock(FileReference::class, ['dummy'], [], '', false);
40  $originalFileMock = $this->getAccessibleMock(File::class, [], [], '', false);
41  $originalFileMock
42  ->method('getProperties')
43  ->willReturn(
44  $originalFileProperties
45  );
46  $fixture->_set('originalFile', $originalFileMock);
47  $fixture->_set('propertiesOfFileReference', $fileReferenceProperties);
48 
49  return $fixture;
50  }
51 
55  public function ‪propertiesDataProvider(): array
56  {
57  return [
58  'File properties correctly override file reference properties' => [
59  [
60  'title' => null,
61  'description' => 'fileReferenceDescription',
62  'alternative' => '',
63  ],
64  [
65  'title' => 'fileTitle',
66  'description' => 'fileDescription',
67  'alternative' => 'fileAlternative',
68  'file_only_property' => 'fileOnlyPropertyValue',
69  ],
70  [
71  'title' => 'fileTitle',
72  'description' => 'fileReferenceDescription',
73  'alternative' => '',
74  'file_only_property' => 'fileOnlyPropertyValue',
75  ],
76  ],
77  ];
78  }
79 
87  public function ‪getPropertiesReturnsMergedPropertiesAndRespectsNullValues(array $fileReferenceProperties, array $originalFileProperties, array $expectedMergedProperties): void
88  {
89  $fixture = $this->‪prepareFixture($fileReferenceProperties, $originalFileProperties);
90  $actual = $fixture->getProperties();
91  self::assertSame($expectedMergedProperties, $actual);
92  }
93 
101  public function ‪hasPropertyReturnsTrueForAllMergedPropertyKeys(array $fileReferenceProperties, array $originalFileProperties, array $expectedMergedProperties): void
102  {
103  $fixture = $this->‪prepareFixture($fileReferenceProperties, $originalFileProperties);
104  foreach ($expectedMergedProperties as $key => $_) {
105  self::assertTrue($fixture->hasProperty($key));
106  }
107  }
108 
116  public function ‪getPropertyReturnsAllMergedPropertyKeys(array $fileReferenceProperties, array $originalFileProperties, array $expectedMergedProperties): void
117  {
118  $fixture = $this->‪prepareFixture($fileReferenceProperties, $originalFileProperties);
119  foreach ($expectedMergedProperties as $key => $expectedValue) {
120  self::assertSame($expectedValue, $fixture->getProperty($key));
121  }
122  }
123 
131  public function ‪getPropertyThrowsExceptionForNotAvailableProperty(array $fileReferenceProperties, array $originalFileProperties): void
132  {
133  $this->expectException(\InvalidArgumentException::class);
134  $this->expectExceptionCode(1314226805);
135 
136  $fixture = $this->‪prepareFixture($fileReferenceProperties, $originalFileProperties);
137  $fixture->getProperty(‪StringUtility::getUniqueId('nothingHere'));
138  }
139 
148  array $fileReferenceProperties,
149  array $originalFileProperties
150  ): void {
151  $fixture = $this->‪prepareFixture($fileReferenceProperties, $originalFileProperties);
152  self::assertSame($originalFileProperties['file_only_property'], $fixture->getProperty('file_only_property'));
153  }
154 
164  array $fileReferenceProperties,
165  array $originalFileProperties
166  ): void {
167  $this->expectException(\InvalidArgumentException::class);
168  $this->expectExceptionCode(1360684914);
169 
170  $fixture = $this->‪prepareFixture($fileReferenceProperties, $originalFileProperties);
171  $fixture->getReferenceProperty('file_only_property');
172  }
173 
178  {
179  $fixture = $this->‪prepareFixture(['title' => null], []);
180  self::assertSame('', $fixture->getTitle());
181  }
182 
187  {
188  $fixture = $this->‪prepareFixture(['alternative' => null], []);
189  self::assertSame('', $fixture->getAlternative());
190  }
191 
196  {
197  $fixture = $this->‪prepareFixture(['description' => null], []);
198  self::assertSame('', $fixture->getDescription());
199  }
200 }
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\getPropertyDoesNotThrowExceptionForPropertyOnlyAvailableInOriginalFile
‪getPropertyDoesNotThrowExceptionForPropertyOnlyAvailableInOriginalFile(array $fileReferenceProperties, array $originalFileProperties)
Definition: FileReferenceTest.php:147
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\getReferencePropertyThrowsExceptionForPropertyOnlyAvailableInOriginalFile
‪getReferencePropertyThrowsExceptionForPropertyOnlyAvailableInOriginalFile(array $fileReferenceProperties, array $originalFileProperties)
Definition: FileReferenceTest.php:163
‪TYPO3\CMS\Core\Tests\Unit\Resource
Definition: AbstractFileTest.php:18
‪TYPO3\CMS\Core\Resource\FileReference
Definition: FileReference.php:33
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\getAlternativeReturnsEmptyStringWhenPropertyValueIsNull
‪getAlternativeReturnsEmptyStringWhenPropertyValueIsNull()
Definition: FileReferenceTest.php:186
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\getTitleReturnsEmptyStringWhenPropertyValueIsNull
‪getTitleReturnsEmptyStringWhenPropertyValueIsNull()
Definition: FileReferenceTest.php:177
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest
Definition: FileReferenceTest.php:31
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\prepareFixture
‪FileReference MockObject AccessibleObjectInterface prepareFixture(array $fileReferenceProperties, array $originalFileProperties)
Definition: FileReferenceTest.php:37
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\getPropertyReturnsAllMergedPropertyKeys
‪getPropertyReturnsAllMergedPropertyKeys(array $fileReferenceProperties, array $originalFileProperties, array $expectedMergedProperties)
Definition: FileReferenceTest.php:116
‪TYPO3\CMS\Core\Resource\File
Definition: File.php:24
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\getDescriptionReturnsEmptyStringWhenPropertyValueIsNull
‪getDescriptionReturnsEmptyStringWhenPropertyValueIsNull()
Definition: FileReferenceTest.php:195
‪TYPO3\CMS\Core\Utility\StringUtility\getUniqueId
‪static string getUniqueId($prefix='')
Definition: StringUtility.php:128
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\getPropertiesReturnsMergedPropertiesAndRespectsNullValues
‪getPropertiesReturnsMergedPropertiesAndRespectsNullValues(array $fileReferenceProperties, array $originalFileProperties, array $expectedMergedProperties)
Definition: FileReferenceTest.php:87
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\hasPropertyReturnsTrueForAllMergedPropertyKeys
‪hasPropertyReturnsTrueForAllMergedPropertyKeys(array $fileReferenceProperties, array $originalFileProperties, array $expectedMergedProperties)
Definition: FileReferenceTest.php:101
‪TYPO3\CMS\Core\Utility\StringUtility
Definition: StringUtility.php:22
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\propertiesDataProvider
‪array propertiesDataProvider()
Definition: FileReferenceTest.php:55
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\getPropertyThrowsExceptionForNotAvailableProperty
‪getPropertyThrowsExceptionForNotAvailableProperty(array $fileReferenceProperties, array $originalFileProperties)
Definition: FileReferenceTest.php:131