Skip to content

Commit

Permalink
Merge branch 'master' of github.com:heimrichhannot/contao-utils-bundle
Browse files Browse the repository at this point in the history
  • Loading branch information
Dennis Patzer committed Feb 19, 2018
2 parents 79aaa39 + cf1b21c commit 6619c09
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 24 deletions.
4 changes: 2 additions & 2 deletions src/File/FileUtil.php
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ public function getFileList($dir, $baseUrl, $protectedBaseUrl = null)
$fileArray['filename'] = htmlentities($file);

if ($protectedBaseUrl) {
$fileArray['absUrl'] = $protectedBaseUrl.(empty($_GET) ? '?' : '&').'file='.urlencode($fileArray['absUrl']);
$fileArray['absUrl'] = $protectedBaseUrl.(empty($_GET) ? '?' : '&').'file='.str_replace('//', '', $baseUrl.'/'.$file);
} else {
$fileArray['absUrl'] = str_replace('\\', '/', str_replace('//', '', $baseUrl.'/'.$file));
}
Expand Down Expand Up @@ -165,7 +165,7 @@ public function getFileExtension($path)
*/
public function getPathFromUuid($uuid, $checkIfExists = true)
{
if (null !== ($file = System::getContainer()->get('contao.framework')->getAdapter(FilesModel::class)->findByUuid($uuid))) {
if (null !== ($file = $this->framework->getAdapter(FilesModel::class)->findByUuid($uuid))) {
if (!$checkIfExists) {
return $file->path;
}
Expand Down
8 changes: 4 additions & 4 deletions tests/Dca/DcaUtilTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,10 @@ public function testModifyAuthorPaletteOnLoad()
$result = $dcaUtil->modifyAuthorPaletteOnLoad($this->getDataContainerMock());
$this->assertFalse($result);

$dcaUtil = new DcaUtil($this->mockContaoFramework());
$result = $dcaUtil->modifyAuthorPaletteOnLoad($this->getDataContainerMock(false));
$this->assertFalse($result);

$containerUtils = $this->mockAdapter(['isFrontend', 'isBackend']);
$containerUtils->method('isFrontend')->willReturn(true);
$containerUtils->method('isBackend')->willReturn(false);
Expand All @@ -418,10 +422,6 @@ public function testModifyAuthorPaletteOnLoad()
$dcaUtil = new DcaUtil($this->mockContaoFramework());
$result = $dcaUtil->modifyAuthorPaletteOnLoad($this->getDataContainerMock());
$this->assertFalse($result);

$dcaUtil = new DcaUtil($this->mockContaoFramework());
$result = $dcaUtil->modifyAuthorPaletteOnLoad($this->getDataContainerMock(false));
$this->assertFalse($result);
}

public function getDatabaseMock()
Expand Down
81 changes: 63 additions & 18 deletions tests/File/FileUtilTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

namespace HeimrichHannot\UtilsBundle\Tests\File;

use Contao\DataContainer;
use Contao\File;
use Contao\FilesModel;
use Contao\Folder;
Expand Down Expand Up @@ -79,6 +80,9 @@ public function testGetFileList()
$fileList = $fileUtil->getFileList($this->getTempDir().'/fileList', __DIR__);

$this->assertCount(0, $fileList);

$fileList = $fileUtil->getFileList($this->getTempDir().'/files', __DIR__, 'protectBaseUrl');
$this->assertSame('protectBaseUrl?file=/home/kwagner/Kunden/github/contao-utils-bundle/tests/File/testfile1', $fileList[2]['absUrl']);
}

public function testGetUniqueFileNameWithinTarget()
Expand All @@ -99,6 +103,10 @@ public function testGetUniqueFileNameWithinTarget()
$fileName = $fileUtil->getUniqueFileNameWithinTarget($this->getTempDir().'/files/test');
$this->assertSame(ltrim($this->getTempDir().'/files/test_1.', '/'), $fileName);

file_put_contents($this->getTempDir().'/files/test_10', 'test');
$fileName = $fileUtil->getUniqueFileNameWithinTarget($this->getTempDir().'/files/test_10', null, 10);
$this->assertNotSame(ltrim($this->getTempDir().'/files/test', '/'), $fileName);

$fileName = $fileUtil->getUniqueFileNameWithinTarget($this->getTempDir().'/files/test', null, 100);
$this->assertNotSame(ltrim($this->getTempDir().'/files/test', '/'), $fileName);
}
Expand Down Expand Up @@ -190,8 +198,10 @@ public function testSanitizeFileName()

public function testGetFilesFromUuid()
{
$framework = $this->mockContaoFramework();
$fileUtil = new FileUtil($framework);
$filesModel = $this->mockClassWithProperties(FilesModel::class, ['path' => $this->getTempDir().'/files/testFile']);
$filesAdapter = $this->mockAdapter(['findByUuid']);
$filesAdapter->method('findByUuid')->willReturn($filesModel);
$fileUtil = new FileUtil($this->mockContaoFramework([FilesModel::class => $filesAdapter]));

$file = $fileUtil->getFileFromUuid('uuid');
$this->assertNull($file);
Expand All @@ -206,43 +216,49 @@ public function testGetFilesFromUuid()

$file = $fileUtil->getFileFromUuid('uuid');
$this->assertInstanceOf(File::class, $file);

$filesAdapter = $this->mockAdapter(['findByUuid']);
$filesAdapter->method('findByUuid')->willReturn(null);
$fileUtil = new FileUtil($this->mockContaoFramework([FilesModel::class => $filesAdapter]));
$file = $fileUtil->getFileFromUuid('uuid');
$this->assertNull($file);
}

