mirror of
https://github.com/yiisoft/yii2.git
synced 2025-08-15 23:04:54 +08:00
51 lines
1.6 KiB
PHP
51 lines
1.6 KiB
PHP
<?php
|
|
/**
|
|
* @link http://www.yiiframework.com/
|
|
* @copyright Copyright (c) 2008 Yii Software LLC
|
|
* @license http://www.yiiframework.com/license/
|
|
*/
|
|
|
|
namespace yiiunit\framework\db\mysql;
|
|
|
|
use yiiunit\data\ar\Storage;
|
|
|
|
/**
|
|
* @group db
|
|
* @group mysql
|
|
*/
|
|
class ActiveRecordTest extends \yiiunit\framework\db\ActiveRecordTest
|
|
{
|
|
public $driverName = 'mysql';
|
|
|
|
public function testJsonColumn()
|
|
{
|
|
if (version_compare($this->getConnection()->getSchema()->getServerVersion(), '5.7', '<')) {
|
|
$this->markTestSkipped('JSON columns are not supported in MySQL < 5.7');
|
|
}
|
|
if (version_compare(PHP_VERSION, '5.6', '<')) {
|
|
$this->markTestSkipped('JSON columns are not supported in PDO for PHP < 5.6');
|
|
}
|
|
|
|
$data = [
|
|
'obj' => ['a' => ['b' => ['c' => 2.7418]]],
|
|
'array' => [1,2,null,3],
|
|
'null_field' => null,
|
|
'boolean_field' => true,
|
|
'last_update_time' => '2018-02-21',
|
|
];
|
|
|
|
$storage = new Storage(['data' => $data]);
|
|
$this->assertTrue($storage->save(), 'Storage can be saved');
|
|
$this->assertNotNull($storage->id);
|
|
|
|
$retrievedStorage = Storage::findOne($storage->id);
|
|
$this->assertSame($data, $retrievedStorage->data, 'Properties are restored from JSON to array without changes');
|
|
|
|
$retrievedStorage->data = ['updatedData' => $data];
|
|
$this->assertSame(1, $retrievedStorage->update(), 'Storage can be updated');
|
|
|
|
$retrievedStorage->refresh();
|
|
$this->assertSame(['updatedData' => $data], $retrievedStorage->data, 'Properties have been changed during update');
|
|
}
|
|
}
|