Model classes tested
This commit is contained in:
207
tests/model/MySQLiDriverTest.php
Normal file
207
tests/model/MySQLiDriverTest.php
Normal file
@ -0,0 +1,207 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @copyright NetMonsters <team@netmonsters.ru>
|
||||
* @link http://netmonsters.ru
|
||||
* @package Majestic
|
||||
* @subpackage UnitTests
|
||||
* @since 2011-11-7
|
||||
*
|
||||
* Unit tests for MySQLiDriver class
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__) . '/../../model/Db.php';
|
||||
require_once dirname(__FILE__) . '/../../model/DbStatement.php';
|
||||
require_once dirname(__FILE__) . '/../../model/MySQLiStatement.php';
|
||||
require_once dirname(__FILE__) . '/../../model/DbDriver.php';
|
||||
require_once dirname(__FILE__) . '/../../model/MySQLiDriver.php';
|
||||
|
||||
class MySQLiDriverTest extends PHPUnit_Extensions_Database_TestCase
|
||||
{
|
||||
static private $pdo = null;
|
||||
|
||||
private $conn = null;
|
||||
|
||||
protected function getConnection()
|
||||
{
|
||||
if ($this->conn === null) {
|
||||
if (self::$pdo == null) {
|
||||
self::$pdo = new PDO($GLOBALS['DB_DSN'], $GLOBALS['DB_USER'], $GLOBALS['DB_PASSWD']);
|
||||
}
|
||||
$this->conn = $this->createDefaultDBConnection(self::$pdo, $GLOBALS['DB_DBNAME']);
|
||||
}
|
||||
|
||||
return $this->conn;
|
||||
}
|
||||
|
||||
protected function getDataSet()
|
||||
{
|
||||
return $this->createFlatXMLDataSet(dirname(__FILE__) . '/testData.xml');
|
||||
}
|
||||
|
||||
public function run(PHPUnit_Framework_TestResult $result = NULL)
|
||||
{
|
||||
$this->setPreserveGlobalState(false);
|
||||
return parent::run($result);
|
||||
}
|
||||
|
||||
public function testDriver()
|
||||
{
|
||||
if (!defined('DEBUG')) {
|
||||
define('DEBUG', false);
|
||||
}
|
||||
|
||||
$conf = array('hostname' => 'localhost', 'database' => 'testdb', 'username' => 'root', 'password' => '1234');
|
||||
$driver = new MySQLiDriver($conf);
|
||||
|
||||
$queryTable = $this->getConnection()->createQueryTable(
|
||||
'table', 'SELECT * FROM `table`'
|
||||
);
|
||||
$expectedTable = $this->createFlatXmlDataSet(dirname(__FILE__) . '/testData.xml')
|
||||
->getTable("table");
|
||||
$this->assertTablesEqual($expectedTable, $queryTable);
|
||||
|
||||
$this->assertEquals(1, $driver->insert('table', array('id' => 3, 'user' => 'tony', 'content' => 'some test content', 'created' => '2011-11-07 11:35:20')));
|
||||
$this->assertEquals(3, $this->getConnection()->getRowCount('table'));
|
||||
}
|
||||
|
||||
public function testGetConnection()
|
||||
{
|
||||
if (!defined('DEBUG')) {
|
||||
define('DEBUG', false);
|
||||
}
|
||||
|
||||
$conf = array('hostname' => 'localhost', 'database' => 'testdb', 'username' => 'root', 'password' => '1234');
|
||||
$driver = new MySQLiDriver($conf);
|
||||
$this->assertInstanceOf('mysqli', $driver->getConnection());
|
||||
$this->assertTrue($driver->isConnected());
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException Exception
|
||||
* @expectedExceptionMessage Unknown database
|
||||
*/
|
||||
public function testGetConnectionWrongConfig()
|
||||
{
|
||||
if (!defined('DEBUG')) {
|
||||
define('DEBUG', false);
|
||||
}
|
||||
|
||||
$conf = array('hostname' => 'localhost', 'database' => 'nodb', 'username' => 'root', 'password' => '1234');
|
||||
$driver = new MySQLiDriver($conf);
|
||||
$this->assertNull('mysqli', $driver->getConnection());
|
||||
}
|
||||
|
||||
public function testDisconnect()
|
||||
{
|
||||
if (!defined('DEBUG')) {
|
||||
define('DEBUG', false);
|
||||
}
|
||||
|
||||
$conf = array('hostname' => 'localhost', 'database' => 'testdb', 'username' => 'root', 'password' => '1234');
|
||||
$driver = new MySQLiDriver($conf);
|
||||
|
||||
$driver->disconnect();
|
||||
$this->assertAttributeEquals(null, 'connection', $driver);
|
||||
|
||||
$this->assertInstanceOf('mysqli', $driver->getConnection());
|
||||
$this->assertAttributeInstanceOf('mysqli', 'connection', $driver);
|
||||
$driver->disconnect();
|
||||
$this->assertAttributeEquals(null, 'connection', $driver);
|
||||
}
|
||||
|
||||
public function testInsert()
|
||||
{
|
||||
if (!defined('DEBUG')) {
|
||||
define('DEBUG', false);
|
||||
}
|
||||
|
||||
$conf = array('hostname' => 'localhost', 'database' => 'testdb', 'username' => 'root', 'password' => '1234');
|
||||
$driver = new MySQLiDriver($conf);
|
||||
$this->assertEquals(1, $driver->insert('table', array('id' => 3, 'user' => 'tony', 'content' => 'some test content', 'created' => '2011-11-07 11:35:20')));
|
||||
$this->assertEquals(3, $driver->getInsertId());
|
||||
$this->assertEquals(1, $driver->insert('table', array('id' => null, 'user' => 'tony', 'content' => 'some test content', 'created' => '2011-11-07 11:35:20')));
|
||||
$this->assertEquals(4, $driver->getInsertId());
|
||||
$this->assertEquals(1, $driver->insert('table', array('id' => null, 'user' => true, 'content' => 'some test content', 'created' => '2011-11-07 11:35:20')));
|
||||
$this->assertEquals(5, $driver->getInsertId());
|
||||
$this->assertEquals(2, $driver->insert('table', array('id' => '5', 'user' => true, 'content' => 'some test content', 'created' => '2011-11-07 11:35:20'), array('id' => 8)));
|
||||
$this->assertEquals(8, $driver->getInsertId());
|
||||
}
|
||||
|
||||
/**
|
||||
* @TODO: DbDriver::getInsertId($table = null, $key = null) - params not used
|
||||
*/
|
||||
public function testGetInsertId()
|
||||
{
|
||||
if (!defined('DEBUG')) {
|
||||
define('DEBUG', false);
|
||||
}
|
||||
|
||||
$conf = array('hostname' => 'localhost', 'database' => 'testdb', 'username' => 'root', 'password' => '1234');
|
||||
$driver = new MySQLiDriver($conf);
|
||||
|
||||
$this->assertEquals(1, $driver->insert('table', array('id' => 3, 'user' => 'tony', 'content' => 'some test content', 'created' => '2011-11-07 11:35:20')));
|
||||
$this->assertEquals(3, $driver->getInsertId());
|
||||
}
|
||||
|
||||
public function testTransaction()
|
||||
{
|
||||
if (!defined('DEBUG')) {
|
||||
define('DEBUG', false);
|
||||
}
|
||||
|
||||
$conf = array('hostname' => 'localhost', 'database' => 'testdb', 'username' => 'root', 'password' => '1234');
|
||||
$driver = new MySQLiDriver($conf);
|
||||
|
||||
$queryTable = $this->getConnection()->createQueryTable(
|
||||
'table', 'SELECT * FROM `table`'
|
||||
);
|
||||
$expectedTable = $this->createFlatXmlDataSet(dirname(__FILE__) . '/testData.xml')
|
||||
->getTable("table");
|
||||
$this->assertTablesEqual($expectedTable, $queryTable);
|
||||
|
||||
$driver->getConnection();
|
||||
$driver->beginTransaction();
|
||||
$driver->insert('table', array('id' => null, 'user' => 'tony', 'content' => 'some test content', 'created' => '2011-11-07 11:35:20'));
|
||||
$driver->insert('table', array('id' => null, 'user' => 'tony', 'content' => 'some test content', 'created' => '2011-11-07 11:35:20'));
|
||||
$driver->insert('table', array('id' => null, 'user' => 'tony', 'content' => 'some test content', 'created' => '2011-11-07 11:35:20'));
|
||||
$driver->insert('table', array('id' => null, 'user' => 'tony', 'content' => 'some test content', 'created' => '2011-11-07 11:35:20'));
|
||||
|
||||
$queryTable = $this->getConnection()->createQueryTable(
|
||||
'table', 'SELECT * FROM `table`'
|
||||
);
|
||||
$driver->commit();
|
||||
$expectedTable = $this->createFlatXmlDataSet(dirname(__FILE__) . '/testDataAfterCommit.xml')
|
||||
->getTable("table");
|
||||
$this->assertTablesEqual($expectedTable, $queryTable);
|
||||
}
|
||||
|
||||
public function testRollback()
|
||||
{
|
||||
if (!defined('DEBUG')) {
|
||||
define('DEBUG', false);
|
||||
}
|
||||
|
||||
$conf = array('hostname' => 'localhost', 'database' => 'testdb', 'username' => 'root', 'password' => '1234');
|
||||
$driver = new MySQLiDriver($conf);
|
||||
|
||||
$queryTable = $this->getConnection()->createQueryTable(
|
||||
'table', 'SELECT * FROM `table`'
|
||||
);
|
||||
$expectedTable = $this->createFlatXmlDataSet(dirname(__FILE__) . '/testData.xml')
|
||||
->getTable("table");
|
||||
$this->assertTablesEqual($expectedTable, $queryTable);
|
||||
|
||||
$driver->getConnection();
|
||||
$driver->beginTransaction();
|
||||
$driver->insert('table', array('id' => null, 'user' => 'tony', 'content' => 'some test content', 'created' => '2011-11-07 11:35:20'));
|
||||
$driver->insert('table', array('id' => null, 'user' => 'tony', 'content' => 'some test content', 'created' => '2011-11-07 11:35:20'));
|
||||
$driver->insert('table', array('id' => null, 'user' => 'tony', 'content' => 'some test content', 'created' => '2011-11-07 11:35:20'));
|
||||
$driver->insert('table', array('id' => null, 'user' => 'tony', 'content' => 'some test content', 'created' => '2011-11-07 11:35:20'));
|
||||
$driver->rollback();
|
||||
$queryTable = $this->getConnection()->createQueryTable(
|
||||
'table', 'SELECT * FROM `table`'
|
||||
);
|
||||
$this->assertTablesEqual($expectedTable, $queryTable);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user