[BUGFIX] Better positionName extraction in executePositionedStringInsertion
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Tests / Unit / Resource / AbstractFileTest.php
1 <?php
2 namespace TYPO3\CMS\Core\Tests\Unit\Resource;
3
4 /*
5 * This file is part of the TYPO3 CMS project.
6 *
7 * It is free software; you can redistribute it and/or modify it under
8 * the terms of the GNU General Public License, either version 2
9 * of the License, or any later version.
10 *
11 * For the full copyright and license information, please read the
12 * LICENSE.txt file that was distributed with this source code.
13 *
14 * The TYPO3 project - inspiring people to share!
15 */
16
17 use TYPO3\CMS\Core\Resource\AbstractFile;
18 use TYPO3\CMS\Core\Resource\File;
19 use TYPO3\CMS\Core\Resource\ResourceStorage;
20
21 /**
22 * Testcase for the abstract file class of the TYPO3 FAL
23 */
24 class AbstractFileTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
25 {
26 /**
27 * @test
28 */
29 public function getParentFolderGetsParentFolderFromStorage()
30 {
31 $parentIdentifier = '/parent/';
32 $currentIdentifier = '/parent/current/';
33
34 /** @var ResourceStorage|\PHPUnit_Framework_MockObject_MockObject $mockedStorageForParent */
35 $mockedStorageForParent = $this->getMock(ResourceStorage::class, array(), array(), '', false);
36
37 /** @var AbstractFile $parentFolderFixture */
38 $parentFolderFixture = $this->getMockForAbstractClass(AbstractFile::class);
39 $parentFolderFixture->setIdentifier($parentIdentifier)->setStorage($mockedStorageForParent);
40
41 /** @var ResourceStorage|\PHPUnit_Framework_MockObject_MockObject $mockedStorage */
42 $mockedStorage = $this->getMock(ResourceStorage::class, array('getFolderIdentifierFromFileIdentifier', 'getFolder'), array(), '', false);
43 $mockedStorage->expects($this->once())->method('getFolderIdentifierFromFileIdentifier')->with($currentIdentifier)->will($this->returnValue($parentIdentifier));
44 $mockedStorage->expects($this->once())->method('getFolder')->with($parentIdentifier)->will($this->returnValue($parentFolderFixture));
45
46 /** @var AbstractFile $currentFolderFixture */
47 $currentFolderFixture = $this->getMockForAbstractClass(AbstractFile::class);
48 $currentFolderFixture->setIdentifier($currentIdentifier)->setStorage($mockedStorage);
49
50 $this->assertSame($parentFolderFixture, $currentFolderFixture->getParentFolder());
51 }
52
53 /**
54 * This test accounts for an inconsistency in the Storage–Driver interface of FAL: The driver returns the MIME
55 * type in a field "mimetype", while the file object and the database table use mime_type.
56 * The test is placed in the test case for AbstractFile because the broken functionality resides there, though
57 * it is only triggered when constructing a File instance with an index record.
58 *
59 * @test
60 */
61 public function storageIsNotAskedForMimeTypeForPersistedRecord()
62 {
63 /** @var ResourceStorage|\PHPUnit_Framework_MockObject_MockObject $mockedStorage */
64 $mockedStorage = $this->getMockBuilder(ResourceStorage::class)->disableOriginalConstructor()->getMock();
65 $mockedStorage->expects($this->never())->method('getFileInfoByIdentifier')->with('/foo', 'mimetype');
66 $subject = new File(array('identifier' => '/foo', 'mime_type' => 'my/mime-type'), $mockedStorage);
67
68 $this->assertEquals('my/mime-type', $subject->getMimeType());
69 }
70 }