Commit 533f3db4 by Qiang Xue

Merge pull request #202 from rusmaxim/15-unit-tests-of-sqlite-driver

Added and resolved Sqlite tests #15.
parents b6e00221 238684d6
<?php
namespace yiiunit;
class DatabaseTestCase extends TestCase
{
protected $database;
protected $driverName = 'mysql';
protected $db;
protected function setUp()
{
$databases = $this->getParam('databases');
$this->database = $databases[$this->driverName];
$pdo_database = 'pdo_'.$this->driverName;
if (!extension_loaded('pdo') || !extension_loaded($pdo_database)) {
$this->markTestSkipped('pdo and pdo_'.$pdo_database.' extension are required.');
}
}
/**
* @param bool $reset whether to clean up the test database
* @param bool $open whether to open and populate test database
* @return \yii\db\Connection
*/
public function getConnection($reset = true, $open = true)
{
if (!$reset && $this->db) {
return $this->db;
}
$db = new \yii\db\Connection;
$db->dsn = $this->database['dsn'];
if (isset($this->database['username'])) {
$db->username = $this->database['username'];
$db->password = $this->database['password'];
}
if ($open) {
$db->open();
$lines = explode(';', file_get_contents($this->database['fixture']));
foreach ($lines as $line) {
if (trim($line) !== '') {
$db->pdo->exec($line);
}
}
}
$this->db = $db;
return $db;
}
}
<?php <?php
return array( return array(
'mysql' => array( 'databases' => array(
'dsn' => 'mysql:host=127.0.0.1;dbname=yiitest', 'mysql' => array(
'username' => 'travis', 'dsn' => 'mysql:host=127.0.0.1;dbname=yiitest',
'password' => '', 'username' => 'travis',
'fixture' => __DIR__ . '/mysql.sql', 'password' => '',
), 'fixture' => __DIR__ . '/mysql.sql',
),
'sqlite' => array(
'dsn' => 'sqlite::memory:',
'fixture' => __DIR__ . '/sqlite.sql',
),
)
); );
/** /**
* This is the database schema for testing MySQL support of Yii DAO and Active Record. * This is the database schema for testing MySQL support of Yii DAO and Active Record.
* The following database setup is required to perform then relevant tests: * The database setup in config.php is required to perform then relevant tests:
* Database name: yiitest
* username: test
* password: test
* charset: utf8
*/ */
DROP TABLE IF EXISTS tbl_order_item CASCADE; DROP TABLE IF EXISTS tbl_order_item CASCADE;
......
...@@ -35,7 +35,8 @@ class DbCacheTest extends CacheTest ...@@ -35,7 +35,8 @@ class DbCacheTest extends CacheTest
function getConnection($reset = true) function getConnection($reset = true)
{ {
if($this->_connection === null) { if($this->_connection === null) {
$params = $this->getParam('mysql'); $databases = $this->getParam('databases');
$params = $databases['mysql'];
$db = new \yii\db\Connection; $db = new \yii\db\Connection;
$db->dsn = $params['dsn']; $db->dsn = $params['dsn'];
$db->username = $params['username']; $db->username = $params['username'];
......
...@@ -10,10 +10,11 @@ use yiiunit\data\ar\OrderItem; ...@@ -10,10 +10,11 @@ use yiiunit\data\ar\OrderItem;
use yiiunit\data\ar\Order; use yiiunit\data\ar\Order;
use yiiunit\data\ar\Item; use yiiunit\data\ar\Item;
class ActiveRecordTest extends \yiiunit\MysqlTestCase class ActiveRecordTest extends \yiiunit\DatabaseTestCase
{ {
public function setUp() public function setUp()
{ {
parent::setUp();
ActiveRecord::$db = $this->getConnection(); ActiveRecord::$db = $this->getConnection();
} }
......
...@@ -7,7 +7,7 @@ use yii\db\Command; ...@@ -7,7 +7,7 @@ use yii\db\Command;
use yii\db\Query; use yii\db\Query;
use yii\db\DataReader; use yii\db\DataReader;
class CommandTest extends \yiiunit\MysqlTestCase class CommandTest extends \yiiunit\DatabaseTestCase
{ {
function testConstruct() function testConstruct()
{ {
......
...@@ -4,12 +4,12 @@ namespace yiiunit\framework\db; ...@@ -4,12 +4,12 @@ namespace yiiunit\framework\db;
use yii\db\Connection; use yii\db\Connection;
class ConnectionTest extends \yiiunit\MysqlTestCase class ConnectionTest extends \yiiunit\DatabaseTestCase
{ {
function testConstruct() function testConstruct()
{ {
$connection = $this->getConnection(false); $connection = $this->getConnection(false);
$params = $this->getParam('mysql'); $params = $this->database;
$this->assertEquals($params['dsn'], $connection->dsn); $this->assertEquals($params['dsn'], $connection->dsn);
$this->assertEquals($params['username'], $connection->username); $this->assertEquals($params['username'], $connection->username);
...@@ -18,7 +18,7 @@ class ConnectionTest extends \yiiunit\MysqlTestCase ...@@ -18,7 +18,7 @@ class ConnectionTest extends \yiiunit\MysqlTestCase
function testOpenClose() function testOpenClose()
{ {
$connection = $this->getConnection(false); $connection = $this->getConnection(false, false);
$this->assertFalse($connection->isActive); $this->assertFalse($connection->isActive);
$this->assertEquals(null, $connection->pdo); $this->assertEquals(null, $connection->pdo);
...@@ -39,9 +39,8 @@ class ConnectionTest extends \yiiunit\MysqlTestCase ...@@ -39,9 +39,8 @@ class ConnectionTest extends \yiiunit\MysqlTestCase
function testGetDriverName() function testGetDriverName()
{ {
$connection = $this->getConnection(false); $connection = $this->getConnection(false, false);
$this->assertEquals('mysql', $connection->driverName); $this->assertEquals($this->driverName, $connection->driverName);
$this->assertFalse($connection->isActive);
} }
function testQuoteValue() function testQuoteValue()
......
...@@ -7,7 +7,7 @@ use yii\db\Command; ...@@ -7,7 +7,7 @@ use yii\db\Command;
use yii\db\Query; use yii\db\Query;
use yii\db\DataReader; use yii\db\DataReader;
class QueryTest extends \yiiunit\MysqlTestCase class QueryTest extends \yiiunit\DatabaseTestCase
{ {
function testSelect() function testSelect()
{ {
......
<?php
namespace yiiunit\framework\db\sqlite;
class SqliteActiveRecordTest extends \yiiunit\framework\db\ActiveRecordTest
{
public function setUp()
{
$this->driverName = 'sqlite';
parent::setUp();
}
}
<?php
namespace yiiunit\framework\db\sqlite;
class SqliteCommandTest extends \yiiunit\framework\db\CommandTest
{
public function setUp()
{
$this->driverName = 'sqlite';
parent::setUp();
}
function testAutoQuoting()
{
$db = $this->getConnection(false);
$sql = 'SELECT [[id]], [[t.name]] FROM {{tbl_customer}} t';
$command = $db->createCommand($sql);
$this->assertEquals("SELECT \"id\", 't'.\"name\" FROM 'tbl_customer' t", $command->sql);
}
}
<?php
namespace yiiunit\framework\db\sqlite;
class SqliteConnectionTest extends \yiiunit\framework\db\ConnectionTest
{
public function setUp()
{
$this->driverName = 'sqlite';
parent::setUp();
}
function testConstruct()
{
$connection = $this->getConnection(false);
$params = $this->database;
$this->assertEquals($params['dsn'], $connection->dsn);
}
function testQuoteValue()
{
$connection = $this->getConnection(false);
$this->assertEquals(123, $connection->quoteValue(123));
$this->assertEquals("'string'", $connection->quoteValue('string'));
$this->assertEquals("'It''s interesting'", $connection->quoteValue("It's interesting"));
}
function testQuoteTableName()
{
$connection = $this->getConnection(false);
$this->assertEquals("'table'", $connection->quoteTableName('table'));
$this->assertEquals("'schema'.'table'", $connection->quoteTableName('schema.table'));
$this->assertEquals('{{table}}', $connection->quoteTableName('{{table}}'));
$this->assertEquals('(table)', $connection->quoteTableName('(table)'));
}
function testQuoteColumnName()
{
$connection = $this->getConnection(false);
$this->assertEquals('"column"', $connection->quoteColumnName('column'));
$this->assertEquals("'table'.\"column\"", $connection->quoteColumnName('table.column'));
$this->assertEquals('[[column]]', $connection->quoteColumnName('[[column]]'));
$this->assertEquals('{{column}}', $connection->quoteColumnName('{{column}}'));
$this->assertEquals('(column)', $connection->quoteColumnName('(column)'));
}
}
<?php
/**
* Created by JetBrains PhpStorm.
* User: RusMaxim
* Date: 09.05.13
* Time: 21:41
* To change this template use File | Settings | File Templates.
*/
namespace yiiunit\framework\db\sqlite;
class SqliteQueryTest extends \yiiunit\framework\db\QueryTest
{
public function setUp()
{
$this->driverName = 'sqlite';
parent::setUp();
}
}
...@@ -169,7 +169,7 @@ class Schema extends \yii\db\Schema ...@@ -169,7 +169,7 @@ class Schema extends \yii\db\Schema
} }
} }
} }
$column->phpType = $this->getColumnPhpType($this->type); $column->phpType = $this->getColumnPhpType($column);
$value = $info['dflt_value']; $value = $info['dflt_value'];
if ($column->type === 'string') { if ($column->type === 'string') {
......
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