Add tests for SQL based api cache

This commit is contained in:
Timothy Warren 2016-04-07 12:34:57 -04:00
parent 440a999c2e
commit 0f6c998109
3 changed files with 71 additions and 19 deletions

View File

@ -33,16 +33,7 @@ class SQLDriver extends DB implements \Aviat\Ion\Cache\CacheDriverInterface {
public function __construct(ContainerInterface $container)
{
parent::__construct($container);
try
{
$this->db = \Query($this->db_config['collection']);
}
catch (\PDOException $e)
{
$this->valid_database = FALSE;
return FALSE;
}
$this->db = \Query($this->db_config['collection']);
}
/**
@ -94,11 +85,11 @@ class SQLDriver extends DB implements \Aviat\Ion\Cache\CacheDriverInterface {
}
/**
* Invalidate a cached value
*
* @param string $key
* @return CacheDriverInterface
*/
* Invalidate a cached value
*
* @param string $key
* @return CacheDriverInterface
*/
public function invalidate($key)
{
$this->db->where('key', $key)
@ -108,10 +99,10 @@ class SQLDriver extends DB implements \Aviat\Ion\Cache\CacheDriverInterface {
}
/**
* Clear the contents of the cache
*
* @return void
*/
* Clear the contents of the cache
*
* @return void
*/
public function invalidateAll()
{
$this->db->truncate('cache');

View File

@ -0,0 +1,41 @@
<?php
trait CacheDriverBase {
protected $foo = [
'bar' => [
'baz' => 'foobar'
]
];
protected $bar = 'secondvalue';
public function testHasCacheDriver()
{
$this->assertTrue((bool) $this->driver);
}
public function testDriverGetSet()
{
$this->driver->set('foo', $this->foo);
$this->assertEquals($this->driver->get('foo'), $this->foo);
}
public function testInvalidate()
{
$this->driver->set('foo', $this->foo);
$this->driver->invalidate('foo');
$this->assertEmpty($this->driver->get('foo'));
}
public function testInvalidateAll()
{
$this->driver->set('foo', $this->foo);
$this->driver->set('bar', $this->bar);
$this->driver->invalidateAll();
$this->assertEmpty($this->driver->get('foo'));
$this->assertEmpty($this->driver->get('bar'));
}
}

View File

@ -0,0 +1,20 @@
<?php
require('CacheDriverBase.php');
use Aviat\Ion\Friend;
use Aviat\Ion\Cache\Driver\SQLDriver;
class CacheSQLDriverTest extends AnimeClient_TestCase {
use CacheDriverBase;
protected $driver;
public function setUp()
{
parent::setUp();
$this->driver = new SQLDriver($this->container);
$friend = new Friend($this->driver);
$friend->db->query('CREATE TABLE IF NOT EXISTS "cache" ("key" TEXT NULL, "value" TEXT NULL, PRIMARY KEY ("key"))');
}
}