213 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			213 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Tests;
 | |
| 
 | |
| use Mockery as m;
 | |
| use PHPUnit\Framework\TestCase;
 | |
| use UniSharp\LaravelFilemanager\Lfm;
 | |
| use UniSharp\LaravelFilemanager\LfmItem;
 | |
| use UniSharp\LaravelFilemanager\LfmPath;
 | |
| 
 | |
| class LfmItemTest extends TestCase
 | |
| {
 | |
|     private $lfm_path;
 | |
|     private $lfm;
 | |
| 
 | |
|     public function setUp()
 | |
|     {
 | |
|         $this->lfm = m::mock(Lfm::class);
 | |
| 
 | |
|         $this->lfm_path = m::mock(LfmPath::class);
 | |
|         $this->lfm_path->shouldReceive('thumb')->andReturn($this->lfm_path);
 | |
|         $this->lfm->shouldReceive('config')
 | |
|             ->with('item_columns')
 | |
|             ->andReturn(['name', 'url', 'time', 'icon', 'is_file', 'is_image', 'thumb_url']);
 | |
|     }
 | |
| 
 | |
|     public function tearDown()
 | |
|     {
 | |
|         m::close();
 | |
| 
 | |
|         parent::tearDown();
 | |
|     }
 | |
| 
 | |
|     public function testMagicGet()
 | |
|     {
 | |
|         $this->lfm_item = new LfmItem($this->lfm_path, $this->lfm);
 | |
| 
 | |
|         $this->lfm_item->attributes['foo'] = 'bar';
 | |
| 
 | |
|         $this->assertEquals('bar', $this->lfm_item->foo);
 | |
|     }
 | |
| 
 | |
|     public function testName()
 | |
|     {
 | |
|         $this->lfm_path->shouldReceive('getName')->andReturn('bar');
 | |
| 
 | |
|         $item = new LfmItem($this->lfm_path, $this->lfm);
 | |
| 
 | |
|         $this->assertEquals('bar', $item->name());
 | |
|     }
 | |
| 
 | |
|     public function testAbsolutePath()
 | |
|     {
 | |
|         $this->lfm_path->shouldReceive('path')->with('absolute')->andReturn('foo/bar.baz');
 | |
| 
 | |
|         $item = new LfmItem($this->lfm_path, $this->lfm);
 | |
| 
 | |
|         $this->assertEquals('foo/bar.baz', $item->path());
 | |
|     }
 | |
| 
 | |
|     public function testIsDirectory()
 | |
|     {
 | |
|         $this->lfm_path->shouldReceive('isDirectory')->andReturn(false);
 | |
| 
 | |
|         $item = new LfmItem($this->lfm_path, $this->lfm);
 | |
| 
 | |
|         $this->assertFalse($item->isDirectory());
 | |
|     }
 | |
| 
 | |
|     public function testIsFile()
 | |
|     {
 | |
|         $this->lfm_path->shouldReceive('isDirectory')->andReturn(false);
 | |
| 
 | |
|         $item = new LfmItem($this->lfm_path, $this->lfm);
 | |
| 
 | |
|         $this->assertTrue($item->isFile());
 | |
|     }
 | |
| 
 | |
|     public function testIsImage()
 | |
|     {
 | |
|         $this->lfm_path->shouldReceive('mimeType')->andReturn('application/plain')->shouldReceive('isDirectory')
 | |
|             ->andReturn(false);
 | |
| 
 | |
|         $item = new LfmItem($this->lfm_path, $this->lfm);
 | |
| 
 | |
|         $this->assertFalse($item->isImage());
 | |
|     }
 | |
| 
 | |
|     public function testMimeType()
 | |
|     {
 | |
|         $this->lfm_path->shouldReceive('mimeType')->andReturn('application/plain');
 | |
| 
 | |
|         $item = new LfmItem($this->lfm_path, $this->lfm);
 | |
| 
 | |
|         $this->assertEquals('application/plain', $item->mimeType());
 | |
|     }
 | |
| 
 | |
|     public function testType()
 | |
|     {
 | |
|         $this->lfm_path->shouldReceive('isDirectory')->andReturn(false);
 | |
|         $this->lfm_path->shouldReceive('mimeType')->andReturn('application/plain');
 | |
|         $this->lfm_path->shouldReceive('path')->with('absolute')->andReturn('foo/bar.baz');
 | |
|         $this->lfm_path->shouldReceive('extension')->andReturn('baz');
 | |
| 
 | |
|         $this->lfm->shouldReceive('getFileType')->with('baz')->andReturn('File');
 | |
| 
 | |
|         $item = new LfmItem($this->lfm_path, $this->lfm);
 | |
| 
 | |
|         $this->assertEquals('File', $item->type());
 | |
|     }
 | |
| 
 | |
|     public function testExtension()
 | |
|     {
 | |
|         $this->lfm_path->shouldReceive('path')->with('absolute')->andReturn('foo/bar.baz');
 | |
|         $this->lfm_path->shouldReceive('extension')->andReturn('baz');
 | |
| 
 | |
|         $item = new LfmItem($this->lfm_path, $this->lfm);
 | |
| 
 | |
|         $this->assertEquals('baz', $item->extension());
 | |
|     }
 | |
| 
 | |
|     public function testThumbUrl()
 | |
|     {
 | |
|         $this->lfm_path->shouldReceive('isDirectory')->andReturn(false);
 | |
|         $this->lfm_path->shouldReceive('mimeType')->andReturn('application/plain');
 | |
| 
 | |
|         $item = new LfmItem($this->lfm_path, $this->lfm);
 | |
| 
 | |
|         $this->assertNull($item->thumbUrl());
 | |
|     }
 | |
| 
 | |
|     // TODO: refactor
 | |
|     public function testUrl()
 | |
|     {
 | |
|         $this->lfm_path->shouldReceive('isDirectory')->andReturn(false);
 | |
|         $this->lfm_path->shouldReceive('getName')->andReturn('bar');
 | |
|         $this->lfm_path->shouldReceive('setName')->andReturn($this->lfm_path);
 | |
|         $this->lfm_path->shouldReceive('url')->andReturn('foo/bar');
 | |
| 
 | |
|         $item = new LfmItem($this->lfm_path, $this->lfm);
 | |
| 
 | |
|         $this->assertEquals('foo/bar', $item->url());
 | |
|     }
 | |
| 
 | |
|     public function testSize()
 | |
|     {
 | |
|         $this->lfm_path->shouldReceive('size')->andReturn(1024);
 | |
|         $this->lfm_path->shouldReceive('isDirectory')->andReturn(false);
 | |
| 
 | |
|         $item = new LfmItem($this->lfm_path, $this->lfm);
 | |
| 
 | |
|         $this->assertEquals('1.00 kB', $item->size());
 | |
|     }
 | |
| 
 | |
|     public function testTime()
 | |
|     {
 | |
|         $this->lfm_path->shouldReceive('lastModified')->andReturn(0)->shouldReceive('isDirectory')
 | |
|             ->andReturn(false);
 | |
| 
 | |
|         $item = new LfmItem($this->lfm_path, $this->lfm);
 | |
| 
 | |
|         $this->assertEquals(0, $item->time());
 | |
|     }
 | |
| 
 | |
|     public function testIcon()
 | |
|     {
 | |
|         $this->lfm_path->shouldReceive('isDirectory')->andReturn(false);
 | |
|         $this->lfm_path->shouldReceive('mimeType')->andReturn('application/plain');
 | |
|         $this->lfm_path->shouldReceive('path')->with('absolute')->andReturn('foo/bar.baz');
 | |
|         $this->lfm_path->shouldReceive('extension')->andReturn('baz');
 | |
| 
 | |
|         $this->lfm->shouldReceive('getFileIcon')->with('baz')->andReturn('fa-file');
 | |
| 
 | |
|         $item = new LfmItem($this->lfm_path, $this->lfm);
 | |
| 
 | |
|         $this->assertEquals('baz', $item->icon());
 | |
| 
 | |
|         // $path1 = m::mock(LfmPath::class);
 | |
|         // $path1->shouldReceive('path')->with('absolute')->andReturn('foo/bar');
 | |
|         // $path1->shouldReceive('isDirectory')->andReturn(false);
 | |
|         // $path1->shouldReceive('mimeType')->andReturn('image/png');
 | |
| 
 | |
|         // $path3 = m::mock(LfmPath::class);
 | |
|         // $path3->shouldReceive('path')->with('absolute')->andReturn('foo/biz');
 | |
|         // $path3->shouldReceive('isDirectory')->andReturn(true);
 | |
| 
 | |
|         // $this->assertEquals('fa-image',    (new LfmItem($path1))->icon());
 | |
|         // $this->assertEquals('fa-folder-o', (new LfmItem($path3))->icon());
 | |
|     }
 | |
| 
 | |
|     public function testHasThumb()
 | |
|     {
 | |
|         $this->lfm_path->shouldReceive('mimeType')->andReturn('application/plain')->shouldReceive('isDirectory')
 | |
|             ->andReturn(false);
 | |
| 
 | |
|         $item = new LfmItem($this->lfm_path, $this->lfm);
 | |
| 
 | |
|         $this->assertFalse($item->hasThumb());
 | |
|     }
 | |
| 
 | |
|     public function testHumanFilesize()
 | |
|     {
 | |
|         $item = new LfmItem($this->lfm_path, $this->lfm);
 | |
| 
 | |
|         $this->assertEquals('1.00 kB', $item->humanFilesize(1024));
 | |
|         $this->assertEquals('1.00 MB', $item->humanFilesize(1024 ** 2));
 | |
|         $this->assertEquals('1.00 GB', $item->humanFilesize(1024 ** 3));
 | |
|         $this->assertEquals('1.00 TB', $item->humanFilesize(1024 ** 4));
 | |
|         $this->assertEquals('1.00 PB', $item->humanFilesize(1024 ** 5));
 | |
|         $this->assertEquals('1.00 EB', $item->humanFilesize(1024 ** 6));
 | |
|     }
 | |
| }
 | 