public function testGetPathFromUuid()
{
$framework = $this->mockContaoFramework();
$fileUtil = new FileUtil($framework);
$filesModel = $this->mockClassWithProperties(FilesModel::class, ['path' => $this->getTempDir().'/files/testFile']);
$filesAdapter = $this->mockAdapter(['findByUuid']);
$filesAdapter->method('findByUuid')->willReturn($filesModel);
$fileUtil = new FileUtil($this->mockContaoFramework([FilesModel::class => $filesAdapter]));

$path = $fileUtil->getPathFromUuid($this->getTempDir().'/files', true);
$this->assertSame($this->getTempDir().'/files', $path);
$path = $fileUtil->getPathFromUuid($this->getTempDir().'/files', false);
$this->assertSame($this->getTempDir().'/files/testFile', $path);

$path = $fileUtil->getPathFromUuid($this->getTempDir().'/files');
$this->assertSame($this->getTempDir().'/files', $path);
$this->assertSame($this->getTempDir().'/files/testFile', $path);

$container = System::getContainer();
$filesAdapter = $this->mockAdapter(['findByUuid']);
$filesAdapter->method('findByUuid')->willReturn(null);
$container->set('contao.framework', $this->mockContaoFramework([FilesModel::class => $filesAdapter]));
System::setContainer($container);
$framework = $this->mockContaoFramework([FilesModel::class => $filesAdapter]);
$fileUtil = new FileUtil($framework);

$path = $fileUtil->getPathFromUuid($this->getTempDir().'/files');
$this->assertNull($path);
}

public function testGetFolderFromUuid()
{
$framework = $this->mockContaoFramework();
$fileUtil = new FileUtil($framework);
$filesModel = $this->mockClassWithProperties(FilesModel::class, ['path' => $this->getTempDir().'/files']);
$filesAdapter = $this->mockAdapter(['findByUuid']);
$filesAdapter->method('findByUuid')->willReturn($filesModel);
$fileUtil = new FileUtil($this->mockContaoFramework([FilesModel::class => $filesAdapter]));

$path = $fileUtil->getFolderFromUuid('uuid');
$this->assertInstanceOf(Folder::class, $path);

$container = System::getContainer();
$filesAdapter = $this->mockAdapter(['findByUuid']);
$filesAdapter->method('findByUuid')->willReturn(null);
$container->set('contao.framework', $this->mockContaoFramework([FilesModel::class => $filesAdapter]));
System::setContainer($container);

$fileUtil = new FileUtil($this->mockContaoFramework([FilesModel::class => $filesAdapter]));
$path = $fileUtil->getFolderFromUuid('uuid');
$this->assertFalse($path);
}
Expand All @@ -263,8 +279,10 @@ public function testGetFileLineCount()

public function testGetFolderFromDca()
{
$framework = $this->mockContaoFramework();
$fileUtil = new FileUtil($framework);
$filesModel = $this->mockClassWithProperties(FilesModel::class, ['path' => $this->getTempDir().'/files']);
$filesAdapter = $this->mockAdapter(['findByUuid']);
$filesAdapter->method('findByUuid')->willReturn($filesModel);
$fileUtil = new FileUtil($this->mockContaoFramework([FilesModel::class => $filesAdapter]));
$folder = $fileUtil->getFolderFromDca($this->getTempDir().'/files');
$this->assertSame($this->getTempDir().'/files', $folder);

Expand All @@ -275,10 +293,37 @@ public function testGetFolderFromDca()
$folder = $fileUtil->getFolderFromDca($file);
$this->assertSame($this->getTempDir().'/files/dcaFile', $folder);

$file = $this->mockClassWithProperties(FilesModel::class, ['path' => $this->getTempDir().'/files/dcaFile']);
$folder = $fileUtil->getFolderFromDca($file);
$this->assertSame($this->getTempDir().'/files/dcaFile', $folder);

$folder = $fileUtil->getFolderFromDca(function ($dca) { return $this->getTempDir().'/files/dcaFile'; }, $this->getDataContainerMock());
$this->assertSame($this->getTempDir().'/files/dcaFile', $folder);

$folder = $fileUtil->getFolderFromDca([self::class, 'getFolder'], $this->getDataContainerMock());
$this->assertSame($this->getTempDir().'/files', $folder);

try {
$fileUtil->getFolderFromDca('dlfjn../ds');
} catch (\Exception $exception) {
$this->assertSame('Invalid target path dlfjn../ds', $exception->getMessage());
}
}

/**
* @return DataContainer|\PHPUnit_Framework_MockObject_MockObject
*/
public function getDataContainerMock($properties = true)
{
if ($properties) {
return $this->mockClassWithProperties(DataContainer::class, ['id' => 1, 'table' => 'testTable']);
}

return $this->createMock(DataContainer::class);
}

public function getFolder($dca)
{
return $this->getTempDir().'/files';
}
}

0 comments on commit 6619c09

Please sign in to comment.