Files
yii2/tests/unit/framework/caching/DbCacheTest.php
Carsten Brandt e0ad712527 Merge pull request #204 branch 'unittest-app-dependency' of https://github.com/bwoester/yii2 into bwoester-unittest-app-dependency
* 'unittest-app-dependency' of https://github.com/bwoester/yii2:
  mod: incorporate suggestions - rename requireApp() to mockApplication() - always destroy app on tearDown()   - eliminates need for constant YII_DESTROY_APP_ON_TEARDOWN   - mockApplication() becomes a lot easier. Destroying app on each tearDown     means creating it on every call is fine. No more checking if it already     exists and if it has been created from the same config. - \yii::$app should have been \Yii::$app
  add: new key for unit tests config named "className". Allows to run the tests      using different Application instances (consoleApp/ webApp) mod: TestCase::getParam accepts second param $default=null
  mod: don't create app in bootstrap script, unit tests do it themselves add: option to destroy app after each test to find unit tests that fail      to require an app
  allow unit tests to requireApp() on setUp()

Conflicts:
	tests/unit/data/config.php
2013-05-11 12:22:49 +02:00

74 lines
1.6 KiB
PHP

<?php
namespace yiiunit\framework\caching;
use yii\caching\DbCache;
use yiiunit\TestCase;
/**
* Class for testing file cache backend
*/
class DbCacheTest extends CacheTest
{
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
*/
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(array(
'db' => $this->getConnection(),
));
}
return $this->_cacheInstance;
}
}