You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
4.1 KiB
105 lines
4.1 KiB
1 year ago
|
<?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)));
|
||
|
}
|
||
|
}
|