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.
135 lines
3.1 KiB
135 lines
3.1 KiB
<?php |
|
|
|
namespace yiiunit\extensions\mongodb; |
|
|
|
use Yii; |
|
use yii\mongodb\Cache; |
|
|
|
class CacheTest extends MongoDbTestCase |
|
{ |
|
/** |
|
* @var string test cache collection name. |
|
*/ |
|
protected static $cacheCollection = '_test_cache'; |
|
|
|
protected function tearDown() |
|
{ |
|
$this->dropCollection(static::$cacheCollection); |
|
parent::tearDown(); |
|
} |
|
|
|
/** |
|
* Creates test cache instance. |
|
* @return Cache cache instance. |
|
*/ |
|
protected function createCache() |
|
{ |
|
return Yii::createObject([ |
|
'class' => Cache::className(), |
|
'db' => $this->getConnection(), |
|
'cacheCollection' => static::$cacheCollection, |
|
'gcProbability' => 0, |
|
]); |
|
} |
|
|
|
// Tests: |
|
|
|
public function testSet() |
|
{ |
|
$cache = $this->createCache(); |
|
|
|
$key = 'test_key'; |
|
$value = 'test_value'; |
|
$this->assertTrue($cache->set($key, $value), 'Unable to set value!'); |
|
$this->assertEquals($value, $cache->get($key), 'Unable to set value correctly!'); |
|
|
|
$newValue = 'test_new_value'; |
|
$this->assertTrue($cache->set($key, $newValue), 'Unable to update value!'); |
|
$this->assertEquals($newValue, $cache->get($key), 'Unable to update value correctly!'); |
|
} |
|
|
|
public function testAdd() |
|
{ |
|
$cache = $this->createCache(); |
|
|
|
$key = 'test_key'; |
|
$value = 'test_value'; |
|
$this->assertTrue($cache->add($key, $value), 'Unable to add value!'); |
|
$this->assertEquals($value, $cache->get($key), 'Unable to add value correctly!'); |
|
|
|
$newValue = 'test_new_value'; |
|
$this->assertTrue($cache->add($key, $newValue), 'Unable to re-add value!'); |
|
$this->assertEquals($value, $cache->get($key), 'Original value is lost!'); |
|
} |
|
|
|
/** |
|
* @depends testSet |
|
*/ |
|
public function testDelete() |
|
{ |
|
$cache = $this->createCache(); |
|
|
|
$key = 'test_key'; |
|
$value = 'test_value'; |
|
$cache->set($key, $value); |
|
|
|
$this->assertTrue($cache->delete($key), 'Unable to delete key!'); |
|
$this->assertEquals(false, $cache->get($key), 'Value is not deleted!'); |
|
} |
|
|
|
/** |
|
* @depends testSet |
|
*/ |
|
public function testFlush() |
|
{ |
|
$cache = $this->createCache(); |
|
|
|
$cache->set('key1', 'value1'); |
|
$cache->set('key2', 'value2'); |
|
|
|
$this->assertTrue($cache->flush(), 'Unable to flush cache!'); |
|
|
|
$collection = $cache->db->getCollection($cache->cacheCollection); |
|
$rows = $this->findAll($collection); |
|
$this->assertCount(0, $rows, 'Unable to flush records!'); |
|
} |
|
|
|
/** |
|
* @depends testSet |
|
*/ |
|
public function testGc() |
|
{ |
|
$cache = $this->createCache(); |
|
|
|
$cache->set('key1', 'value1'); |
|
$cache->set('key2', 'value2'); |
|
|
|
$collection = $cache->db->getCollection($cache->cacheCollection); |
|
|
|
list($row) = $this->findAll($collection); |
|
$collection->update(['_id' => $row['_id']], ['expire' => time() - 10]); |
|
|
|
$cache->gc(true); |
|
|
|
$rows = $this->findAll($collection); |
|
$this->assertCount(1, $rows, 'Unable to collect garbage!'); |
|
} |
|
|
|
/** |
|
* @depends testSet |
|
*/ |
|
public function testGetExpired() |
|
{ |
|
$cache = $this->createCache(); |
|
|
|
$key = 'test_key'; |
|
$value = 'test_value'; |
|
$cache->set($key, $value); |
|
|
|
$collection = $cache->db->getCollection($cache->cacheCollection); |
|
list($row) = $this->findAll($collection); |
|
$collection->update(['_id' => $row['_id']], ['expire' => time() - 10]); |
|
|
|
$this->assertEquals(false, $cache->get($key), 'Expired key value returned!'); |
|
} |
|
} |