diff --git a/.gitignore b/.gitignore index 44d7ee7..f330e7c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ test_config.json +tests/simpletest/* diff --git a/README.md b/README.md index 40d7204..ee55a3d 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,11 @@ A query builder/abstraction layer, using prepared queries for security. * PostgreSQL * SQLite * Others, via ODBC + +## Including Query in your application + +To include Query in your PHP project, just include the `autoload.php` file. This will automatically load the classes that are supported by the current PHP installation. + ## Connecting diff --git a/autoload.php b/autoload.php new file mode 100644 index 0000000..5a477b8 --- /dev/null +++ b/autoload.php @@ -0,0 +1,47 @@ +assertTrue(in_array('pgsql', pdo_drivers())); } - - function TestGet() - { - if (empty($this->db)) return; - - $query = $this->db->get('create_test'); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestGetLimit() - { - if (empty($this->db)) return; - - $query = $this->db->get('create_test', 2); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestGetLimitSkip() - { - if (empty($this->db)) return; - - $query = $this->db->get('create_test', 2, 1); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestSelectWhereGet() - { - if (empty($this->db)) return; - - $query = $this->db->select('id, key as k, val') - ->where('id >', 1) - ->where('id <', 900) - ->get('create_test', 2, 1); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestSelectWhereGet2() - { - if (empty($this->db)) return; - - $query = $this->db->select('id, key as k, val') - ->where('id !=', 1) - ->get('create_test', 2, 1); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestSelectGet() - { - if (empty($this->db)) return; - - $query = $this->db->select('id, key as k, val') - ->get('create_test', 2, 1); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestSelectFromGet() - { - if (empty($this->db)) return; - - $query = $this->db->select('id, key as k, val') - ->from('create_test ct') - ->where('id >', 1) - ->get(); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestSelectFromLimitGet() - { - if (empty($this->db)) return; - - $query = $this->db->select('id, key as k, val') - ->from('create_test ct') - ->where('id >', 1) - ->limit(3) - ->get(); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestOrderBy() - { - if (empty($this->db)) return; - - $query = $this->db->select('id, key as k, val') - ->from('create_test') - ->where('id >', 0) - ->where('id <', 9000) - ->order_by('id', 'DESC') - ->order_by('k', 'ASC') - ->limit(5,2) - ->get(); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestOrderByRandom() - { - if (empty($this->db)) return; - - $query = $this->db->select('id, key as k, val') - ->from('create_test') - ->where('id >', 0) - ->where('id <', 9000) - ->order_by('id', 'rand') - ->limit(5,2) - ->get(); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestGroupBy() - { - if (empty($this->db)) return; - - $query = $this->db->select('id, key as k, val') - ->from('create_test') - ->where('id >', 0) - ->where('id <', 9000) - ->group_by('k') - ->group_by('val') - ->order_by('id', 'DESC') - ->order_by('k', 'ASC') - ->limit(5,2) - ->get(); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestOrWhere() - { - if (empty($this->db)) return; - - $query = $this->db->select('id, key as k, val') - ->from('create_test') - ->where(' id ', 1) - ->or_where('key >', 0) - ->limit(2, 1) - ->get(); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestLike() - { - if (empty($this->db)) return; - - $query = $this->db->from('create_test') - ->like('key', 'og') - ->get(); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestJoin() - { - if (empty($this->db)) return; - - $query = $this->db->from('create_test') - ->join('create_join cj', 'cj.id = create_test.id') - ->get(); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestInsert() - { - if (empty($this->db)) return; - - $query = $this->db->set('id', 4) - ->set('key', 4) - ->set('val', 5) - ->insert('create_test'); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestUpdate() - { - if (empty($this->db)) return; - - $query = $this->db->set('id', 4) - ->set('key', 'gogle') - ->set('val', 'non-word') - ->where('id', 4) - ->update('create_test'); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestDelete() - { - if (empty($this->db)) return; - - $query = $this->db->where('id', 4)->delete('create_test'); - - $this->assertIsA($query, 'PDOStatement'); - } - } \ No newline at end of file diff --git a/tests/databases/sqlite-qb.php b/tests/databases/sqlite-qb.php index ad06d7a..f0c2b88 100644 --- a/tests/databases/sqlite-qb.php +++ b/tests/databases/sqlite-qb.php @@ -15,7 +15,7 @@ /** * Class for testing Query Builder with SQLite */ - class SQLiteQBTest extends UnitTestCase { + class SQLiteQBTest extends QBTest { function __construct() { @@ -30,174 +30,4 @@ echo '
SQLite Queries
'; } - - function TestGet() - { - $query = $this->db->get('create_test ct'); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestGetLimit() - { - $query = $this->db->get('create_test', 2); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestGetLimitSkip() - { - $query = $this->db->get('create_test', 2, 1); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestSelectWhereGet() - { - $query = $this->db->select('id, key as k, val') - ->where('id >', 1) - ->where('id <', 900) - ->get('create_test', 2, 1); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestSelectWhereGet2() - { - $query = $this->db->select('id, key as k, val') - ->where('id !=', 1) - ->get('create_test', 2, 1); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestSelectGet() - { - $query = $this->db->select('id, key as k, val') - ->get('create_test', 2, 1); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestSelectFromGet() - { - $query = $this->db->select('id, key as k, val') - ->from('create_test ct') - ->where('id >', 1) - ->get(); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestSelectFromLimitGet() - { - $query = $this->db->select('id, key as k, val') - ->from('create_test ct') - ->where('id >', 1) - ->limit(3) - ->get(); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestOrderBy() - { - $query = $this->db->select('id, key as k, val') - ->from('create_test') - ->where('id >', 0) - ->where('id <', 9000) - ->order_by('id', 'DESC') - ->order_by('k', 'ASC') - ->limit(5,2) - ->get(); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestOrderByRandom() - { - $query = $this->db->select('id, key as k, val') - ->from('create_test') - ->where('id >', 0) - ->where('id <', 9000) - ->order_by('id', 'rand') - ->limit(5,2) - ->get(); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestGroupBy() - { - $query = $this->db->select('id, key as k, val') - ->from('create_test') - ->where('id >', 0) - ->where('id <', 9000) - ->group_by('k') - ->group_by('val') - ->order_by('id', 'DESC') - ->order_by('k', 'ASC') - ->limit(5,2) - ->get(); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestOrWhere() - { - $query = $this->db->select('id, key as k, val') - ->from('create_test') - ->where(' id ', 1) - ->or_where('key >', 0) - ->limit(2, 1) - ->get(); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestLike() - { - $query = $this->db->from('create_test') - ->like('key', 'og') - ->get(); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestJoin() - { - $query = $this->db->from('create_test') - ->join('create_join cj', 'cj.id = create_test.id') - ->get(); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestInsert() - { - $query = $this->db->set('id', 4) - ->set('key', 4) - ->set('val', 5) - ->insert('create_test'); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestUpdate() - { - $query = $this->db->set('id', 4) - ->set('key', 'gogle') - ->set('val', 'non-word') - ->where('id', 4) - ->update('create_test'); - - $this->assertIsA($query, 'PDOStatement'); - } - - function TestDelete() - { - $query = $this->db->where('id', 4)->delete('create_test'); - - $this->assertIsA($query, 'PDOStatement'); - } } \ No newline at end of file diff --git a/tests/databases/sqlite.php b/tests/databases/sqlite.php index 3bd5eb4..8cf21bc 100644 --- a/tests/databases/sqlite.php +++ b/tests/databases/sqlite.php @@ -17,11 +17,11 @@ * * @extends UnitTestCase */ -class SQLiteTest extends UnitTestCase { +class SQLiteTest extends DBTest { function __construct() { - parent::__construct(); + //parent::__construct(); } function setUp() diff --git a/tests/index.php b/tests/index.php index 0719419..d62c7d9 100644 --- a/tests/index.php +++ b/tests/index.php @@ -23,6 +23,9 @@ define('DS', DIRECTORY_SEPARATOR); // it has to be set in your php path, or put in the tests folder require_once('simpletest/autorun.php'); +// Require base testing classes +require_once(TEST_DIR.'/parent.php'); + // Bulk loading wrapper workaround for PHP < 5.4 function do_include($path) diff --git a/tests/parent.php b/tests/parent.php new file mode 100644 index 0000000..b6cac60 --- /dev/null +++ b/tests/parent.php @@ -0,0 +1,234 @@ +db)) return; + + $query = $this->db->get('create_test'); + + $this->assertIsA($query, 'PDOStatement'); + } + + function TestGetLimit() + { + if (empty($this->db)) return; + + $query = $this->db->get('create_test', 2); + + $this->assertIsA($query, 'PDOStatement'); + } + + function TestGetLimitSkip() + { + if (empty($this->db)) return; + + $query = $this->db->get('create_test', 2, 1); + + $this->assertIsA($query, 'PDOStatement'); + } + + function TestSelectWhereGet() + { + if (empty($this->db)) return; + + $query = $this->db->select('id, key as k, val') + ->where('id >', 1) + ->where('id <', 900) + ->get('create_test', 2, 1); + + $this->assertIsA($query, 'PDOStatement'); + } + + function TestSelectWhereGet2() + { + if (empty($this->db)) return; + + $query = $this->db->select('id, key as k, val') + ->where('id !=', 1) + ->get('create_test', 2, 1); + + $this->assertIsA($query, 'PDOStatement'); + } + + function TestSelectGet() + { + if (empty($this->db)) return; + + $query = $this->db->select('id, key as k, val') + ->get('create_test', 2, 1); + + $this->assertIsA($query, 'PDOStatement'); + } + + function TestSelectFromGet() + { + if (empty($this->db)) return; + + $query = $this->db->select('id, key as k, val') + ->from('create_test ct') + ->where('id >', 1) + ->get(); + + $this->assertIsA($query, 'PDOStatement'); + } + + function TestSelectFromLimitGet() + { + if (empty($this->db)) return; + + $query = $this->db->select('id, key as k, val') + ->from('create_test ct') + ->where('id >', 1) + ->limit(3) + ->get(); + + $this->assertIsA($query, 'PDOStatement'); + } + + function TestOrderBy() + { + if (empty($this->db)) return; + + $query = $this->db->select('id, key as k, val') + ->from('create_test') + ->where('id >', 0) + ->where('id <', 9000) + ->order_by('id', 'DESC') + ->order_by('k', 'ASC') + ->limit(5,2) + ->get(); + + $this->assertIsA($query, 'PDOStatement'); + } + + function TestOrderByRandom() + { + if (empty($this->db)) return; + + $query = $this->db->select('id, key as k, val') + ->from('create_test') + ->where('id >', 0) + ->where('id <', 9000) + ->order_by('id', 'rand') + ->limit(5,2) + ->get(); + + $this->assertIsA($query, 'PDOStatement'); + } + + function TestGroupBy() + { + if (empty($this->db)) return; + + $query = $this->db->select('id, key as k, val') + ->from('create_test') + ->where('id >', 0) + ->where('id <', 9000) + ->group_by('k') + ->group_by('val') + ->order_by('id', 'DESC') + ->order_by('k', 'ASC') + ->limit(5,2) + ->get(); + + $this->assertIsA($query, 'PDOStatement'); + } + + function TestOrWhere() + { + if (empty($this->db)) return; + + $query = $this->db->select('id, key as k, val') + ->from('create_test') + ->where(' id ', 1) + ->or_where('key >', 0) + ->limit(2, 1) + ->get(); + + $this->assertIsA($query, 'PDOStatement'); + } + + function TestLike() + { + if (empty($this->db)) return; + + $query = $this->db->from('create_test') + ->like('key', 'og') + ->get(); + + $this->assertIsA($query, 'PDOStatement'); + } + + function TestJoin() + { + if (empty($this->db)) return; + + $query = $this->db->from('create_test') + ->join('create_join cj', 'cj.id = create_test.id') + ->get(); + + $this->assertIsA($query, 'PDOStatement'); + } + + function TestInsert() + { + if (empty($this->db)) return; + + $query = $this->db->set('id', 4) + ->set('key', 4) + ->set('val', 5) + ->insert('create_test'); + + $this->assertIsA($query, 'PDOStatement'); + } + + function TestUpdate() + { + if (empty($this->db)) return; + + $query = $this->db->set('id', 4) + ->set('key', 'gogle') + ->set('val', 'non-word') + ->where('id', 4) + ->update('create_test'); + + $this->assertIsA($query, 'PDOStatement'); + } + + function TestDelete() + { + if (empty($this->db)) return; + + $query = $this->db->where('id', 4)->delete('create_test'); + + $this->assertIsA($query, 'PDOStatement'); + } + +} + +// -------------------------------------------------------------------------- + +abstract class DBTest extends UnitTestCase { + + abstract function TestConnection(); + + function tearDown() + { + unset($this->db); + } + +} \ No newline at end of file diff --git a/tests/test_dbs/test_sqlite.db b/tests/test_dbs/test_sqlite.db index c01754e..89d1be5 100644 Binary files a/tests/test_dbs/test_sqlite.db and b/tests/test_dbs/test_sqlite.db differ