‪TYPO3CMS  11.5
FolderLinkHandlerTest.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 
25 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
26 
27 class ‪FolderLinkHandlerTest extends UnitTestCase
28 {
29  protected function ‪setUp(): void
30  {
31  parent::setUp();
32  $this->resetSingletonInstances = true;
33  }
34 
43  {
44  return [
45  'folder without FAL - cool style' => [
46  [
47  'storage' => 0,
48  'identifier' => '/fileadmin/myimages/',
49  ],
50  [
51  'folder' => '0:/fileadmin/myimages/',
52  ],
53  't3://folder?storage=0&identifier=%2Ffileadmin%2Fmyimages%2F',
54  ],
55  'folder with combined identifier and file prefix (FAL) - cool style' => [
56  [
57  'storage' => 2,
58  'identifier' => '/myimages/',
59  ],
60  [
61  'folder' => '2:/myimages/',
62  ],
63  't3://folder?storage=2&identifier=%2Fmyimages%2F',
64  ],
65  ];
66  }
67 
78  public function ‪resolveFileReferencesToSplitParameters(array $input, array $expected): void
79  {
80  $storage = $this->getMockBuilder(ResourceStorage::class)
81  ->disableOriginalConstructor()
82  ->getMock();
83 
84  $factory = $this->getMockBuilder(ResourceFactory::class)
85  ->disableOriginalConstructor()
86  ->getMock();
87 
88  // fake methods to return proper objects
89  $folderObject = new ‪Folder($storage, $expected['folder'], $expected['folder']);
90  $factory->expects(self::once())->method('getFolderObjectFromCombinedIdentifier')->with($expected['folder'])
91  ->willReturn($folderObject);
92  $expected['folder'] = $folderObject;
93  GeneralUtility::setSingletonInstance(ResourceFactory::class, $factory);
94 
95  $subject = new ‪FolderLinkHandler();
96 
97  self::assertEquals($expected, $subject->resolveHandlerData($input));
98  }
99 
111  public function ‪splitParametersToUnifiedIdentifierForFiles(array $input, array $parameters, string $expected): void
112  {
113  $folderObject = $this->getMockBuilder(Folder::class)
114  ->onlyMethods(['getCombinedIdentifier', 'getStorage', 'getIdentifier'])
115  ->disableOriginalConstructor()
116  ->getMock();
117 
118  $folderObject->method('getCombinedIdentifier')->willReturn($parameters['folder']);
119  $folderData = explode(':', $parameters['folder']);
120  $storage = $this->getMockBuilder(ResourceStorage::class)
121  ->disableOriginalConstructor()
122  ->getMock(['getUid']);
123  $storage->method('getUid')->willReturn($folderData[0]);
124  $folderObject->method('getStorage')->willReturn($storage);
125  $folderObject->method('getIdentifier')->willReturn($folderData[1]);
126  $parameters['folder'] = $folderObject;
127 
128  $subject = new ‪FolderLinkHandler();
129  self::assertEquals($expected, $subject->asString($parameters));
130  }
131 }
‪TYPO3\CMS\Core\Resource\Folder
Definition: Folder.php:37
‪TYPO3\CMS\Core\Resource\ResourceFactory
Definition: ResourceFactory.php:41
‪TYPO3\CMS\Core\Resource\ResourceStorage
Definition: ResourceStorage.php:125
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50