diff --git a/.travis.yml b/.travis.yml index 3838fc8..a757fc0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,5 @@ +sudo: false + language: php php: @@ -15,7 +17,7 @@ before_script: script: - mkdir -p build/logs - - cd tests && phpunit --coverage-clover build/logs/clover.xml + - phpunit --coverage-clover build/logs/clover.xml after_script: - wget https://scrutinizer-ci.com/ocular.phar diff --git a/Query/Abstract_Driver.php b/Query/Abstract_Driver.php index 1cb518c..4be2106 100644 --- a/Query/Abstract_Driver.php +++ b/Query/Abstract_Driver.php @@ -41,13 +41,13 @@ abstract class Abstract_Driver extends \PDO implements Driver_Interface { /** * Reference to sql class - * @var SQL\SQL_Interface + * @var SQL_Interface */ - public $sql; + protected $sql; /** * Reference to util class - * @var Util\Abstract_Util + * @var Abstract_Util */ public $util; diff --git a/Query/Connection_Manager.php b/Query/Connection_Manager.php index 3c23297..134c78d 100644 --- a/Query/Connection_Manager.php +++ b/Query/Connection_Manager.php @@ -123,7 +123,6 @@ final class Connection_Manager { $dbtype = ucfirst($dbtype); $driver = "\\Query\\Drivers\\{$dbtype}\\Driver"; -//echo $driver . "\n"; // Create the database connection $db = ( ! empty($params->user)) @@ -158,7 +157,7 @@ final class Connection_Manager { /** * Parses params into a dsn and option array * - * @param \stdClass $params + * @param \stdClass $set_params * @return array * @throws BadDBDriverException */ @@ -183,7 +182,15 @@ final class Connection_Manager { } // Create the dsn for the database to connect to - $dsn = $this->create_dsn($dbtype, $params); + if (strtolower($dbtype) === 'firebird') + { + $dsn = "{$params->host}:{$params->file}"; + } + else + { + $dsn = $this->create_dsn($dbtype, $params); + } + return array($dsn, $dbtype, $params, $options); } @@ -199,10 +206,14 @@ final class Connection_Manager { */ private function create_dsn($dbtype, \stdClass $params) { - if ($dbtype === 'firebird') $dsn = "{$params->host}:{$params->file}"; - elseif ($dbtype === 'sqlite') $dsn = $params->file; + if ($dbtype === 'sqlite') + { + $dsn = $params->file; + } else { + if (strtolower($dbtype) === 'pdo_firebird') $dbtype = 'firebird'; + $dsn = strtolower($dbtype) . ':'; if ( ! empty($params->database)) @@ -224,7 +235,7 @@ final class Connection_Manager { foreach($params as $key => $val) { - if ( ! isset($skip[$key])) + if (( ! array_key_exists($key, $skip)) && ! empty($val)) { $dsn .= ";{$key}={$val}"; } diff --git a/Query/Drivers/Firebird/Driver.php b/Query/Drivers/Firebird/Driver.php index c044c7f..2bbb055 100644 --- a/Query/Drivers/Firebird/Driver.php +++ b/Query/Drivers/Firebird/Driver.php @@ -80,7 +80,6 @@ class Driver extends \Query\Abstract_Driver { */ public function __construct($dbpath, $user='SYSDBA', $pass='masterkey', array $options = array()) { - $connect_function = (isset($options[\PDO::ATTR_PERSISTENT]) && $options[\PDO::ATTR_PERSISTENT] == TRUE) ? '\\fbird_pconnect' : '\\fbird_connect'; @@ -195,7 +194,7 @@ class Driver extends \Query\Abstract_Driver { $err_string = \fbird_errmsg() . "Last query:" . $this->last_query; if ($this->statement_link === FALSE) throw new \PDOException($err_string, \fbird_errcode(), NULL); - $this->statement = new FireBird_Result($this->statement_link, $this); + $this->statement = new Result($this->statement_link, $this); return $this->statement; } @@ -217,7 +216,7 @@ class Driver extends \Query\Abstract_Driver { // Throw the error as an exception if ($this->statement_link === FALSE) throw new \PDOException(\fbird_errmsg(), \fbird_errcode(), NULL); - $this->statement = new FireBird_Result($this->statement_link, $this); + $this->statement = new Result($this->statement_link, $this); return $this->statement; } diff --git a/Query/Drivers/Firebird/Result.php b/Query/Drivers/Firebird/Result.php index 21a0770..89f14f2 100644 --- a/Query/Drivers/Firebird/Result.php +++ b/Query/Drivers/Firebird/Result.php @@ -60,7 +60,7 @@ class Result extends \PDOStatement { * @param \Query\Driver\Firebird|null $db * @return void */ - public function __construct($link, Firebird $db = NULL) + public function __construct($link, Driver $db = NULL) { if ( ! is_null($db)) $this->db = $db; $this->statement = $link; diff --git a/Query/Drivers/Firebird/Util.php b/Query/Drivers/Firebird/Util.php index 669e958..ef55fe8 100644 --- a/Query/Drivers/Firebird/Util.php +++ b/Query/Drivers/Firebird/Util.php @@ -13,7 +13,7 @@ // -------------------------------------------------------------------------- -namespace Query\Drivers\Util; +namespace Query\Drivers\Firebird; /** * Firebird-specific backup, import and creation methods @@ -21,7 +21,7 @@ namespace Query\Drivers\Util; * @package Query * @subpackage Drivers */ -class Firebird extends \Query\Abstract_Util { +class Util extends \Query\Abstract_Util { /** * Convenience public function to generate sql for creating a db table diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..182d28f --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,40 @@ + + + + + + coverage + docs + tests + + + + + tests/core/core.php + tests/core/db_qp_test.php + + + tests/databases/mysql/MySQLTest.php + tests/databases/mysql/MySQLQBTest.php + + + tests/databases/pgsql/PgSQLTest.php + tests/databases/pgsql/PgSQLQBTest.php + + + tests/databases/sqlite/SQLiteTest.php + tests/databases/sqlite/SQLiteQBTest.php + + + tests/databases/firebird/FirebirdTest.php + tests/databases/firebird/FirebirdQBTest.php + + + + \ No newline at end of file diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 11d46ed..772e34a 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -102,23 +102,4 @@ require_once(QTEST_DIR . '/core/db_test.php'); require_once(QTEST_DIR . '/core/db_qp_test.php'); require_once(QTEST_DIR . '/core/db_qb_test.php'); -// Preset SQLite connection, so there aren't locking issues -if (extension_loaded('pdo_sqlite')) -{ - $path = QTEST_DIR.QDS.'db_files'.QDS.'test_sqlite.db'; - @unlink($path); - $params = array( - 'type' => 'sqlite', - 'file' => ':memory:', - 'host' => 'localhost', - 'prefix' => 'create_', - 'alias' => 'test_sqlite', - 'options' => array( - PDO::ATTR_PERSISTENT => TRUE - ) - ); - - Query($params); -} - // End of bootstrap.php \ No newline at end of file diff --git a/tests/core/db_test.php b/tests/core/db_test.php index 93b9d33..f41b3ae 100644 --- a/tests/core/db_test.php +++ b/tests/core/db_test.php @@ -18,20 +18,22 @@ */ abstract class DBTest extends Query_TestCase { + protected static $db = NULL; + abstract public function testConnection(); // -------------------------------------------------------------------------- - public function tearDown() + public static function tearDownAfterClass() { - $this->db = NULL; + self::$db = NULL; } // -------------------------------------------------------------------------- public function testGetTables() { - $tables = $this->db->get_tables(); + $tables = self::$db->get_tables(); $this->assertTrue(is_array($tables)); $this->assertTrue( ! empty($tables)); } @@ -40,7 +42,7 @@ abstract class DBTest extends Query_TestCase { public function testGetSystemTables() { - $tables = $this->db->get_system_tables(); + $tables = self::$db->get_system_tables(); $this->assertTrue(is_array($tables)); $this->assertTrue( ! empty($tables)); } @@ -49,14 +51,14 @@ abstract class DBTest extends Query_TestCase { public function testBackupData() { - $this->assertTrue(is_string($this->db->util->backup_data(array('create_delete', TRUE)))); + $this->assertTrue(is_string(self::$db->util->backup_data(array('create_delete', TRUE)))); } // -------------------------------------------------------------------------- public function testGetColumns() { - $cols = $this->db->get_columns('test'); + $cols = self::$db->get_columns('test'); $this->assertTrue(is_array($cols)); $this->assertTrue( ! empty($cols)); } @@ -65,7 +67,7 @@ abstract class DBTest extends Query_TestCase { public function testGetTypes() { - $types = $this->db->get_types(); + $types = self::$db->get_types(); $this->assertTrue(is_array($types)); $this->assertTrue( ! empty($types)); } @@ -82,7 +84,7 @@ abstract class DBTest extends Query_TestCase { 'delete' => 'CASCADE' )); - $keys = $this->db->get_fks('testconstraints2'); + $keys = self::$db->get_fks('testconstraints2'); $this->assertEqual($expected, $keys); } @@ -90,7 +92,7 @@ abstract class DBTest extends Query_TestCase { public function testGetIndexes() { - $keys = $this->db->get_indexes('test'); + $keys = self::$db->get_indexes('test'); $this->assertTrue(is_array($keys)); } @@ -98,7 +100,7 @@ abstract class DBTest extends Query_TestCase { public function testGetViews() { - $views = $this->db->get_views(); + $views = self::$db->get_views(); $expected = array('numbersview', 'testview'); $this->assertEqual($expected, array_values($views)); $this->assertTrue(is_array($views)); @@ -110,7 +112,7 @@ abstract class DBTest extends Query_TestCase { { // @TODO standardize trigger output for different databases - $triggers = $this->db->get_triggers(); + $triggers = self::$db->get_triggers(); $this->assertTrue(is_array($triggers)); } @@ -118,7 +120,7 @@ abstract class DBTest extends Query_TestCase { public function testGetSequences() { - $seqs = $this->db->get_sequences(); + $seqs = self::$db->get_sequences(); // Normalize sequence names $seqs = array_map('strtolower', $seqs); @@ -133,7 +135,7 @@ abstract class DBTest extends Query_TestCase { public function testGetProcedures() { - $procedures = $this->db->get_procedures(); + $procedures = self::$db->get_procedures(); $this->assertTrue(is_array($procedures)); } @@ -141,7 +143,7 @@ abstract class DBTest extends Query_TestCase { public function testGetFunctions() { - $funcs = $this->db->get_functions(); + $funcs = self::$db->get_functions(); $this->assertTrue(is_array($funcs)); } } diff --git a/tests/databases/firebird/FirebirdQBTest.php b/tests/databases/firebird/FirebirdQBTest.php index 654f8e8..28f6122 100644 --- a/tests/databases/firebird/FirebirdQBTest.php +++ b/tests/databases/firebird/FirebirdQBTest.php @@ -21,13 +21,13 @@ class FirebirdQBTest extends QBTest { public function setUp() { - $dbpath = QTEST_DIR.QDS.'db_files'.QDS.'FB_TEST_DB.FDB'; - if ( ! function_exists('\\fbird_connect')) { $this->markTestSkipped('Firebird extension does not exist'); } + $dbpath = QTEST_DIR.QDS.'db_files'.QDS.'FB_TEST_DB.FDB'; + // test the query builder $params = new Stdclass(); $params->alias = 'fire'; @@ -44,7 +44,7 @@ class FirebirdQBTest extends QBTest { { try { - $db = Query('fire'); + $db = Query('water'); } catch(InvalidArgumentException $e) { @@ -52,13 +52,20 @@ class FirebirdQBTest extends QBTest { } } + public function testQueryFunctionAlias() + { + $db = Query(); + + $this->assertTrue($this->db === $db); + } + public function testGetNamedConnection() { $dbpath = QTEST_DIR.QDS.'db_files'.QDS.'FB_TEST_DB.FDB'; // test the query builder $params = new Stdclass(); - $params->alias = 'fire'; + $params->alias = 'wood'; $params->type = 'firebird'; $params->file = $dbpath; $params->host = 'localhost'; @@ -66,7 +73,7 @@ class FirebirdQBTest extends QBTest { $params->pass = 'masterkey'; $params->prefix = ''; $f_conn = Query($params); - $q_conn = Query('fire'); + $q_conn = Query('wood'); $this->assertReference($f_conn, $q_conn); } @@ -131,7 +138,6 @@ class FirebirdQBTest extends QBTest { public function testBackupStructure() { - $existing = QTEST_DIR.QDS.'db_files'.QDS.'FB_TEST_DB.FDB'; $backup = QTEST_DIR.QDS.'db_files'.QDS.'FB_TEST_BKP.FDB'; diff --git a/tests/databases/firebird/FirebirdTest.php b/tests/databases/firebird/FirebirdTest.php index 6ba1faf..915e8c7 100644 --- a/tests/databases/firebird/FirebirdTest.php +++ b/tests/databases/firebird/FirebirdTest.php @@ -23,26 +23,29 @@ */ class FirebirdTest extends DBtest { - public function setUp() + public static function setupBeforeClass() { $dbpath = QTEST_DIR.QDS.'db_files'.QDS.'FB_TEST_DB.FDB'; + // test the db driver directly + self::$db = new \Query\Drivers\Firebird\Driver('localhost:'.$dbpath); + self::$db->table_prefix = 'create_'; + } + + public function setUp() + { if ( ! function_exists('\\fbird_connect')) { $this->markTestSkipped('Firebird extension does not exist'); } - // test the db driver directly - $this->db = new \Query\Drivers\Firebird\Driver('localhost:'.$dbpath); - $this->db->table_prefix = 'create_'; - $this->tables = $this->db->get_tables(); + $this->tables = self::$db->get_tables(); } // -------------------------------------------------------------------------- public function tearDown() { - unset($this->db); unset($this->tables); } @@ -53,7 +56,7 @@ class FirebirdTest extends DBtest { */ public function testNullResultMethods() { - $obj = $this->db->query('SELECT "id" FROM "create_test"'); + $obj = self::$db->query('SELECT "id" FROM "create_test"'); $val = "bar"; @@ -75,7 +78,7 @@ class FirebirdTest extends DBtest { public function testConnection() { - $this->assertIsA($this->db, '\\Query\\Drivers\\Firebird\\Driver'); + $this->assertIsA(self::$db, '\\Query\\Drivers\\Firebird\\Driver'); } // -------------------------------------------------------------------------- @@ -84,7 +87,7 @@ class FirebirdTest extends DBtest { { $only_system = TRUE; - $tables = $this->db->get_system_tables(); + $tables = self::$db->get_system_tables(); foreach($tables as $t) { @@ -105,15 +108,15 @@ class FirebirdTest extends DBtest { public function testCreateTable() { //Attempt to create the table - $sql = $this->db->util->create_table('create_delete', array( + $sql = self::$db->util->create_table('create_delete', array( 'id' => 'SMALLINT', 'key' => 'VARCHAR(64)', 'val' => 'BLOB SUB_TYPE TEXT' )); - $this->db->query($sql); + self::$db->query($sql); //Check - $this->assertTrue(in_array('create_delete', $this->db->get_tables())); + $this->assertTrue(in_array('create_delete', self::$db->get_tables())); } // -------------------------------------------------------------------------- @@ -121,11 +124,11 @@ class FirebirdTest extends DBtest { public function testDeleteTable() { //Attempt to delete the table - $sql = $this->db->util->delete_table('create_delete'); - $this->db->query($sql); + $sql = self::$db->util->delete_table('create_delete'); + self::$db->query($sql); //Check - $table_exists = in_array('create_delete', $this->db->get_tables()); + $table_exists = in_array('create_delete', self::$db->get_tables()); $this->assertFalse($table_exists); } @@ -133,21 +136,21 @@ class FirebirdTest extends DBtest { public function testTruncate() { - $this->db->truncate('create_test'); + self::$db->truncate('create_test'); - $this->assertTrue($this->db->affected_rows() > 0); + $this->assertTrue(self::$db->affected_rows() > 0); } // -------------------------------------------------------------------------- public function testCommitTransaction() { - $res = $this->db->beginTransaction(); + $res = self::$db->beginTransaction(); $sql = 'INSERT INTO "create_test" ("id", "key", "val") VALUES (10, 12, 14)'; - $this->db->query($sql); + self::$db->query($sql); - $res = $this->db->commit(); + $res = self::$db->commit(); $this->assertTrue($res); } @@ -155,12 +158,12 @@ class FirebirdTest extends DBtest { public function testRollbackTransaction() { - $res = $this->db->beginTransaction(); + $res = self::$db->beginTransaction(); $sql = 'INSERT INTO "create_test" ("id", "key", "val") VALUES (182, 96, 43)'; - $this->db->query($sql); + self::$db->query($sql); - $res = $this->db->rollback(); + $res = self::$db->rollback(); $this->assertTrue($res); } @@ -172,7 +175,7 @@ class FirebirdTest extends DBtest { INSERT INTO "create_test" ("id", "key", "val") VALUES (?,?,?) SQL; - $query = $this->db->prepare($sql); + $query = self::$db->prepare($sql); $query->execute(array(1,"booger's", "Gross")); } @@ -185,7 +188,7 @@ SQL; INSERT INTO "create_test" ("id", "key", "val") VALUES (?,?,?) SQL; - $this->db->prepare_execute($sql, array( + self::$db->prepare_execute($sql, array( 2, "works", 'also?' )); @@ -195,7 +198,7 @@ SQL; public function testFetch() { - $res = $this->db->query('SELECT "key","val" FROM "create_test"'); + $res = self::$db->query('SELECT "key","val" FROM "create_test"'); // Object $fetchObj = $res->fetchObject(); @@ -206,7 +209,7 @@ SQL; $this->assertTrue(array_key_exists('key', $fetchAssoc)); // Numeric array - $res2 = $this->db->query('SELECT "id","key","val" FROM "create_test"'); + $res2 = self::$db->query('SELECT "id","key","val" FROM "create_test"'); $fetch = $res2->fetch(PDO::FETCH_NUM); $this->assertTrue(is_array($fetch)); } @@ -215,14 +218,14 @@ SQL; public function testPrepareQuery() { - $this->assertNull($this->db->prepare_query('', array())); + $this->assertNull(self::$db->prepare_query('', array())); } // -------------------------------------------------------------------------- public function testErrorInfo() { - $result = $this->db->errorInfo(); + $result = self::$db->errorInfo(); $expected = array ( 0 => 0, @@ -237,7 +240,7 @@ SQL; public function testErrorCode() { - $result = $this->db->errorCode(); + $result = self::$db->errorCode(); $this->assertFalse($result); } @@ -245,7 +248,7 @@ SQL; public function testDBList() { - $res = $this->db->sql->db_list(); + $res = self::$db->get_sql()->db_list(); $this->assertNULL($res); } @@ -253,7 +256,7 @@ SQL; public function testExec() { - $res = $this->db->exec('SELECT * FROM "create_test"'); + $res = self::$db->exec('SELECT * FROM "create_test"'); $this->assertEquals(NULL, $res); } @@ -261,17 +264,17 @@ SQL; public function testInTransaction() { - $this->db->beginTransaction(); - $this->assertTrue($this->db->inTransaction()); - $this->db->rollBack(); - $this->assertFalse($this->db->inTransaction()); + self::$db->beginTransaction(); + $this->assertTrue(self::$db->inTransaction()); + self::$db->rollBack(); + $this->assertFalse(self::$db->inTransaction()); } // -------------------------------------------------------------------------- public function testGetAttribute() { - $res = $this->db->getAttribute("foo"); + $res = self::$db->getAttribute("foo"); $this->assertEquals(NULL, $res); } @@ -279,11 +282,11 @@ SQL; public function testSetAttribute() { - $this->assertFalse($this->db->setAttribute(47, 'foo')); + $this->assertFalse(self::$db->setAttribute(47, 'foo')); } public function testLastInsertId() { - $this->assertEqual(0, $this->db->lastInsertId('NEWTABLE_SEQ')); + $this->assertEqual(0, self::$db->lastInsertId('NEWTABLE_SEQ')); } } \ No newline at end of file diff --git a/tests/databases/mysql/MySQLTest.php b/tests/databases/mysql/MySQLTest.php index 2e42946..ec119e2 100644 --- a/tests/databases/mysql/MySQLTest.php +++ b/tests/databases/mysql/MySQLTest.php @@ -21,7 +21,7 @@ */ class MySQLTest extends DBTest { - public function setUp() + public static function setUpBeforeClass() { // Attempt to connect, if there is a test config file if (is_file(QTEST_DIR . "/settings.json")) @@ -29,16 +29,16 @@ class MySQLTest extends DBTest { $params = json_decode(file_get_contents(QTEST_DIR . "/settings.json")); $params = $params->mysql; - $this->db = new \Query\Drivers\Mysql\Driver("mysql:host={$params->host};dbname={$params->database}", $params->user, $params->pass, array( + self::$db = new \Query\Drivers\Mysql\Driver("mysql:host={$params->host};dbname={$params->database}", $params->user, $params->pass, array( PDO::ATTR_PERSISTENT => TRUE )); } elseif (($var = getenv('CI'))) { - $this->db = new \Query\Drivers\Mysql\Driver('host=127.0.0.1;port=3306;dbname=test', 'root'); + self::$db = new \Query\Drivers\Mysql\Driver('host=127.0.0.1;port=3306;dbname=test', 'root'); } - $this->db->table_prefix = 'create_'; + self::$db->table_prefix = 'create_'; } // -------------------------------------------------------------------------- @@ -52,17 +52,17 @@ class MySQLTest extends DBTest { public function testConnection() { - $this->assertIsA($this->db, '\\Query\\Drivers\\Mysql\\Driver'); + $this->assertIsA(self::$db, '\\Query\\Drivers\\Mysql\\Driver'); } // -------------------------------------------------------------------------- public function testCreateTable() { - $this->db->exec(file_get_contents(QTEST_DIR.'/db_files/mysql.sql')); + self::$db->exec(file_get_contents(QTEST_DIR.'/db_files/mysql.sql')); //Attempt to create the table - $sql = $this->db->util->create_table('test', + $sql = self::$db->util->create_table('test', array( 'id' => 'int(10)', 'key' => 'TEXT', @@ -73,10 +73,10 @@ class MySQLTest extends DBTest { ) ); - $this->db->query($sql); + self::$db->query($sql); //Attempt to create the table - $sql = $this->db->util->create_table('join', + $sql = self::$db->util->create_table('join', array( 'id' => 'int(10)', 'key' => 'TEXT', @@ -86,10 +86,10 @@ class MySQLTest extends DBTest { 'id' => 'PRIMARY KEY' ) ); - $this->db->query($sql); + self::$db->query($sql); //Check - $dbs = $this->db->get_tables(); + $dbs = self::$db->get_tables(); $this->assertTrue(in_array('create_test', $dbs)); @@ -99,8 +99,8 @@ class MySQLTest extends DBTest { public function testTruncate() { - $this->db->truncate('test'); - $this->db->truncate('join'); + self::$db->truncate('test'); + self::$db->truncate('join'); } // -------------------------------------------------------------------------- @@ -111,7 +111,7 @@ class MySQLTest extends DBTest { INSERT INTO `create_test` (`id`, `key`, `val`) VALUES (?,?,?) SQL; - $statement = $this->db->prepare_query($sql, array(1,"boogers", "Gross")); + $statement = self::$db->prepare_query($sql, array(1,"boogers", "Gross")); $res = $statement->execute(); @@ -129,7 +129,7 @@ SQL; SQL; try { - $statement = $this->db->prepare_query($sql, 'foo'); + $statement = self::$db->prepare_query($sql, 'foo'); } catch(InvalidArgumentException $e) { @@ -146,7 +146,7 @@ SQL; INSERT INTO `create_test` (`id`, `key`, `val`) VALUES (?,?,?) SQL; - $res = $this->db->prepare_execute($sql, array( + $res = self::$db->prepare_execute($sql, array( 2, "works", 'also?' )); @@ -158,12 +158,12 @@ SQL; public function testCommitTransaction() { - $res = $this->db->beginTransaction(); + $res = self::$db->beginTransaction(); $sql = 'INSERT INTO `create_test` (`id`, `key`, `val`) VALUES (10, 12, 14)'; - $this->db->query($sql); + self::$db->query($sql); - $res = $this->db->commit(); + $res = self::$db->commit(); $this->assertTrue($res); } @@ -171,12 +171,12 @@ SQL; public function testRollbackTransaction() { - $res = $this->db->beginTransaction(); + $res = self::$db->beginTransaction(); $sql = 'INSERT INTO `create_test` (`id`, `key`, `val`) VALUES (182, 96, 43)'; - $this->db->query($sql); + self::$db->query($sql); - $res = $this->db->rollback(); + $res = self::$db->rollback(); $this->assertTrue($res); } @@ -184,21 +184,21 @@ SQL; public function testGetSchemas() { - $this->assertNull($this->db->get_schemas()); + $this->assertNull(self::$db->get_schemas()); } // -------------------------------------------------------------------------- public function testGetSequences() { - $this->assertNull($this->db->get_sequences()); + $this->assertNull(self::$db->get_sequences()); } // -------------------------------------------------------------------------- public function testBackup() { - $this->assertTrue(is_string($this->db->util->backup_structure())); + $this->assertTrue(is_string(self::$db->util->backup_structure())); } diff --git a/tests/databases/pgsql/PgSQLQBTest.php b/tests/databases/pgsql/PgSQLQBTest.php index 9706abd..b1b40f3 100644 --- a/tests/databases/pgsql/PgSQLQBTest.php +++ b/tests/databases/pgsql/PgSQLQBTest.php @@ -20,7 +20,7 @@ class PgSQLQBTest extends QBTest { public function setUp() { // If the database isn't installed, skip the tests - if ( ! class_exists("Query\\Drivers\\Pgsql\\Driver") && ! IS_QUERCUS) + if ( ! in_array('pgsql', PDO::getAvailableDrivers())) { $this->markTestSkipped("Postgres extension for PDO not loaded"); } @@ -65,7 +65,6 @@ class PgSQLQBTest extends QBTest { { $this->markTestSkipped(); return; - $query = $this->db->select('id, key as k, val') ->explain() ->where('id >', 1) diff --git a/tests/databases/pgsql/PgSQLTest.php b/tests/databases/pgsql/PgSQLTest.php index 0c2b972..f788759 100644 --- a/tests/databases/pgsql/PgSQLTest.php +++ b/tests/databases/pgsql/PgSQLTest.php @@ -30,20 +30,26 @@ class PgTest extends DBTest { $this->markTestSkipped("Postgres extension for PDO not loaded"); } + } + + public static function setUpBeforeClass() + { + $class = "Query\\Drivers\\Pgsql\\Driver"; + // Attempt to connect, if there is a test config file if (is_file(QTEST_DIR . "/settings.json")) { $params = json_decode(file_get_contents(QTEST_DIR . "/settings.json")); $params = $params->pgsql; - $this->db = new $class("pgsql:dbname={$params->database};port=5432", $params->user, $params->pass); + self::$db = new $class("pgsql:dbname={$params->database};port=5432", $params->user, $params->pass); } elseif (($var = getenv('CI'))) { - $this->db = new $class('host=127.0.0.1;port=5432;dbname=test', 'postgres'); + self::$db = new $class('host=127.0.0.1;port=5432;dbname=test', 'postgres'); } - $this->db->table_prefix = 'create_'; + self::$db->table_prefix = 'create_'; } // -------------------------------------------------------------------------- @@ -51,7 +57,6 @@ class PgTest extends DBTest { public function testExists() { $drivers = \PDO::getAvailableDrivers(); -print_r($drivers); $this->assertTrue(in_array('pgsql', $drivers)); } @@ -59,26 +64,26 @@ print_r($drivers); public function testConnection() { - if (empty($this->db)) return; + if (empty(self::$db)) return; - $this->assertIsA($this->db, '\\Query\\Drivers\\Pgsql\\Driver'); + $this->assertIsA(self::$db, '\\Query\\Drivers\\Pgsql\\Driver'); } // -------------------------------------------------------------------------- public function testCreateTable() { - $this->db->exec(file_get_contents(QTEST_DIR.'/db_files/pgsql.sql')); + self::$db->exec(file_get_contents(QTEST_DIR.'/db_files/pgsql.sql')); // Drop the table(s) if they exist $sql = 'DROP TABLE IF EXISTS "create_test"'; - $this->db->query($sql); + self::$db->query($sql); $sql = 'DROP TABLE IF EXISTS "create_join"'; - $this->db->query($sql); + self::$db->query($sql); //Attempt to create the table - $sql = $this->db->util->create_table('create_test', + $sql = self::$db->util->create_table('create_test', array( 'id' => 'integer', 'key' => 'TEXT', @@ -89,10 +94,10 @@ print_r($drivers); ) ); - $this->db->query($sql); + self::$db->query($sql); //Attempt to create the table - $sql = $this->db->util->create_table('create_join', + $sql = self::$db->util->create_table('create_join', array( 'id' => 'integer', 'key' => 'TEXT', @@ -102,16 +107,16 @@ print_r($drivers); 'id' => 'PRIMARY KEY' ) ); - $this->db->query($sql); + self::$db->query($sql); //echo $sql.'
'; //Reset - unset($this->db); - $this->setUp(); + //unset(self::$db); + //$this->setUp(); //Check - $dbs = $this->db->get_tables(); + $dbs = self::$db->get_tables(); $this->assertTrue(in_array('create_test', $dbs)); } @@ -120,11 +125,11 @@ print_r($drivers); public function testTruncate() { - $this->db->truncate('create_test'); - $this->db->truncate('create_join'); + self::$db->truncate('create_test'); + self::$db->truncate('create_join'); - $ct_query = $this->db->query('SELECT * FROM create_test'); - $cj_query = $this->db->query('SELECT * FROM create_join'); + $ct_query = self::$db->query('SELECT * FROM create_test'); + $cj_query = self::$db->query('SELECT * FROM create_join'); } // -------------------------------------------------------------------------- @@ -135,7 +140,7 @@ print_r($drivers); INSERT INTO "create_test" ("id", "key", "val") VALUES (?,?,?) SQL; - $statement = $this->db->prepare_query($sql, array(1,"boogers", "Gross")); + $statement = self::$db->prepare_query($sql, array(1,"boogers", "Gross")); $statement->execute(); @@ -151,7 +156,7 @@ SQL; SQL; try { - $statement = $this->db->prepare_query($sql, 'foo'); + $statement = self::$db->prepare_query($sql, 'foo'); } catch(InvalidArgumentException $e) { @@ -164,13 +169,13 @@ SQL; public function testPrepareExecute() { - if (empty($this->db)) return; + if (empty(self::$db)) return; $sql = <<db->prepare_execute($sql, array( + self::$db->prepare_execute($sql, array( 2, "works", 'also?' )); @@ -180,14 +185,14 @@ SQL; public function testCommitTransaction() { - if (empty($this->db)) return; + if (empty(self::$db)) return; - $res = $this->db->beginTransaction(); + $res = self::$db->beginTransaction(); $sql = 'INSERT INTO "create_test" ("id", "key", "val") VALUES (10, 12, 14)'; - $this->db->query($sql); + self::$db->query($sql); - $res = $this->db->commit(); + $res = self::$db->commit(); $this->assertTrue($res); } @@ -195,14 +200,14 @@ SQL; public function testRollbackTransaction() { - if (empty($this->db)) return; + if (empty(self::$db)) return; - $res = $this->db->beginTransaction(); + $res = self::$db->beginTransaction(); $sql = 'INSERT INTO "create_test" ("id", "key", "val") VALUES (182, 96, 43)'; - $this->db->query($sql); + self::$db->query($sql); - $res = $this->db->rollback(); + $res = self::$db->rollback(); $this->assertTrue($res); } @@ -210,20 +215,20 @@ SQL; public function testGetSchemas() { - $this->assertTrue(is_array($this->db->get_schemas())); + $this->assertTrue(is_array(self::$db->get_schemas())); } // -------------------------------------------------------------------------- public function testGetDBs() { - $this->assertTrue(is_array($this->db->get_dbs())); + $this->assertTrue(is_array(self::$db->get_dbs())); } // -------------------------------------------------------------------------- public function testGetFunctions() { - $this->assertNull($this->db->get_functions()); + $this->assertNull(self::$db->get_functions()); } } \ No newline at end of file diff --git a/tests/databases/sqlite/SQLiteTest.php b/tests/databases/sqlite/SQLiteTest.php index 3d93c3d..391c797 100644 --- a/tests/databases/sqlite/SQLiteTest.php +++ b/tests/databases/sqlite/SQLiteTest.php @@ -20,12 +20,23 @@ */ class SQLiteTest extends DBTest { - public function setUp() + public static function setupBeforeClass() { - // Set up in the bootstrap to mitigate - // connection locking issues - $this->db = Query('test_sqlite'); - $this->db->table_prefix = 'create_'; + $path = QTEST_DIR.QDS.'db_files'.QDS.'test_sqlite.db'; + $params = array( + 'type' => 'sqlite', + 'file' => ':memory:', + 'prefix' => 'create_', + 'alias' => 'test_sqlite', + 'options' => array( + PDO::ATTR_PERSISTENT => TRUE + ) + ); + + Query($params); + + self::$db = Query('test_sqlite'); + self::$db->table_prefix = 'create_'; } // -------------------------------------------------------------------------- @@ -34,10 +45,10 @@ class SQLiteTest extends DBTest { public function testCreateTable() { - $this->db->exec(file_get_contents(QTEST_DIR.'/db_files/sqlite.sql')); + self::$db->exec(file_get_contents(QTEST_DIR.'/db_files/sqlite.sql')); //Check - $dbs = $this->db->get_tables(); + $dbs = self::$db->get_tables(); $this->assertTrue(in_array('TEST1', $dbs)); $this->assertTrue(in_array('TEST2', $dbs)); @@ -52,7 +63,7 @@ class SQLiteTest extends DBTest { /*public function testBackupData() { - $sql = mb_trim($this->db->util->backup_data(array('create_join', 'create_test'))); + $sql = mb_trim(self::$db->util->backup_data(array('create_join', 'create_test'))); $sql_array = explode("\n", $sql); @@ -71,7 +82,7 @@ SQL; public function testBackupStructure() { - $sql = mb_trim($this->db->util->backup_structure()); + $sql = mb_trim(self::$db->util->backup_structure()); $expected = <<db->util->delete_table('create_delete'); + $sql = self::$db->util->delete_table('create_delete'); - $this->db->query($sql); + self::$db->query($sql); //Check - $dbs = $this->db->get_tables(); + $dbs = self::$db->get_tables(); $this->assertFalse(in_array('create_delete', $dbs)); } @@ -167,7 +178,7 @@ SQL; $db = new $class(QTEST_DIR.QDS.'db_files'.QDS.'test_sqlite.db'); $this->assertIsA($db, $class); - $this->assertIsA($this->db->db, $class); + $this->assertIsA(self::$db->db, $class); unset($db); } @@ -176,7 +187,7 @@ SQL; public function testTruncate() { - $this->db->truncate('create_test'); + self::$db->truncate('create_test'); } // -------------------------------------------------------------------------- @@ -187,7 +198,7 @@ SQL; INSERT INTO "create_test" ("id", "key", "val") VALUES (?,?,?) SQL; - $statement = $this->db->prepare_query($sql, array(1,"boogers", "Gross")); + $statement = self::$db->prepare_query($sql, array(1,"boogers", "Gross")); $statement->execute(); @@ -201,7 +212,7 @@ SQL; INSERT INTO "create_test" ("id", "key", "val") VALUES (?,?,?) SQL; - $this->db->prepare_execute($sql, array( + self::$db->prepare_execute($sql, array( 2, "works", 'also?' )); @@ -216,12 +227,12 @@ SQL; $this->markTestSkipped("JDBC Driver doesn't support transactions"); } - $res = $this->db->beginTransaction(); + $res = self::$db->beginTransaction(); $sql = 'INSERT INTO "create_test" ("id", "key", "val") VALUES (10, 12, 14)'; - $this->db->query($sql); + self::$db->query($sql); - $res = $this->db->commit(); + $res = self::$db->commit(); $this->assertTrue($res); } @@ -234,12 +245,12 @@ SQL; $this->markTestSkipped("JDBC Driver doesn't support transactions"); } - $res = $this->db->beginTransaction(); + $res = self::$db->beginTransaction(); $sql = 'INSERT INTO "create_test" ("id", "key", "val") VALUES (182, 96, 43)'; - $this->db->query($sql); + self::$db->query($sql); - $res = $this->db->rollback(); + $res = self::$db->rollback(); $this->assertTrue($res); } @@ -247,14 +258,14 @@ SQL; public function testGetDBs() { - $this->assertTrue(is_array($this->db->get_dbs())); + $this->assertTrue(is_array(self::$db->get_dbs())); } // -------------------------------------------------------------------------- public function testGetSchemas() { - $this->assertNull($this->db->get_schemas()); + $this->assertNull(self::$db->get_schemas()); } // -------------------------------------------------------------------------- @@ -263,13 +274,13 @@ SQL; public function testNullMethods() { - $sql = $this->db->sql->function_list(); + $sql = self::$db->sql->function_list(); $this->assertEqual(NULL, $sql); - $sql = $this->db->sql->procedure_list(); + $sql = self::$db->sql->procedure_list(); $this->assertEqual(NULL, $sql); - $sql = $this->db->sql->sequence_list(); + $sql = self::$db->sql->sequence_list(); $this->assertEqual(NULL, $sql); } @@ -277,7 +288,7 @@ SQL; public function testGetSystemTables() { - $sql = $this->db->get_system_tables(); + $sql = self::$db->get_system_tables(); $this->assertTrue(is_array($sql)); } @@ -285,20 +296,20 @@ SQL; public function testGetSequences() { - $this->assertNull($this->db->get_sequences()); + $this->assertNull(self::$db->get_sequences()); } // -------------------------------------------------------------------------- public function testGetFunctions() { - $this->assertNull($this->db->get_functions()); + $this->assertNull(self::$db->get_functions()); } // -------------------------------------------------------------------------- public function testGetProcedures() { - $this->assertNull($this->db->get_procedures()); + $this->assertNull(self::$db->get_procedures()); } } \ No newline at end of file diff --git a/tests/phpunit.xml b/tests/phpunit.xml deleted file mode 100644 index 5720541..0000000 --- a/tests/phpunit.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - ../coverage - ../docs - . - - - - - core/core.php - core/db_qp_test.php - - - databases/firebird/FirebirdTest.php - databases/firebird/FirebirdQBTest.php - - - databases/mysql/MySQLTest.php - databases/mysql/MySQLQBTest.php - - - databases/pgsql/PgSQLTest.php - databases/pgsql/PgSQLQBTest.php - - - databases/sqlite/SQLiteTest.php - databases/sqlite/SQLiteQBTest.php - - - \ No newline at end of file