* @link http://netmonsters.ru * @package Majestic * @subpackage UnitTests * @since 2011-11-1 * * Unit tests for Db class */ require_once dirname(__FILE__) . '/../../Registry.php'; require_once dirname(__FILE__) . '/../../Config.php'; require_once dirname(__FILE__) . '/../../model/DbDriver.php'; require_once dirname(__FILE__) . '/../../model/Db.php'; require_once dirname(__FILE__) . '/../../exception/GeneralException.php'; class DbTest extends PHPUnit_Framework_TestCase { /** * @expectedException GeneralException * @expectedExceptionMessage Trying to get property of non-object */ public function testConnectNoParams() { Db::connect(); } /** * @expectedException GeneralException * @expectedExceptionMessage Connection parameters must be an array */ public function testConnectConfigNotArray() { Db::connect('name', 'config'); } public function testConnectGlobalConfig() { $conf = array('hostname' => 'localhost', 'driver' => 'MySQLiDriverGlobalConfMock', 'database' => 'db', 'username' => 'test', 'password' => '1234'); $this->getMockForAbstractClass('DbDriver', array(), 'MySQLiDriverGlobalConfMock', false); Config::set('Db', array('global' =>$conf)); Db::connect('global'); } public function testConnectWithConfigParam() { $conf = array('hostname' => 'localhost', 'driver' => 'MySQLiDriverMock', 'database' => 'db', 'username' => 'test', 'password' => '1234'); $this->getMockForAbstractClass('DbDriver', array(), 'MySQLiDriverMock', false); $driver = Db::connect('mysql', $conf); $this->assertInstanceOf('DbDriver', $driver); } /** * @expectedException GeneralException * @expectedExceptionMessage Database driver must extends DbDriver */ public function testConnectWithWrongDriver() { $this->getMock('NotDbDriver', array(), array(), 'NoDbDriverMock'); $driver = Db::connect('nodb', array('hostname' => 'localhost', 'driver' => 'NoDbDriverMock')); } }