105 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			105 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | 
 | ||
|  | use League\Flysystem\Cached\Storage\Adapter; | ||
|  | use PHPUnit\Framework\TestCase; | ||
|  | 
 | ||
|  | class AdapterCacheTests extends TestCase | ||
|  | { | ||
|  |     public function testLoadFail() | ||
|  |     { | ||
|  |         $adapter = Mockery::mock('League\Flysystem\AdapterInterface'); | ||
|  |         $adapter->shouldReceive('has')->once()->with('file.json')->andReturn(false); | ||
|  |         $cache = new Adapter($adapter, 'file.json', 10); | ||
|  |         $cache->load(); | ||
|  |         $this->assertFalse($cache->isComplete('', false)); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testLoadExpired() | ||
|  |     { | ||
|  |         $response = ['contents' => json_encode([[], ['' => true], 1234567890]), 'path' => 'file.json']; | ||
|  |         $adapter = Mockery::mock('League\Flysystem\AdapterInterface'); | ||
|  |         $adapter->shouldReceive('has')->once()->with('file.json')->andReturn(true); | ||
|  |         $adapter->shouldReceive('read')->once()->with('file.json')->andReturn($response); | ||
|  |         $adapter->shouldReceive('delete')->once()->with('file.json'); | ||
|  |         $cache = new Adapter($adapter, 'file.json', 10); | ||
|  |         $cache->load(); | ||
|  |         $this->assertFalse($cache->isComplete('', false)); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testLoadSuccess() | ||
|  |     { | ||
|  |         $response = ['contents' => json_encode([[], ['' => true], 9876543210]), 'path' => 'file.json']; | ||
|  |         $adapter = Mockery::mock('League\Flysystem\AdapterInterface'); | ||
|  |         $adapter->shouldReceive('has')->once()->with('file.json')->andReturn(true); | ||
|  |         $adapter->shouldReceive('read')->once()->with('file.json')->andReturn($response); | ||
|  |         $cache = new Adapter($adapter, 'file.json', 10); | ||
|  |         $cache->load(); | ||
|  |         $this->assertTrue($cache->isComplete('', false)); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testSaveExists() | ||
|  |     { | ||
|  |         $response = json_encode([[], [], null]); | ||
|  |         $adapter = Mockery::mock('League\Flysystem\AdapterInterface'); | ||
|  |         $adapter->shouldReceive('has')->once()->with('file.json')->andReturn(true); | ||
|  |         $adapter->shouldReceive('update')->once()->with('file.json', $response, Mockery::any()); | ||
|  |         $cache = new Adapter($adapter, 'file.json', null); | ||
|  |         $cache->save(); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testSaveNew() | ||
|  |     { | ||
|  |         $response = json_encode([[], [], null]); | ||
|  |         $adapter = Mockery::mock('League\Flysystem\AdapterInterface'); | ||
|  |         $adapter->shouldReceive('has')->once()->with('file.json')->andReturn(false); | ||
|  |         $adapter->shouldReceive('write')->once()->with('file.json', $response, Mockery::any()); | ||
|  |         $cache = new Adapter($adapter, 'file.json', null); | ||
|  |         $cache->save(); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testStoreContentsRecursive() | ||
|  |     { | ||
|  |         $adapter = Mockery::mock('League\Flysystem\AdapterInterface'); | ||
|  |         $adapter->shouldReceive('has')->once()->with('file.json')->andReturn(false); | ||
|  |         $adapter->shouldReceive('write')->once()->with('file.json', Mockery::any(), Mockery::any()); | ||
|  | 
 | ||
|  |         $cache = new Adapter($adapter, 'file.json', null); | ||
|  | 
 | ||
|  |         $contents = [ | ||
|  |             ['path' => 'foo/bar', 'dirname' => 'foo'], | ||
|  |             ['path' => 'afoo/bang', 'dirname' => 'afoo'], | ||
|  |         ]; | ||
|  | 
 | ||
|  |         $cache->storeContents('foo', $contents, true); | ||
|  | 
 | ||
|  |         $this->assertTrue($cache->isComplete('foo', true)); | ||
|  |         $this->assertFalse($cache->isComplete('afoo', true)); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testDeleteDir() | ||
|  |     { | ||
|  |         $cache_data = [ | ||
|  |             'foo' => ['path' => 'foo', 'type' => 'dir', 'dirname' => ''], | ||
|  |             'foo/bar' => ['path' => 'foo/bar', 'type' => 'file', 'dirname' => 'foo'], | ||
|  |             'foobaz' => ['path' => 'foobaz', 'type' => 'file', 'dirname' => ''], | ||
|  |         ]; | ||
|  | 
 | ||
|  |         $response = [ | ||
|  |             'contents' => json_encode([$cache_data, [], null]), | ||
|  |             'path' => 'file.json', | ||
|  |         ]; | ||
|  | 
 | ||
|  |         $adapter = Mockery::mock('League\Flysystem\AdapterInterface'); | ||
|  |         $adapter->shouldReceive('has')->zeroOrMoreTimes()->with('file.json')->andReturn(true); | ||
|  |         $adapter->shouldReceive('read')->once()->with('file.json')->andReturn($response); | ||
|  |         $adapter->shouldReceive('update')->once()->with('file.json', Mockery::any(), Mockery::any())->andReturn(true); | ||
|  | 
 | ||
|  |         $cache = new Adapter($adapter, 'file.json', null); | ||
|  |         $cache->load(); | ||
|  | 
 | ||
|  |         $cache->deleteDir('foo', true); | ||
|  | 
 | ||
|  |         $this->assertSame(1, count($cache->listContents('', true))); | ||
|  |     } | ||
|  | } |