More tests and fixes
Some checks failed
Gitea - aviat/banker/pipeline/head There was a failure building this commit
Some checks failed
Gitea - aviat/banker/pipeline/head There was a failure building this commit
This commit is contained in:
parent
7c121934a2
commit
c4e4ce938e
@ -73,7 +73,9 @@ abstract class AbstractDriver implements DriverInterface, LoggerAwareInterface {
|
||||
$setResults = [];
|
||||
foreach ($items as $k => $v)
|
||||
{
|
||||
$setResults[] = $this->set($k, $v, $expires);
|
||||
$setResults[] = ($expires === NULL)
|
||||
? $this->set($k, $v)
|
||||
: $this->set($k, $v, $expires);
|
||||
}
|
||||
|
||||
// Only return true if all the results are true
|
||||
|
@ -104,9 +104,11 @@ class ApcuDriver extends AbstractDriver {
|
||||
{
|
||||
$ttl = $this->getTTLFromExpiration((int)$expires);
|
||||
|
||||
return ($expires === NULL)
|
||||
$errorKeys = ($expires === NULL)
|
||||
? apcu_store($items)
|
||||
: apcu_store($items, NULL, $ttl);
|
||||
|
||||
return empty($errorKeys);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -128,8 +130,8 @@ class ApcuDriver extends AbstractDriver {
|
||||
*/
|
||||
public function deleteMultiple(array $keys = []): bool
|
||||
{
|
||||
$deleted = apcu_delete($keys);
|
||||
return ($keys <=> $deleted) === 0;
|
||||
$failedToDelete = apcu_delete($keys);
|
||||
return empty($failedToDelete);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -162,7 +162,16 @@ class MemcachedDriver extends AbstractDriver {
|
||||
public function deleteMultiple(array $keys = []): bool
|
||||
{
|
||||
$deleted = $this->conn->deleteMulti($keys);
|
||||
return ($keys <=> $deleted) === 0;
|
||||
|
||||
foreach ($deleted as $key => $status)
|
||||
{
|
||||
if ($status !== TRUE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -86,6 +86,12 @@ class NullDriver extends AbstractDriver {
|
||||
*/
|
||||
public function delete(string $key): bool
|
||||
{
|
||||
// Don't return true if the key didn't exist to begin with
|
||||
if ( ! array_key_exists($key, $this->store))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
unset($this->store[$key]);
|
||||
return ( ! array_key_exists($key, $this->store));
|
||||
}
|
||||
|
@ -92,12 +92,11 @@ class RedisDriver extends AbstractDriver {
|
||||
{
|
||||
$value = serialize($value);
|
||||
|
||||
if ($expires !== NULL)
|
||||
{
|
||||
return $this->conn->set($key, $value, 'EX', $expires) === 'OK';
|
||||
}
|
||||
$status = ($expires !== NULL)
|
||||
? $this->conn->set($key, $value, 'EX', $expires)
|
||||
: $this->conn->set($key, $value);
|
||||
|
||||
return $this->conn->set($key, $value) === 'OK';
|
||||
return (string)$status === 'OK';
|
||||
}
|
||||
|
||||
/**
|
||||
@ -108,7 +107,8 @@ class RedisDriver extends AbstractDriver {
|
||||
*/
|
||||
public function delete(string $key): bool
|
||||
{
|
||||
return (bool) $this->conn->del([$key]);
|
||||
// This call returns the number of keys deleted
|
||||
return $this->conn->del([$key]) === 1;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -109,11 +109,6 @@ final class Pool implements CacheItemPoolInterface, LoggerAwareInterface {
|
||||
$items = [];
|
||||
foreach($keys as $key)
|
||||
{
|
||||
if ( ! is_string($key))
|
||||
{
|
||||
throw new InvalidArgumentException();
|
||||
}
|
||||
|
||||
$items[$key] = array_key_exists($key, $this->deferred)
|
||||
? $this->deferred[$key]
|
||||
: new Item($this->driver, $key);
|
||||
|
@ -148,15 +148,6 @@ class Teller implements SimpleCache\CacheInterface, LoggerAwareInterface {
|
||||
return ($ttl === NULL)
|
||||
? $this->driver->setMultiple((array)$values)
|
||||
: $this->driver->setMultiple((array)$values, $ttl);
|
||||
|
||||
$setResults = [];
|
||||
foreach ($values as $k => $v)
|
||||
{
|
||||
$setResults[] = $this->set($k, $v, $ttl);
|
||||
}
|
||||
|
||||
// Only return true if all the results are true
|
||||
return array_reduce($setResults, fn ($carry, $item) => $item && $carry, TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -22,8 +22,6 @@ class DriverTestBase extends TestCase {
|
||||
|
||||
protected DriverInterface $driver;
|
||||
|
||||
|
||||
|
||||
public function testGetSet(): void
|
||||
{
|
||||
$this->driver->set('foo', 'bar');
|
||||
@ -37,7 +35,7 @@ class DriverTestBase extends TestCase {
|
||||
'bar' => 'baz'
|
||||
];
|
||||
|
||||
$this->driver->set('bar', $bar);
|
||||
$this->assertTrue($this->driver->set('bar', $bar));
|
||||
$this->assertEquals($bar, $this->driver->get('bar'));
|
||||
}
|
||||
|
||||
@ -74,6 +72,42 @@ class DriverTestBase extends TestCase {
|
||||
$this->assertEquals($expected, $actual);
|
||||
}
|
||||
|
||||
public function testSetMultiple(): void
|
||||
{
|
||||
$data = [
|
||||
'foo' => [
|
||||
'apple' => 'orange'
|
||||
],
|
||||
'bar' => 'baz',
|
||||
'baz' => 123456,
|
||||
'a' => [1, 2, 3],
|
||||
'b' => false,
|
||||
'c' => true,
|
||||
'd' => null,
|
||||
];
|
||||
|
||||
$this->assertTrue($this->driver->setMultiple($data));
|
||||
$this->assertEquals($data, $this->driver->getMultiple(array_keys($data)));
|
||||
}
|
||||
|
||||
public function testSetMultipleExpires(): void
|
||||
{
|
||||
$data = [
|
||||
'foo' => [
|
||||
'apple' => 'orange'
|
||||
],
|
||||
'bar' => 'baz',
|
||||
'baz' => 123456,
|
||||
'a' => [1, 2, 3],
|
||||
'b' => false,
|
||||
'c' => true,
|
||||
'd' => null,
|
||||
];
|
||||
|
||||
$this->assertTrue($this->driver->setMultiple($data, 30));
|
||||
$this->assertEquals($data, $this->driver->getMultiple(array_keys($data)));
|
||||
}
|
||||
|
||||
public function testSetWithExpires(): void
|
||||
{
|
||||
$this->driver->set('foo', 'bar', 30);
|
||||
@ -98,12 +132,20 @@ class DriverTestBase extends TestCase {
|
||||
$this->assertTrue($this->driver->exists('a'));
|
||||
$this->assertTrue($this->driver->exists('b'));
|
||||
|
||||
/*$this->assertTrue(*/$this->driver->deleteMultiple(['a', 'b']);//);
|
||||
$this->assertTrue($this->driver->deleteMultiple(['a', 'b']));
|
||||
|
||||
$this->assertFalse($this->driver->exists('a'));
|
||||
$this->assertFalse($this->driver->exists('b'));
|
||||
}
|
||||
|
||||
public function testDeleteMultipleBadKey(): void
|
||||
{
|
||||
$this->assertFalse($this->driver->exists('foo'));
|
||||
$this->assertFalse($this->driver->exists('bar'));
|
||||
|
||||
$this->assertFalse($this->driver->deleteMultiple(['foo', 'bar']));
|
||||
}
|
||||
|
||||
public function testExpiresAt(): void
|
||||
{
|
||||
$this->driver->set('abc', 'def');
|
||||
|
Loading…
Reference in New Issue
Block a user