Commit 8ab1d837 by Klimov Paul

Merge branch 'master' of github.com:yiisoft/yii2

parents ae302037 c5d382c6
<?php
namespace yii\caching;
/**
* Mock for the time() function for caching classes
* @return int
*/
function time() {
return \yiiunit\framework\caching\CacheTest::$time ?: \time();
}
namespace yiiunit\framework\caching;
use yiiunit\TestCase;
use yii\caching\Cache;
......@@ -9,6 +21,12 @@ use yii\caching\Cache;
abstract class CacheTest extends TestCase
{
/**
* @var int virtual time to be returned by mocked time() function.
* Null means normal time() behavior.
*/
public static $time;
/**
* @return Cache
*/
abstract protected function getCacheInstance();
......@@ -19,6 +37,11 @@ abstract class CacheTest extends TestCase
$this->mockApplication();
}
protected function tearDown()
{
static::$time = null;
}
/**
* @return Cache
*/
......
<?php
namespace yiiunit\framework\caching;
use yii\caching\DbCache;
use yiiunit\TestCase;
......@@ -70,4 +72,16 @@ class DbCacheTest extends CacheTest
}
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'));
}
}
......@@ -22,4 +22,16 @@ class FileCacheTest extends CacheTest
}
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'));
}
}
......@@ -771,7 +771,7 @@ class View extends Component
if (!empty($this->js[self::POS_HEAD])) {
$lines[] = implode("\n", $this->js[self::POS_HEAD]);
}
return implode("\n", $lines);
return empty($lines) ? '' : implode("\n", $lines) . "\n";
}
/**
......@@ -788,7 +788,7 @@ class View extends Component
if (!empty($this->js[self::POS_BEGIN])) {
$lines[] = implode("\n", $this->js[self::POS_BEGIN]);
}
return implode("\n", $lines);
return empty($lines) ? '' : implode("\n", $lines) . "\n";
}
/**
......@@ -805,6 +805,6 @@ class View extends Component
if (!empty($this->js[self::POS_END])) {
$lines[] = implode("\n", $this->js[self::POS_END]);
}
return implode("\n", $lines);
return empty($lines) ? '' : implode("\n", $lines) . "\n";
}
}
......@@ -146,10 +146,7 @@ class DbManager extends Manager
}
$query = new Query;
$rows = $query->from($this->itemTable)
->where(array('or', 'name=:name1', 'name=:name2'), array(
':name1' => $itemName,
':name2' => $childName
))
->where(array('or', 'name=:name1', 'name=:name2'), array(':name1' => $itemName, ':name2' => $childName))
->createCommand($this->db)
->queryAll();
if (count($rows) == 2) {
......@@ -165,10 +162,7 @@ class DbManager extends Manager
throw new InvalidCallException("Cannot add '$childName' as a child of '$itemName'. A loop has been detected.");
}
$this->db->createCommand()
->insert($this->itemChildTable, array(
'parent' => $itemName,
'child' => $childName,
));
->insert($this->itemChildTable, array('parent' => $itemName, 'child' => $childName));
return true;
} else {
throw new Exception("Either '$itemName' or '$childName' does not exist.");
......@@ -185,10 +179,7 @@ class DbManager extends Manager
public function removeItemChild($itemName, $childName)
{
return $this->db->createCommand()
->delete($this->itemChildTable, array(
'parent' => $itemName,
'child' => $childName
)) > 0;
->delete($this->itemChildTable, array('parent' => $itemName, 'child' => $childName)) > 0;
}
/**
......@@ -202,10 +193,7 @@ class DbManager extends Manager
$query = new Query;
return $query->select(array('parent'))
->from($this->itemChildTable)
->where(array(
'parent' => $itemName,
'child' => $childName
))
->where(array('parent' => $itemName, 'child' => $childName))
->createCommand($this->db)
->queryScalar() !== false;
}
......@@ -220,10 +208,7 @@ class DbManager extends Manager
{
$query = new Query;
$rows = $query->select(array('name', 'type', 'description', 'bizrule', 'data'))
->from(array(
$this->itemTable,
$this->itemChildTable
))
->from(array($this->itemTable, $this->itemChildTable))
->where(array('parent' => $names, 'name' => new Expression('child')))
->createCommand($this->db)
->queryAll();
......@@ -257,7 +242,7 @@ class DbManager extends Manager
'user_id' => $userId,
'item_name' => $itemName,
'bizrule' => $bizRule,
'data' => serialize($data)
'data' => serialize($data),
));
return new Assignment($this, $userId, $itemName, $bizRule, $data);
}
......@@ -271,10 +256,7 @@ class DbManager extends Manager
public function revoke($userId, $itemName)
{
return $this->db->createCommand()
->delete($this->assignmentTable, array(
'user_id' => $userId,
'item_name' => $itemName
)) > 0;
->delete($this->assignmentTable, array('user_id' => $userId, 'item_name' => $itemName)) > 0;
}
/**
......@@ -288,10 +270,7 @@ class DbManager extends Manager
$query = new Query;
return $query->select(array('item_name'))
->from($this->assignmentTable)
->where(array(
'user_id' => $userId,
'item_name' => $itemName
))
->where(array('user_id' => $userId, 'item_name' => $itemName))
->createCommand($this->db)
->queryScalar() !== false;
}
......@@ -307,10 +286,7 @@ class DbManager extends Manager
{
$query = new Query;
$row = $query->from($this->assignmentTable)
->where(array(
'user_id' => $userId,
'item_name' => $itemName
))
->where(array('user_id' => $userId, 'item_name' => $itemName))
->createCommand($this->db)
->queryRow();
if ($row !== false) {
......@@ -358,7 +334,7 @@ class DbManager extends Manager
'data' => serialize($assignment->getData()),
), array(
'user_id' => $assignment->getUserId(),
'item_name' => $assignment->getItemName()
'item_name' => $assignment->getItemName(),
));
}
......@@ -382,23 +358,13 @@ class DbManager extends Manager
->createCommand($this->db);
} elseif ($type === null) {
$command = $query->select(array('name', 'type', 'description', 't1.bizrule', 't1.data'))
->from(array(
$this->itemTable . ' t1',
$this->assignmentTable . ' t2'
))
->from(array($this->itemTable . ' t1', $this->assignmentTable . ' t2'))
->where(array('user_id' => $userId, 'name' => new Expression('item_name')))
->createCommand($this->db);
} else {
$command = $query->select('name', 'type', 'description', 't1.bizrule', 't1.data')
->from(array(
$this->itemTable . ' t1',
$this->assignmentTable . ' t2'
))
->where(array(
'user_id' => $userId,
'type' => $type,
'name' => new Expression('item_name'),
))
->from(array($this->itemTable . ' t1', $this->assignmentTable . ' t2'))
->where(array('user_id' => $userId, 'type' => $type, 'name' => new Expression('item_name')))
->createCommand($this->db);
}
$items = array();
......@@ -434,7 +400,7 @@ class DbManager extends Manager
'type' => $type,
'description' => $description,
'bizrule' => $bizRule,
'data' => serialize($data)
'data' => serialize($data),
));
return new Item($this, $name, $type, $description, $bizRule, $data);
}
......@@ -448,13 +414,12 @@ class DbManager extends Manager
{
if ($this->usingSqlite()) {
$this->db->createCommand()
->delete($this->itemChildTable, array('or', 'parent=:name1', 'child=:name2'), array(
':name1' => $name,
':name2' => $name
));
$this->db->createCommand()->delete($this->assignmentTable, array('item_name' => $name));
->delete($this->itemChildTable, array('or', 'parent=:name', 'child=:name'), array(':name' => $name));
$this->db->createCommand()
->delete($this->assignmentTable, array('item_name' => $name));
}
return $this->db->createCommand()->delete($this->itemTable, array('name' => $name)) > 0;
return $this->db->createCommand()
->delete($this->itemTable, array('name' => $name)) > 0;
}
/**
......@@ -488,23 +453,11 @@ class DbManager extends Manager
{
if ($this->usingSqlite() && $oldName !== null && $item->getName() !== $oldName) {
$this->db->createCommand()
->update($this->itemChildTable, array(
'parent' => $item->getName(),
), array(
'parent' => $oldName,
));
->update($this->itemChildTable, array('parent' => $item->getName()), array('parent' => $oldName));
$this->db->createCommand()
->update($this->itemChildTable, array(
'child' => $item->getName(),
), array(
'child' => $oldName,
));
->update($this->itemChildTable, array('child' => $item->getName()), array('child' => $oldName));
$this->db->createCommand()
->update($this->assignmentTable, array(
'item_name' => $item->getName(),
), array(
'item_name' => $oldName,
));
->update($this->assignmentTable, array('item_name' => $item->getName()), array('item_name' => $oldName));
}
$this->db->createCommand()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment