From 1d30e2be71a3b3379ba43571a7e2bdb49cfe85db Mon Sep 17 00:00:00 2001 From: Timothy Warren Date: Tue, 13 Mar 2012 12:57:12 -0400 Subject: [PATCH] Update and Insert tests --- sys/db/query_builder.php | 22 ++++++++++++++------- tests/databases/firebird-qb.php | 33 +++++++++++++++++++++++--------- tests/databases/sqlite-qb.php | 28 ++++++++++++++++++--------- tests/test_dbs/FB_TEST_DB.FDB | Bin 802816 -> 802816 bytes 4 files changed, 58 insertions(+), 25 deletions(-) diff --git a/sys/db/query_builder.php b/sys/db/query_builder.php index 73e8884..fa88a4f 100644 --- a/sys/db/query_builder.php +++ b/sys/db/query_builder.php @@ -18,8 +18,7 @@ */ class Query_Builder { - private $table, - $sql, + private $sql, $select_string, $from_string, $where_array, @@ -475,7 +474,7 @@ class Query_Builder { $this->set($data); } - $sql = 'UPDATE '.$this->quote_ident($table). ' SET '. $this->set_string; + $sql = $this->_compile('update', $table); $params = array_values($this->set_array); @@ -485,8 +484,6 @@ class Query_Builder { // the set string if ( ! empty($this->where_string)) { - $sql .= $this->where_string; - $where_params = array_values($this->where_array); foreach($where_params as $w) @@ -513,6 +510,8 @@ class Query_Builder { // @todo implement delete method } + // -------------------------------------------------------------------------- + // ! Miscellaneous Methods // -------------------------------------------------------------------------- /** @@ -577,7 +576,7 @@ class Query_Builder { } // Set the limit via the class variables - if (is_numeric($this->limit)) + if (isset($this->limit) && is_numeric($this->limit)) { $sql = $this->sql->limit($sql, $this->limit, $this->offset); } @@ -591,12 +590,21 @@ class Query_Builder { ') VALUES ('.implode(', ', $params).')'; break; + case "update": + $sql = 'UPDATE '.$this->db->quote_ident($table). ' SET '. $this->set_string; + + if ( ! empty($this->where_string)) + { + $sql .= $this->where_string; + } + break; + case "delete": // @todo Implement delete statements break; } - echo $sql.'
'; + //echo $sql.'
'; return $sql; } diff --git a/tests/databases/firebird-qb.php b/tests/databases/firebird-qb.php index 929ad6d..25b17fb 100644 --- a/tests/databases/firebird-qb.php +++ b/tests/databases/firebird-qb.php @@ -20,10 +20,7 @@ class FirebirdQBTest extends UnitTestCase { function __construct() { parent::__construct(); - } - - function setUp() - { + $dbpath = TEST_DIR.DS.'test_dbs'.DS.'FB_TEST_DB.FDB'; // Test the query builder @@ -34,11 +31,8 @@ class FirebirdQBTest extends UnitTestCase { $params->user = 'sysdba'; $params->pass = 'masterkey'; $this->qb = new Query_Builder($params); - } - - function tearDown() - { - unset($this->qb); + + //echo '
Firebird Queries
'; } function TestQBGet() @@ -111,4 +105,25 @@ class FirebirdQBTest extends UnitTestCase { $this->assertTrue(is_resource($query)); } + + function TestInsert() + { + $query = $this->qb->set('id', 4) + ->set('key', 4) + ->set('val', 5) + ->insert('create_test'); + + $this->assertTrue($query); + } + + function TestUpdate() + { + $query = $this->qb->set('id', 4) + ->set('key', 'gogle') + ->set('val', 'non-word') + ->where('id', 4) + ->update('create_test'); + + $this->assertTrue($query); + } } \ No newline at end of file diff --git a/tests/databases/sqlite-qb.php b/tests/databases/sqlite-qb.php index 898275f..f080edb 100644 --- a/tests/databases/sqlite-qb.php +++ b/tests/databases/sqlite-qb.php @@ -17,20 +17,19 @@ */ class SQLiteQBTest extends UnitTestCase { - function setUp() - { - $path = TEST_DIR.DS.'test_dbs'.DS.'test_sqlite.db'; + function __construct() + { + parent::__construct(); + + $path = TEST_DIR.DS.'test_dbs'.DS.'test_sqlite.db'; $params = new Stdclass(); $params->type = 'sqlite'; $params->file = $path; $params->host = 'localhost'; $this->qb = new Query_Builder($params); - } - - function tearDown() - { - unset($this->qb); - } + + //echo '
SQLite Queries
'; + } function TestGet() { @@ -110,4 +109,15 @@ $this->assertIsA($query, 'PDOStatement'); } + + function TestUpdate() + { + $query = $this->qb->set('id', 4) + ->set('key', 'gogle') + ->set('val', 'non-word') + ->where('id', 4) + ->update('create_test'); + + $this->assertIsA($query, 'PDOStatement'); + } } \ No newline at end of file diff --git a/tests/test_dbs/FB_TEST_DB.FDB b/tests/test_dbs/FB_TEST_DB.FDB index 7531aad0c7912a7d252581e6ad4e8e80be21f757..776d51a74b91ead9ce61abaacc46fe8cdae456d8 100755 GIT binary patch delta 2952 zcma);O^6&t6vton$9!y$PA#|xkqr|!L=!f!JkfT zp~naG%Zn6^A;MG$OE+Hp94b9v9+|m04z|gl<7$hp>k{BA`~o=Q)87DIc=*}_yLYJ$5*++2vLWzy zU4FlJ@w@67nMjdHCy{OrnpfeoR}D|Iiw(Ss7zaUAO~DHrbYm1e>ky|H z2`_Vn0nqGfQFIr-k$~pr^K?7?^;R%hxQdg9^-p$!DL0yv>D_*1s(6`@!sYb(jbNYi ztfJ*?xarzXuqR$7D$n#&!61yy6jryu*h*56*@_ClQ@KvqoBA-5}Gve3Cn^r#u z-1Zw(V{t&1%NAIN z|C5V`thwMzr3t4fDAtX0)lJXd2p)7!juJ_0KqPyP@~hRHzVc3MW+`_%=@=hMO<|qi zSXX)$DYgZS#FUMppRZNgGVn#R;75ggtWD*t0b|8U_xPU5rk-jzCPHo<*)Q zj~O1L9y2`_@L14eB_1pFSeeH{11ub1bj2MkiH0Xlqp80&X?w}=K++2Q=(?-@s^5V4 zZ8J0(qfrtyqvQ{bkteig>=28B6(TdXrhhIt96*O(~z6C3`^Q%~z5vwUN#D|at zrH67SU2U(ORIAZ{kVxu_-SX9-_=?dClFqZ|yPL?otM?mME5`MHUtG0c`;gxam0n81 zYD22MWGJbtpB0-+7#CpB4k$Z2Z^HbH%isO9qP4I6&IQ-zjMFY(j@!-jt;R#LlSEWu%trr;AqR^8@~An%)fH^+FrYUM{b#3y4($J49g(!qzmwjNS+tKgE2!} z^JV8XA0dxGrZ;})d1ZPCjALrWm=5IwV9fa4Y^K?LU<`sLXk#eRM#jFpn)L#YmM5)w zZURrC)EbtW-2k3);6a-yJ3B9vQpWhQ){H-n+0L%KT3rG*ElWnT^#I#Q0j<)K?EU}xyboyOokbgCTn&uHm$n3y zws?`!&C0Ou*^qi@W9p%eSX(s~oiusxqE$_|S(J{AleVw zDwS-5tU1}Lu6v}okC5I+&iOizc&0kf>Z+rw`fo>7^{)RTBD%U<2+d|y9{m?|J{5sB zgP@H^MH{nbW2anlWR*W^647V<1^w276_4P{kdl0M(W(sLL&E##t%SaWq94mfg#DO) d(1$P6wfenw9fCSM121RH!SY^XCDPZi?JvqsQ5^sP