‪TYPO3CMS  ‪main
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 
27 final class ‪FileReferenceTest extends UnitTestCase
28 {
29  protected function ‪prepareFixture(array $fileReferenceProperties, array $originalFileProperties): ‪FileReference&MockObject&AccessibleObjectInterface
30  {
31  $fixture = $this->getAccessibleMock(FileReference::class, null, [], '', false);
32  $originalFileMock = $this->createMock(File::class);
33  $originalFileMock->method('getProperties')
34  ->willReturn(
35  $originalFileProperties
36  );
37  $fixture->_set('originalFile', $originalFileMock);
38  $fixture->_set('propertiesOfFileReference', $fileReferenceProperties);
39 
40  return $fixture;
41  }
42 
43  public static function ‪propertiesDataProvider(): array
44  {
45  return [
46  'File properties correctly override file reference properties' => [
47  [
48  'title' => null,
49  'description' => 'fileReferenceDescription',
50  'alternative' => '',
51  ],
52  [
53  'title' => 'fileTitle',
54  'description' => 'fileDescription',
55  'alternative' => 'fileAlternative',
56  'file_only_property' => 'fileOnlyPropertyValue',
57  ],
58  [
59  'title' => 'fileTitle',
60  'description' => 'fileReferenceDescription',
61  'alternative' => '',
62  'file_only_property' => 'fileOnlyPropertyValue',
63  ],
64  ],
65  ];
66  }
67 
72  public function ‪getPropertiesReturnsMergedPropertiesAndRespectsNullValues(array $fileReferenceProperties, array $originalFileProperties, array $expectedMergedProperties): void
73  {
74  $fixture = $this->‪prepareFixture($fileReferenceProperties, $originalFileProperties);
75  $actual = $fixture->getProperties();
76  self::assertSame($expectedMergedProperties, $actual);
77  }
78 
83  public function ‪hasPropertyReturnsTrueForAllMergedPropertyKeys(array $fileReferenceProperties, array $originalFileProperties, array $expectedMergedProperties): void
84  {
85  $fixture = $this->‪prepareFixture($fileReferenceProperties, $originalFileProperties);
86  foreach ($expectedMergedProperties as $key => $_) {
87  self::assertTrue($fixture->hasProperty($key));
88  }
89  }
90 
95  public function ‪getPropertyReturnsAllMergedPropertyKeys(array $fileReferenceProperties, array $originalFileProperties, array $expectedMergedProperties): void
96  {
97  $fixture = $this->‪prepareFixture($fileReferenceProperties, $originalFileProperties);
98  foreach ($expectedMergedProperties as $key => $expectedValue) {
99  self::assertSame($expectedValue, $fixture->getProperty($key));
100  }
101  }
102 
107  public function ‪getPropertyThrowsExceptionForNotAvailableProperty(array $fileReferenceProperties, array $originalFileProperties): void
108  {
109  $this->expectException(\InvalidArgumentException::class);
110  $this->expectExceptionCode(1314226805);
111 
112  $fixture = $this->‪prepareFixture($fileReferenceProperties, $originalFileProperties);
113  $fixture->getProperty(‪StringUtility::getUniqueId('nothingHere'));
114  }
115 
121  array $fileReferenceProperties,
122  array $originalFileProperties
123  ): void {
124  $fixture = $this->‪prepareFixture($fileReferenceProperties, $originalFileProperties);
125  self::assertSame($originalFileProperties['file_only_property'], $fixture->getProperty('file_only_property'));
126  }
127 
133  array $fileReferenceProperties,
134  array $originalFileProperties
135  ): void {
136  $this->expectException(\InvalidArgumentException::class);
137  $this->expectExceptionCode(1360684914);
138 
139  $fixture = $this->‪prepareFixture($fileReferenceProperties, $originalFileProperties);
140  $fixture->getReferenceProperty('file_only_property');
141  }
142 
147  {
148  $fixture = $this->‪prepareFixture(['title' => null], []);
149  self::assertSame('', $fixture->getTitle());
150  }
151 
156  {
157  $fixture = $this->‪prepareFixture(['alternative' => null], []);
158  self::assertSame('', $fixture->getAlternative());
159  }
160 
165  {
166  $fixture = $this->‪prepareFixture(['description' => null], []);
167  self::assertSame('', $fixture->getDescription());
168  }
169 }
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\getPropertyDoesNotThrowExceptionForPropertyOnlyAvailableInOriginalFile
‪getPropertyDoesNotThrowExceptionForPropertyOnlyAvailableInOriginalFile(array $fileReferenceProperties, array $originalFileProperties)
Definition: FileReferenceTest.php:120
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\getReferencePropertyThrowsExceptionForPropertyOnlyAvailableInOriginalFile
‪getReferencePropertyThrowsExceptionForPropertyOnlyAvailableInOriginalFile(array $fileReferenceProperties, array $originalFileProperties)
Definition: FileReferenceTest.php:132
‪TYPO3\CMS\Core\Tests\Unit\Resource
Definition: AbstractFileTest.php:18
‪TYPO3\CMS\Core\Resource\FileReference
Definition: FileReference.php:36
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\getAlternativeReturnsEmptyStringWhenPropertyValueIsNull
‪getAlternativeReturnsEmptyStringWhenPropertyValueIsNull()
Definition: FileReferenceTest.php:155
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\getTitleReturnsEmptyStringWhenPropertyValueIsNull
‪getTitleReturnsEmptyStringWhenPropertyValueIsNull()
Definition: FileReferenceTest.php:146
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest
Definition: FileReferenceTest.php:28
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\getPropertyReturnsAllMergedPropertyKeys
‪getPropertyReturnsAllMergedPropertyKeys(array $fileReferenceProperties, array $originalFileProperties, array $expectedMergedProperties)
Definition: FileReferenceTest.php:95
‪TYPO3\CMS\Core\Resource\File
Definition: File.php:26
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\getDescriptionReturnsEmptyStringWhenPropertyValueIsNull
‪getDescriptionReturnsEmptyStringWhenPropertyValueIsNull()
Definition: FileReferenceTest.php:164
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\propertiesDataProvider
‪static propertiesDataProvider()
Definition: FileReferenceTest.php:43
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\getPropertiesReturnsMergedPropertiesAndRespectsNullValues
‪getPropertiesReturnsMergedPropertiesAndRespectsNullValues(array $fileReferenceProperties, array $originalFileProperties, array $expectedMergedProperties)
Definition: FileReferenceTest.php:72
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\hasPropertyReturnsTrueForAllMergedPropertyKeys
‪hasPropertyReturnsTrueForAllMergedPropertyKeys(array $fileReferenceProperties, array $originalFileProperties, array $expectedMergedProperties)
Definition: FileReferenceTest.php:83
‪TYPO3\CMS\Core\Utility\StringUtility
Definition: StringUtility.php:24
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\getPropertyThrowsExceptionForNotAvailableProperty
‪getPropertyThrowsExceptionForNotAvailableProperty(array $fileReferenceProperties, array $originalFileProperties)
Definition: FileReferenceTest.php:107
‪TYPO3\CMS\Core\Tests\Unit\Resource\FileReferenceTest\prepareFixture
‪prepareFixture(array $fileReferenceProperties, array $originalFileProperties)
Definition: FileReferenceTest.php:29
‪TYPO3\CMS\Core\Utility\StringUtility\getUniqueId
‪static getUniqueId(string $prefix='')
Definition: StringUtility.php:57