mein-sterntours/packages/iqcontent/laravel-filemanager/tests/LfmPathTest.php
2019-10-02 20:03:55 +02:00

201 lines
7.3 KiB
PHP

<?php
namespace Tests;
use Illuminate\Http\Request;
use Mockery as m;
use PHPUnit\Framework\TestCase;
use UniSharp\LaravelFilemanager\Lfm;
use UniSharp\LaravelFilemanager\LfmItem;
use UniSharp\LaravelFilemanager\LfmPath;
class LfmPathTest extends TestCase
{
public function tearDown()
{
m::close();
parent::tearDown();
}
public function testMagicGet()
{
$storage = m::mock(LfmStorage::class);
$helper = m::mock(Lfm::class);
$helper->shouldReceive('getStorage')->with('files/bar')->andReturn($storage);
$helper->shouldReceive('getCategoryName')->andReturn('files');
$helper->shouldReceive('input')->with('working_dir')->andReturn('/bar');
$helper->shouldReceive('isRunningOnWindows')->andReturn(false);
$helper->shouldReceive('ds')->andReturn('/');
$path = new LfmPath($helper);
$this->assertEquals($storage, $path->storage);
}
public function testMagicCall()
{
$storage = m::mock(LfmStorage::class);
$storage->shouldReceive('foo')->andReturn('bar');
$helper = m::mock(Lfm::class);
$helper->shouldReceive('getStorage')->with('files/bar')->andReturn($storage);
$helper->shouldReceive('getCategoryName')->andReturn('files');
$helper->shouldReceive('input')->with('working_dir')->andReturn('/bar');
$helper->shouldReceive('isRunningOnWindows')->andReturn(false);
$helper->shouldReceive('ds')->andReturn('/');
$path = new LfmPath($helper);
$this->assertEquals('bar', $path->foo());
}
public function testDirAndNormalizeWorkingDir()
{
$helper = m::mock(Lfm::class);
$helper->shouldReceive('input')->with('working_dir')->once()->andReturn('foo');
$helper->shouldReceive('isRunningOnWindows')->andReturn(false);
$path = new LfmPath($helper);
$this->assertEquals('foo', $path->normalizeWorkingDir());
$this->assertEquals('bar', $path->dir('bar')->normalizeWorkingDir());
}
public function testSetNameAndGetName()
{
$path = new LfmPath(m::mock(Lfm::class));
$path->setName('bar');
$this->assertEquals('bar', $path->getName());
}
public function testPath()
{
$helper = m::mock(Lfm::class);
$helper->shouldReceive('getRootFolder')->andReturn('/foo');
$helper->shouldReceive('basePath')->andReturn(realpath(__DIR__ . '/../'));
$helper->shouldReceive('input')->with('working_dir')->andReturnNull();
$helper->shouldReceive('getCategoryName')->andReturn('files');
$helper->shouldReceive('isRunningOnWindows')->andReturn(false);
$helper->shouldReceive('ds')->andReturn('/');
$storage = m::mock(LfmStorage::class);
$storage->shouldReceive('rootPath')->andReturn(realpath(__DIR__ . '/../') . '/storage/app');
$helper->shouldReceive('getStorage')->andReturn($storage);
$path = new LfmPath($helper);
$this->assertEquals('files/foo', $path->path());
$this->assertEquals('files/foo/bar', $path->setName('bar')->path('storage'));
}
public function testUrl()
{
$helper = m::mock(Lfm::class);
$helper->shouldReceive('getRootFolder')->andReturn('/foo');
$helper->shouldReceive('input')->with('working_dir')->andReturnNull();
$helper->shouldReceive('getCategoryName')->andReturn('files');
$helper->shouldReceive('isRunningOnWindows')->andReturn(false);
$helper->shouldReceive('ds')->andReturn('/');
$storage = m::mock(LfmStorage::class);
$storage->shouldReceive('url')->andReturn('/files/foo/foo');
$helper->shouldReceive('getStorage')->andReturn($storage);
$path = new LfmPath($helper);
$this->assertEquals('/files/foo/foo', $path->setName('foo')->url());
}
public function testFolders()
{
$storage = m::mock(LfmStorage::class);
$storage->shouldReceive('directories')->andReturn(['foo/bar']);
$helper = m::mock(Lfm::class);
$helper->shouldReceive('getCategoryName')->andReturn('files');
$helper->shouldReceive('input')->with('working_dir')->andReturn('/shares');
$helper->shouldReceive('input')->with('sort_type')->andReturn('alphabetic');
$helper->shouldReceive('getStorage')->andReturn($storage);
$helper->shouldReceive('getNameFromPath')->andReturn('bar');
$helper->shouldReceive('getThumbFolderName')->andReturn('thumbs');
$helper->shouldReceive('isRunningOnWindows')->andReturn(false);
$helper->shouldReceive('ds')->andReturn('/');
$path = new LfmPath($helper);
$this->assertInstanceOf(LfmItem::class, $path->folders()[0]);
}
public function testFiles()
{
$storage = m::mock(LfmStorage::class);
$storage->shouldReceive('files')->andReturn(['foo/bar']);
$helper = m::mock(Lfm::class);
$helper->shouldReceive('getCategoryName')->andReturn('files');
$helper->shouldReceive('input')->with('working_dir')->andReturn('/shares');
$helper->shouldReceive('input')->with('sort_type')->andReturn('alphabetic');
$helper->shouldReceive('getStorage')->andReturn($storage);
$helper->shouldReceive('getNameFromPath')->andReturn('bar');
$helper->shouldReceive('isRunningOnWindows')->andReturn(false);
$helper->shouldReceive('ds')->andReturn('/');
$path = new LfmPath($helper);
$this->assertInstanceOf(LfmItem::class, $path->files()[0]);
}
public function testPretty()
{
$helper = m::mock(Lfm::class);
$helper->shouldReceive('getNameFromPath')->andReturn('bar');
$helper->shouldReceive('isRunningOnWindows')->andReturn(false);
$path = new LfmPath($helper);
$this->assertInstanceOf(LfmItem::class, $path->pretty('foo'));
}
public function testCreateFolder()
{
$storage = m::mock(LfmStorage::class);
$storage->shouldReceive('rootPath')->andReturn(realpath(__DIR__ . '/../') . '/storage/app');
$storage->shouldReceive('exists')->andReturn(false);
$storage->shouldReceive('makeDirectory')->andReturn(true);
$helper = m::mock(Lfm::class);
$helper->shouldReceive('getStorage')->with('files/bar')->andReturn($storage);
$helper->shouldReceive('getCategoryName')->andReturn('files');
$helper->shouldReceive('input')->with('working_dir')->andReturn('/bar');
$helper->shouldReceive('isRunningOnWindows')->andReturn(false);
$helper->shouldReceive('ds')->andReturn('/');
$path = new LfmPath($helper);
$this->assertNull($path->createFolder('bar'));
}
public function testCreateFolderButFolderAlreadyExists()
{
$storage = m::mock(LfmStorage::class);
$storage->shouldReceive('exists')->andReturn(true);
$storage->shouldReceive('makeDirectory')->andReturn(true);
$helper = m::mock(Lfm::class);
$helper->shouldReceive('getStorage')->with('files/bar')->andReturn($storage);
$helper->shouldReceive('getCategoryName')->andReturn('files');
$helper->shouldReceive('input')->with('working_dir')->andReturn('/bar');
$helper->shouldReceive('isRunningOnWindows')->andReturn(false);
$helper->shouldReceive('ds')->andReturn('/');
$path = new LfmPath($helper);
$this->assertFalse($path->createFolder('foo'));
}
}