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.
		
		
		
		
		
			
		
			
				
					
					
						
							86 lines
						
					
					
						
							1.9 KiB
						
					
					
				
			
		
		
	
	
							86 lines
						
					
					
						
							1.9 KiB
						
					
					
				<?php | 
						|
 | 
						|
namespace yiiunit\framework\caching; | 
						|
 | 
						|
use yii\caching\DbCache; | 
						|
 | 
						|
/** | 
						|
 * Class for testing file cache backend | 
						|
 * @group db | 
						|
 * @group caching | 
						|
 */ | 
						|
class DbCacheTest extends CacheTestCase | 
						|
{ | 
						|
	private $_cacheInstance; | 
						|
	private $_connection; | 
						|
 | 
						|
	protected function setUp() | 
						|
	{ | 
						|
		if (!extension_loaded('pdo') || !extension_loaded('pdo_mysql')) { | 
						|
			$this->markTestSkipped('pdo and pdo_mysql extensions are required.'); | 
						|
		} | 
						|
 | 
						|
		parent::setUp(); | 
						|
		 | 
						|
		$this->getConnection()->createCommand(" | 
						|
			CREATE TABLE IF NOT EXISTS tbl_cache ( | 
						|
				id char(128) NOT NULL, | 
						|
				expire int(11) DEFAULT NULL, | 
						|
				data LONGBLOB, | 
						|
				PRIMARY KEY (id), | 
						|
				KEY expire (expire) | 
						|
			); | 
						|
		")->execute(); | 
						|
	} | 
						|
 | 
						|
	/** | 
						|
	 * @param bool $reset whether to clean up the test database | 
						|
	 * @return \yii\db\Connection | 
						|
	 */ | 
						|
	public function getConnection($reset = true) | 
						|
	{ | 
						|
		if ($this->_connection === null) { | 
						|
			$databases = $this->getParam('databases'); | 
						|
			$params = $databases['mysql']; | 
						|
			$db = new \yii\db\Connection; | 
						|
			$db->dsn = $params['dsn']; | 
						|
			$db->username = $params['username']; | 
						|
			$db->password = $params['password']; | 
						|
			if ($reset) { | 
						|
				$db->open(); | 
						|
				$lines = explode(';', file_get_contents($params['fixture'])); | 
						|
				foreach ($lines as $line) { | 
						|
					if (trim($line) !== '') { | 
						|
						$db->pdo->exec($line); | 
						|
					} | 
						|
				} | 
						|
			} | 
						|
			$this->_connection = $db; | 
						|
		} | 
						|
		return $this->_connection; | 
						|
	} | 
						|
 | 
						|
 | 
						|
	/** | 
						|
	 * @return DbCache | 
						|
	 */ | 
						|
	protected function getCacheInstance() | 
						|
	{ | 
						|
		if ($this->_cacheInstance === null) { | 
						|
			$this->_cacheInstance = new DbCache(['db' => $this->getConnection()]); | 
						|
		} | 
						|
		return $this->_cacheInstance; | 
						|
	} | 
						|
 | 
						|
	public function testExpire() | 
						|
	{ | 
						|
		$cache = $this->getCacheInstance(); | 
						|
 | 
						|
		static::$time = \time(); | 
						|
		$this->assertTrue($cache->set('expire_test', 'expire_test', 2)); | 
						|
		static::$time++; | 
						|
		$this->assertEquals('expire_test', $cache->get('expire_test')); | 
						|
		static::$time++; | 
						|
		$this->assertFalse($cache->get('expire_test')); | 
						|
	} | 
						|
}
 | 
						|
 |