mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-03 13:58:55 +08:00
Merge branch 'master' of github.com:yiisoft/yii2
This commit is contained in:
@ -126,8 +126,8 @@ class AssetManager extends Component
|
||||
$config = $this->bundles[$name];
|
||||
if (!isset($config['class'])) {
|
||||
$config['class'] = 'yii\\web\\AssetBundle';
|
||||
$this->bundles[$name] = Yii::createObject($config);
|
||||
}
|
||||
$this->bundles[$name] = Yii::createObject($config);
|
||||
}
|
||||
|
||||
return $this->bundles[$name];
|
||||
|
||||
115
tests/unit/framework/behaviors/AutoTimestampTest.php
Normal file
115
tests/unit/framework/behaviors/AutoTimestampTest.php
Normal file
@ -0,0 +1,115 @@
|
||||
<?php
|
||||
|
||||
namespace yiiunit\framework\behaviors;
|
||||
|
||||
use Yii;
|
||||
use yiiunit\TestCase;
|
||||
use yii\db\Connection;
|
||||
use yii\db\ActiveRecord;
|
||||
use yii\behaviors\AutoTimestamp;
|
||||
|
||||
/**
|
||||
* Unit test for [[\yii\behaviors\AutoTimestamp]].
|
||||
* @see AutoTimestamp
|
||||
*/
|
||||
class AutoTimestampTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @var Connection test db connection
|
||||
*/
|
||||
protected $dbConnection;
|
||||
|
||||
public static function setUpBeforeClass()
|
||||
{
|
||||
if (!extension_loaded('pdo') || !extension_loaded('pdo_sqlite')) {
|
||||
static::markTestSkipped('PDO and SQLite extensions are required.');
|
||||
}
|
||||
}
|
||||
|
||||
public function setUp() {
|
||||
$this->mockApplication(
|
||||
array(
|
||||
'components' => array(
|
||||
'db' => array(
|
||||
'class' => '\yii\db\Connection',
|
||||
'dsn' => 'sqlite::memory:',
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
$columns = array(
|
||||
'id' => 'pk',
|
||||
'create_time' => 'integer',
|
||||
'update_time' => 'integer',
|
||||
);
|
||||
Yii::$app->getDb()->createCommand()->createTable('test_auto_timestamp', $columns)->execute();
|
||||
}
|
||||
|
||||
public function tearDown()
|
||||
{
|
||||
Yii::$app->getDb()->close();
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
// Tests :
|
||||
|
||||
public function testNewRecord()
|
||||
{
|
||||
$currentTime = time();
|
||||
|
||||
$model = new ActiveRecordAutoTimestamp();
|
||||
$model->save(false);
|
||||
|
||||
$this->assertTrue($model->create_time >= $currentTime);
|
||||
$this->assertTrue($model->update_time >= $currentTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testNewRecord
|
||||
*/
|
||||
public function testUpdateRecord()
|
||||
{
|
||||
$currentTime = time();
|
||||
|
||||
$model = new ActiveRecordAutoTimestamp();
|
||||
$model->save(false);
|
||||
|
||||
$enforcedTime = $currentTime - 100;
|
||||
|
||||
$model->create_time = $enforcedTime;
|
||||
$model->update_time = $enforcedTime;
|
||||
$model->save(false);
|
||||
|
||||
$this->assertEquals($enforcedTime, $model->create_time, 'Create time has been set on update!');
|
||||
$this->assertTrue($model->update_time >= $currentTime, 'Update time has NOT been set on update!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test Active Record class with [[AutoTimestamp]] behavior attached.
|
||||
*
|
||||
* @property integer $id
|
||||
* @property integer $create_time
|
||||
* @property integer $update_time
|
||||
*/
|
||||
class ActiveRecordAutoTimestamp extends ActiveRecord
|
||||
{
|
||||
public function behaviors()
|
||||
{
|
||||
return array(
|
||||
'timestamp' => array(
|
||||
'class' => AutoTimestamp::className(),
|
||||
'attributes' => array(
|
||||
static::EVENT_BEFORE_INSERT => array('create_time', 'update_time'),
|
||||
static::EVENT_BEFORE_UPDATE => 'update_time',
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
public static function tableName()
|
||||
{
|
||||
return 'test_auto_timestamp';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user