‪TYPO3CMS  ‪main
FolderTest.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 final class ‪FolderTest extends UnitTestCase
28 {
29  protected bool ‪$resetSingletonInstances = true;
30 
31  protected function ‪createFolderFixture($path, $name, $mockedStorage = null): ‪Folder
32  {
33  if ($mockedStorage === null) {
34  $mockedStorage = $this->createMock(ResourceStorage::class);
35  }
36  return new ‪Folder($mockedStorage, $path, $name);
37  }
38 
43  {
44  $path = ‪StringUtility::getUniqueId('path_');
45  $name = ‪StringUtility::getUniqueId('name_');
46  $mockedStorage = $this->createMock(ResourceStorage::class);
47  $fixture = $this->‪createFolderFixture($path, $name, $mockedStorage);
48  self::assertSame($mockedStorage, $fixture->getStorage());
49  self::assertStringStartsWith($path, $fixture->getIdentifier());
50  self::assertSame($name, $fixture->getName());
51  }
52 
56  public function ‪propertiesCanBeUpdated(): void
57  {
58  $fixture = $this->‪createFolderFixture('/somePath', 'someName');
59  $fixture->updateProperties(['identifier' => '/someOtherPath', 'name' => 'someNewName']);
60  self::assertSame('someNewName', $fixture->getName());
61  self::assertSame('/someOtherPath', $fixture->getIdentifier());
62  }
63 
68  {
69  $fixture = $this->‪createFolderFixture('/somePath/someName/', 'someName');
70  $fixture->updateProperties(['identifier' => '/someOtherPath']);
71  self::assertSame('someName', $fixture->getName());
72  }
73 
78  {
79  $mockedStorage = $this->createMock(ResourceStorage::class);
80  $mockedStorage->expects(self::once())->method('getFilesInFolder')->willReturn(
81  [
82  'somefile.png' => [
83  'name' => 'somefile.png',
84  ],
85  'somefile.jpg' => [
86  'name' => 'somefile.jpg',
87  ],
88  ]
89  );
90  $fixture = $this->‪createFolderFixture('/somePath', 'someName', $mockedStorage);
91 
92  $fileList = $fixture->getFiles();
93 
94  self::assertSame(['somefile.png', 'somefile.jpg'], array_keys($fileList));
95  }
96 
101  {
102  $mockedStorage = $this->createMock(ResourceStorage::class);
103  $mockedStorage
104  ->expects(self::once())
105  ->method('getFilesInFolder')
106  ->with(self::anything(), self::anything(), self::anything(), self::anything(), false)
107  ->willReturn([]);
108 
109  $fixture = $this->‪createFolderFixture('/somePath', 'someName', $mockedStorage);
110  $fixture->getFiles();
111  }
112 
117  {
118  $mockedStorage = $this->createMock(ResourceStorage::class);
119  $mockedStorage
120  ->expects(self::once())
121  ->method('getFilesInFolder')
122  ->with(self::anything(), self::anything(), self::anything(), self::anything(), true)
123  ->willReturn([]);
124 
125  $fixture = $this->‪createFolderFixture('/somePath', 'someName', $mockedStorage);
126  $fixture->getFiles(0, 0, ‪Folder::FILTER_MODE_USE_OWN_AND_STORAGE_FILTERS, true);
127  }
128 
133  {
134  $mockedStorage = $this->createMock(ResourceStorage::class);
135  $mockedStorage->expects(self::once())->method('hasFolderInFolder')->with(self::equalTo('someSubfolder'))->willReturn(true);
136 
137  $mockedFactory = $this->createMock(ResourceFactory::class);
138  $folderFixture = $this->‪createFolderFixture(
139  '/somePath/someFolder/',
140  'someFolder',
141  $mockedStorage
142  );
143  $subfolderFixture = $this->‪createFolderFixture(
144  '/somePath/someSubfolder/',
145  'someSubfolder',
146  $mockedStorage
147  );
148  $mockedStorage->expects(self::once())->method('getFolderInFolder')->willReturn($subfolderFixture);
149  GeneralUtility::setSingletonInstance(
150  ResourceFactory::class,
151  $mockedFactory
152  );
153  self::assertEquals($subfolderFixture, $folderFixture->getSubfolder('someSubfolder'));
154  }
155 
160  {
161  $parentIdentifier = '/parent/';
162  $currentIdentifier = '/parent/current/';
163 
164  $parentFolderFixture = $this->‪createFolderFixture($parentIdentifier, 'parent');
165  $mockedStorage = $this->getMockBuilder(ResourceStorage::class)
166  ->onlyMethods(['getFolderIdentifierFromFileIdentifier', 'getFolder'])
167  ->disableOriginalConstructor()
168  ->getMock();
169  $mockedStorage->expects(self::once())->method('getFolderIdentifierFromFileIdentifier')->with($currentIdentifier)->willReturn($parentIdentifier);
170  $mockedStorage->expects(self::once())->method('getFolder')->with($parentIdentifier)->willReturn($parentFolderFixture);
171 
172  $currentFolderFixture = $this->‪createFolderFixture($currentIdentifier, 'current', $mockedStorage);
173 
174  self::assertSame($parentFolderFixture, $currentFolderFixture->getParentFolder());
175  }
176 }
‪TYPO3\CMS\Core\Tests\Unit\Resource\FolderTest\constructorArgumentsAreAvailableAtRuntime
‪constructorArgumentsAreAvailableAtRuntime()
Definition: FolderTest.php:42
‪TYPO3\CMS\Core\Tests\Unit\Resource\FolderTest\getSubfolderCallsFactoryWithCorrectArguments
‪getSubfolderCallsFactoryWithCorrectArguments()
Definition: FolderTest.php:132
‪TYPO3\CMS\Core\Tests\Unit\Resource\FolderTest\propertiesAreNotUpdatedIfNotSetInInput
‪propertiesAreNotUpdatedIfNotSetInInput()
Definition: FolderTest.php:67
‪TYPO3\CMS\Core\Tests\Unit\Resource\FolderTest\propertiesCanBeUpdated
‪propertiesCanBeUpdated()
Definition: FolderTest.php:56
‪TYPO3\CMS\Core\Tests\Unit\Resource
Definition: AbstractFileTest.php:18
‪TYPO3\CMS\Core\Resource\Folder\FILTER_MODE_USE_OWN_AND_STORAGE_FILTERS
‪const FILTER_MODE_USE_OWN_AND_STORAGE_FILTERS
Definition: Folder.php:69
‪TYPO3\CMS\Core\Tests\Unit\Resource\FolderTest\getParentFolderGetsParentFolderFromStorage
‪getParentFolderGetsParentFolderFromStorage()
Definition: FolderTest.php:159
‪TYPO3\CMS\Core\Tests\Unit\Resource\FolderTest\getFilesReturnsArrayWithFilenamesAsKeys
‪getFilesReturnsArrayWithFilenamesAsKeys()
Definition: FolderTest.php:77
‪TYPO3\CMS\Core\Tests\Unit\Resource\FolderTest\getFilesHandsOverRecursiveFALSEifNotExplicitlySet
‪getFilesHandsOverRecursiveFALSEifNotExplicitlySet()
Definition: FolderTest.php:100
‪TYPO3\CMS\Core\Tests\Unit\Resource\FolderTest\createFolderFixture
‪createFolderFixture($path, $name, $mockedStorage=null)
Definition: FolderTest.php:31
‪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:127
‪TYPO3\CMS\Core\Tests\Unit\Resource\FolderTest
Definition: FolderTest.php:28
‪TYPO3\CMS\Core\Tests\Unit\Resource\FolderTest\getFilesHandsOverRecursiveTRUEifSet
‪getFilesHandsOverRecursiveTRUEifSet()
Definition: FolderTest.php:116
‪TYPO3\CMS\Core\Tests\Unit\Resource\FolderTest\$resetSingletonInstances
‪bool $resetSingletonInstances
Definition: FolderTest.php:29
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:51
‪TYPO3\CMS\Core\Utility\StringUtility
Definition: StringUtility.php:24
‪TYPO3\CMS\Core\Utility\StringUtility\getUniqueId
‪static getUniqueId(string $prefix='')
Definition: StringUtility.php:57