Yii2 framework backup
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.

136 lines
3.6 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!');
}
}