‪TYPO3CMS  ‪main
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 
20 use PHPUnit\Framework\Attributes\DataProvider;
21 use PHPUnit\Framework\Attributes\Test;
27 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
28 
29 final class ‪FolderLinkHandlerTest extends UnitTestCase
30 {
31  protected bool ‪$resetSingletonInstances = true;
32 
38  public static function ‪resolveParametersForFilesDataProvider(): array
39  {
40  return [
41  'folder without FAL - cool style' => [
42  [
43  'storage' => 0,
44  'identifier' => '/fileadmin/myimages/',
45  ],
46  [
47  'folder' => '0:/fileadmin/myimages/',
48  ],
49  't3://folder?storage=0&identifier=%2Ffileadmin%2Fmyimages%2F',
50  ],
51  'folder with combined identifier and file prefix (FAL) - cool style' => [
52  [
53  'storage' => 2,
54  'identifier' => '/myimages/',
55  ],
56  [
57  'folder' => '2:/myimages/',
58  ],
59  't3://folder?storage=2&identifier=%2Fmyimages%2F',
60  ],
61  ];
62  }
63 
67  #[DataProvider('resolveParametersForFilesDataProvider')]
68  #[Test]
69  public function ‪resolveFileReferencesToSplitParameters(array $input, array $expected): void
70  {
71  $storage = $this->getMockBuilder(ResourceStorage::class)
72  ->disableOriginalConstructor()
73  ->getMock();
74 
75  $factory = $this->getMockBuilder(ResourceFactory::class)
76  ->disableOriginalConstructor()
77  ->getMock();
78 
79  // fake methods to return proper objects
80  $folderObject = new ‪Folder($storage, $expected['folder'], $expected['folder']);
81  $factory->expects(self::once())->method('getFolderObjectFromCombinedIdentifier')->with($expected['folder'])
82  ->willReturn($folderObject);
83  $expected['folder'] = $folderObject;
84  GeneralUtility::setSingletonInstance(ResourceFactory::class, $factory);
85 
86  $subject = new ‪FolderLinkHandler();
87 
88  self::assertEquals($expected, $subject->resolveHandlerData($input));
89  }
90 
94  #[DataProvider('resolveParametersForFilesDataProvider')]
95  #[Test]
96  public function ‪splitParametersToUnifiedIdentifierForFiles(array $input, array $parameters, string $expected): void
97  {
98  $folderObject = $this->getMockBuilder(Folder::class)
99  ->onlyMethods(['getCombinedIdentifier', 'getStorage', 'getIdentifier'])
100  ->disableOriginalConstructor()
101  ->getMock();
102 
103  $folderObject->method('getCombinedIdentifier')->willReturn($parameters['folder']);
104  $folderData = explode(':', $parameters['folder']);
105  $storage = $this->getMockBuilder(ResourceStorage::class)
106  ->disableOriginalConstructor()
107  ->getMock();
108  $storage->method('getUid')->willReturn($folderData[0]);
109  $folderObject->method('getStorage')->willReturn($storage);
110  $folderObject->method('getIdentifier')->willReturn($folderData[1]);
111  $parameters['folder'] = $folderObject;
112 
113  $subject = new ‪FolderLinkHandler();
114  self::assertEquals($expected, $subject->asString($parameters));
115  }
116 }
‪TYPO3\CMS\Core\Resource\Folder
Definition: Folder.php:38
‪TYPO3\CMS\Core\Resource\ResourceFactory
Definition: ResourceFactory.php:42
‪TYPO3\CMS\Core\Resource\ResourceStorage
Definition: ResourceStorage.php:129
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52