184 lines
6.1 KiB
PHP
184 lines
6.1 KiB
PHP
<?php
|
|
|
|
namespace Tests;
|
|
|
|
use Illuminate\Contracts\Config\Repository as Config;
|
|
use Illuminate\Http\Request;
|
|
use Mockery as m;
|
|
use PHPUnit\Framework\TestCase;
|
|
use UniSharp\LaravelFilemanager\Lfm;
|
|
use UniSharp\LaravelFilemanager\LfmFileRepository;
|
|
use UniSharp\LaravelFilemanager\LfmStorageRepository;
|
|
|
|
class LfmTest extends TestCase
|
|
{
|
|
public function tearDown()
|
|
{
|
|
m::close();
|
|
|
|
parent::tearDown();
|
|
}
|
|
|
|
public function testGetStorage()
|
|
{
|
|
$config = m::mock(Config::class);
|
|
$config->shouldReceive('get')->with('lfm.disk')->once()->andReturn('local');
|
|
|
|
$lfm = new Lfm($config);
|
|
$this->assertInstanceOf(LfmStorageRepository::class, $lfm->getStorage('foo/bar'));
|
|
}
|
|
|
|
public function testInput()
|
|
{
|
|
$request = m::mock(Request::class);
|
|
$request->shouldReceive('input')->with('foo')->andReturn('bar');
|
|
|
|
$lfm = new Lfm(m::mock(Config::class), $request);
|
|
|
|
$this->assertEquals('bar', $lfm->input('foo'));
|
|
}
|
|
|
|
public function testGetNameFromPath()
|
|
{
|
|
$this->assertEquals('bar', (new Lfm)->getNameFromPath('foo/bar'));
|
|
}
|
|
|
|
public function testAllowFolderType()
|
|
{
|
|
$config = m::mock(Config::class);
|
|
$config->shouldReceive('get')->with('lfm.allow_private_folder')->once()->andReturn(true);
|
|
$config->shouldReceive('get')->with('lfm.allow_private_folder')->once()->andReturn(false);
|
|
$config->shouldReceive('get')->with('lfm.allow_private_folder')->once()->andReturn(true);
|
|
$config->shouldReceive('get')->with('lfm.allow_shared_folder')->once()->andReturn(false);
|
|
|
|
$lfm = new Lfm($config);
|
|
|
|
$this->assertTrue($lfm->allowFolderType('user'));
|
|
$this->assertTrue($lfm->allowFolderType('shared'));
|
|
$this->assertFalse($lfm->allowFolderType('shared'));
|
|
}
|
|
|
|
public function testGetCategoryName()
|
|
{
|
|
$config = m::mock(Config::class);
|
|
$config->shouldReceive('get')
|
|
->with('lfm.folder_categories.file.folder_name', m::type('string'))
|
|
->once()
|
|
->andReturn('files');
|
|
$config->shouldReceive('get')
|
|
->with('lfm.folder_categories.image.folder_name', m::type('string'))
|
|
->once()
|
|
->andReturn('photos');
|
|
$config->shouldReceive('get')
|
|
->with('lfm.folder_categories')
|
|
->andReturn(['file' => [], 'image' => []]);
|
|
|
|
$request = m::mock(Request::class);
|
|
$request->shouldReceive('input')->with('type')->once()->andReturn('file');
|
|
$request->shouldReceive('input')->with('type')->once()->andReturn('image');
|
|
|
|
$lfm = new Lfm($config, $request);
|
|
|
|
$this->assertEquals('files', $lfm->getCategoryName('file'));
|
|
$this->assertEquals('photos', $lfm->getCategoryName('image'));
|
|
}
|
|
|
|
public function testCurrentLfmType()
|
|
{
|
|
$request = m::mock(Request::class);
|
|
$request->shouldReceive('input')->with('type')->once()->andReturn('file');
|
|
$request->shouldReceive('input')->with('type')->once()->andReturn('image');
|
|
$request->shouldReceive('input')->with('type')->once()->andReturn('foo');
|
|
|
|
$config = m::mock(Config::class);
|
|
$config->shouldReceive('get')
|
|
->with('lfm.folder_categories')
|
|
->andReturn(['file' => [], 'image' => []]);
|
|
|
|
$lfm = new Lfm($config, $request);
|
|
|
|
$this->assertEquals('file', $lfm->currentLfmType());
|
|
$this->assertEquals('image', $lfm->currentLfmType());
|
|
$this->assertEquals('file', $lfm->currentLfmType());
|
|
}
|
|
|
|
public function testGetUserSlug()
|
|
{
|
|
$config = m::mock(Config::class);
|
|
$config->shouldReceive('get')->with('lfm.private_folder_name')->once()->andReturn(function () {
|
|
return 'foo';
|
|
});
|
|
|
|
$lfm = new Lfm($config);
|
|
|
|
$this->assertEquals('foo', $lfm->getUserSlug());
|
|
}
|
|
|
|
public function testGetRootFolder()
|
|
{
|
|
$config = m::mock(Config::class);
|
|
$config->shouldReceive('get')->with('lfm.allow_private_folder')->andReturn(true);
|
|
$config->shouldReceive('get')->with('lfm.private_folder_name')->once()->andReturn(function () {
|
|
return 'foo';
|
|
});
|
|
$config->shouldReceive('get')->with('lfm.shared_folder_name')->once()->andReturn('bar');
|
|
|
|
$lfm = new Lfm($config);
|
|
|
|
$this->assertEquals('/foo', $lfm->getRootFolder('user'));
|
|
$this->assertEquals('/bar', $lfm->getRootFolder('shared'));
|
|
}
|
|
|
|
public function testGetThumbFolderName()
|
|
{
|
|
$config = m::mock(Config::class);
|
|
$config->shouldReceive('get')->with('lfm.thumb_folder_name')->once()->andReturn('foo');
|
|
|
|
$lfm = new Lfm($config);
|
|
|
|
$this->assertEquals('foo', $lfm->getThumbFolderName());
|
|
}
|
|
|
|
public function testGetFileType()
|
|
{
|
|
$config = m::mock(Config::class);
|
|
$config->shouldReceive('get')->with('lfm.file_type_array.foo', m::type('string'))->once()->andReturn('foo');
|
|
$config->shouldReceive('get')->with(m::type('string'), m::type('string'))->once()->andReturn('File');
|
|
|
|
$lfm = new Lfm($config);
|
|
|
|
$this->assertEquals('foo', $lfm->getFileType('foo'));
|
|
$this->assertEquals('File', $lfm->getFileType('bar'));
|
|
}
|
|
|
|
public function testAllowMultiUser()
|
|
{
|
|
$config = m::mock(Config::class);
|
|
$config->shouldReceive('get')->with('lfm.allow_private_folder')->once()->andReturn(true);
|
|
|
|
$lfm = new Lfm($config);
|
|
|
|
$this->assertTrue($lfm->allowMultiUser());
|
|
}
|
|
|
|
public function testAllowShareFolder()
|
|
{
|
|
$config = m::mock(Config::class);
|
|
$config->shouldReceive('get')->with('lfm.allow_private_folder')->once()->andReturn(false);
|
|
$config->shouldReceive('get')->with('lfm.allow_private_folder')->once()->andReturn(true);
|
|
$config->shouldReceive('get')->with('lfm.allow_shared_folder')->once()->andReturn(false);
|
|
|
|
$lfm = new Lfm($config);
|
|
|
|
$this->assertTrue($lfm->allowShareFolder());
|
|
$this->assertFalse($lfm->allowShareFolder());
|
|
}
|
|
|
|
public function testTranslateFromUtf8()
|
|
{
|
|
$input = 'test/測試';
|
|
|
|
$this->assertEquals($input, (new Lfm)->translateFromUtf8($input));
|
|
}
|
|
}
|