211 lines
7.8 KiB
PHP
211 lines
7.8 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('/');
|
|
$helper->shouldReceive('config')
|
|
->with('item_columns')
|
|
->andReturn(['name', 'url', 'time', 'icon', 'is_file', 'is_image', 'thumb_url']);
|
|
|
|
$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('/');
|
|
$helper->shouldReceive('config')
|
|
->with('item_columns')
|
|
->andReturn(['name', 'url', 'time', 'icon', 'is_file', 'is_image', 'thumb_url']);
|
|
|
|
$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);
|
|
$helper->shouldReceive('config')
|
|
->with('item_columns')
|
|
->andReturn(['name', 'url', 'time', 'icon', 'is_file', 'is_image', 'thumb_url']);
|
|
|
|
$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'));
|
|
}
|
|
}
|