diff --git a/e107_tests/tests/unit/e_db_abstractTest.php b/e107_tests/tests/unit/e_db_abstractTest.php index 2af2b93e7..6354529d9 100644 --- a/e107_tests/tests/unit/e_db_abstractTest.php +++ b/e107_tests/tests/unit/e_db_abstractTest.php @@ -198,76 +198,6 @@ abstract class e_db_abstractTest extends \Codeception\Test\Unit $result = $this->db->db_Query("INSERT INTO ".MPREFIX."core_media_cat(media_cat_owner,media_cat_title,media_cat_category,media_cat_sef,media_cat_diz,media_cat_class,media_cat_image,media_cat_order) SELECT media_cat_owner,media_cat_title,media_cat_category,media_cat_sef,media_cat_diz,media_cat_class,media_cat_image,media_cat_order FROM ".MPREFIX."core_media_cat WHERE media_cat_id = 1"); $err = $this->db->getLastErrorText(); $this->assertFalse($result, $err); - - - $query = array ( - 'PREPARE' => 'INSERT INTO '.MPREFIX.'tmp (`tmp_ip`,`tmp_time`,`tmp_info`) VALUES (:tmp_ip, :tmp_time, :tmp_info)', - 'BIND' => - array( - 'tmp_ip' => - array( - 'value' => '127.0.0.1', - 'type' => PDO::PARAM_STR, - ), - 'tmp_time' => - array( - 'value' => 12345435, - 'type' => PDO::PARAM_INT, - ), - 'tmp_info' => - array( - 'value' => 'Insert test', - 'type' => PDO::PARAM_STR, - ), - ), - ); - - - $result = $this->db->db_Query($query, null, 'db_Insert'); - $this->assertGreaterThan(0,$result); - - - $query = array ( - 'PREPARE' => 'INSERT INTO '.MPREFIX.'tmp (`tmp_ip`,`tmp_time`,`tmp_info`) VALUES (:tmp_ip, :tmp_time, :tmp_info)', - 'BIND' => - array( - 'tmp_ip' => - array( - 'value' => '127.0.0.1', - 'type' => PDO::PARAM_STR, - ), - 'tmp_time' => - array( - 'value' => 12345435, - 'type' => PDO::PARAM_INT, - ), - 'tmp_info' => - array( - 'value' => 'Insert test', - 'type' => PDO::PARAM_STR, - ), - ), - ); - - - $result = $this->db->db_Query($query, null, 'db_Insert'); - $this->assertGreaterThan(0,$result); - - - - $query = array( - 'PREPARE' => 'SELECT * FROM '.MPREFIX.'user WHERE user_id=:user_id AND user_name=:user_name', - 'EXECUTE' => array( - 'user_id' => 1, - 'user_name' => 'e107' - ) - ); - - - $res = $this->db->db_Query($query, null, 'db_Select'); - $result = $res->fetch(); - $this->assertArrayHasKey('user_password', $result); - } @@ -334,10 +264,6 @@ abstract class e_db_abstractTest extends \Codeception\Test\Unit $result = $this->db->select('user', 'user_id, user_name', 'WHERE user_id = 1', true); $this->assertEquals(1, $result); - $result = $this->db->select('user', 'user_id, user_name', 'user_id=:id OR user_name=:name ORDER BY user_name', array('id' => 999, 'name'=>'e107')); // bind support. - $this->assertEquals(1, $result); - - } public function testDb_Select() @@ -964,17 +890,6 @@ abstract class e_db_abstractTest extends \Codeception\Test\Unit $result = $this->db->db_CopyRow('news', null); $this->assertFalse($result); - - // test with table that has unique keys. - $result = $this->db->db_CopyRow('core_media_cat', '*', "media_cat_id = 1"); - $qry = $this->db->getLastErrorText(); - $this->assertGreaterThan(1,$result, $qry); - - // test with table that has unique keys. (same row again) - make sure copyRow duplicates it regardless. - $result = $this->db->db_CopyRow('core_media_cat', '*', "media_cat_id = 1"); - $qry = $this->db->getLastErrorText(); - $this->assertGreaterThan(1,$result, $qry); - } public function testDb_CopyTable() diff --git a/e107_tests/tests/unit/e_db_pdoTest.php b/e107_tests/tests/unit/e_db_pdoTest.php index 5d5b3d4bf..71eb9e280 100644 --- a/e107_tests/tests/unit/e_db_pdoTest.php +++ b/e107_tests/tests/unit/e_db_pdoTest.php @@ -42,4 +42,80 @@ class e_db_pdoTest extends e_db_abstractTest $this->assertEquals('utf8', $result); } + + /** + * PDO-exclusive feature: Select with argument bindings + * @see e_db_abstractTest::testSelect() + */ + public function testSelectBind() + { + $result = $this->db->select('user', 'user_id, user_name', 'user_id=:id OR user_name=:name ORDER BY user_name', array('id' => 999, 'name'=>'e107')); // bind support. + $this->assertEquals(1, $result); + } + + /** + * PDO-exclusive feature: Query with argument bindings + * @see e_db_abstractTest::testDb_Query() + */ + public function testDb_QueryBind() + { + $query = array ( + 'PREPARE' => 'INSERT INTO '.MPREFIX.'tmp (`tmp_ip`,`tmp_time`,`tmp_info`) VALUES (:tmp_ip, :tmp_time, :tmp_info)', + 'BIND' => + array( + 'tmp_ip' => + array( + 'value' => '127.0.0.1', + 'type' => PDO::PARAM_STR, + ), + 'tmp_time' => + array( + 'value' => 12345435, + 'type' => PDO::PARAM_INT, + ), + 'tmp_info' => + array( + 'value' => 'Insert test', + 'type' => PDO::PARAM_STR, + ), + ), + ); + + + $result = $this->db->db_Query($query, null, 'db_Insert'); + $this->assertGreaterThan(0,$result); + + + + $query = array( + 'PREPARE' => 'SELECT * FROM '.MPREFIX.'user WHERE user_id=:user_id AND user_name=:user_name', + 'EXECUTE' => array( + 'user_id' => 1, + 'user_name' => 'e107' + ) + ); + + + $res = $this->db->db_Query($query, null, 'db_Select'); + $result = $res->fetch(); + $this->assertArrayHasKey('user_password', $result); + } + + /** + * PDO-exclusive feature: Copy row and keep unique keys unique + * @see e_db_abstractTest::testDb_Query() + * @see https://github.com/e107inc/e107/issues/3678 + */ + public function testDb_CopyRowUnique() + { + // test with table that has unique keys. + $result = $this->db->db_CopyRow('core_media_cat', '*', "media_cat_id = 1"); + $qry = $this->db->getLastErrorText(); + $this->assertGreaterThan(1,$result, $qry); + + // test with table that has unique keys. (same row again) - make sure copyRow duplicates it regardless. + $result = $this->db->db_CopyRow('core_media_cat', '*', "media_cat_id = 1"); + $qry = $this->db->getLastErrorText(); + $this->assertGreaterThan(1,$result, $qry); + } }