diff options
author | Joas Schilling <nickvergessen@gmx.de> | 2010-03-26 22:33:54 +0100 |
---|---|---|
committer | Joas Schilling <nickvergessen@gmx.de> | 2010-03-26 23:27:49 +0100 |
commit | 147d6fd590b0ff0bbed153fd33dcead494f822d0 (patch) | |
tree | b139061b7bda982668f956745ac2b15d52cd0afd /tests/dbal | |
parent | c6442ce64072fd5080d1b2f3a3d595c62ccdc59c (diff) | |
download | forums-147d6fd590b0ff0bbed153fd33dcead494f822d0.tar forums-147d6fd590b0ff0bbed153fd33dcead494f822d0.tar.gz forums-147d6fd590b0ff0bbed153fd33dcead494f822d0.tar.bz2 forums-147d6fd590b0ff0bbed153fd33dcead494f822d0.tar.xz forums-147d6fd590b0ff0bbed153fd33dcead494f822d0.zip |
[feature/dbal-tests] Make some tests for return_on_error on SELECT-queries
Diffstat (limited to 'tests/dbal')
-rw-r--r-- | tests/dbal/dbal.php | 216 |
1 files changed, 208 insertions, 8 deletions
diff --git a/tests/dbal/dbal.php b/tests/dbal/dbal.php index 72e399adbe..0239f91a2d 100644 --- a/tests/dbal/dbal.php +++ b/tests/dbal/dbal.php @@ -17,27 +17,116 @@ class phpbb_dbal_test extends phpbb_database_test_case return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/three_users.xml'); } - public function test_select_row() + public static function return_on_error_select_data() + { + return array( + array('phpbb_users', "username_clean = 'bertie'", array(array('username_clean' => 'bertie'))), + array('phpbb_users', "username_clean = 'phpBB'", array()), + array('phpbb_users', 'username_clean syntax_error', false), + array('phpbb_users', 'column_not_exists = 2', false), + array('table_not_exists', 'column_not_exists = 2', false), + ); + } + + /** + * @dataProvider return_on_error_select_data + */ + public function test_return_on_error_select($table, $where, $expected) + { + $db = $this->new_dbal(); + + $db->sql_return_on_error(true); + + $result = $db->sql_query('SELECT username_clean + FROM ' . $table . ' + WHERE ' . $where . ' + ORDER BY user_id ASC'); + + $db->sql_return_on_error(false); + + $this->assertEquals($expected, $db->sql_fetchrowset($result)); + } + + public static function fetchrow_data() + { + return array( + array('', array(array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar'), + array('username_clean' => 'bertie'))), + array('user_id = 2', array(array('username_clean' => 'foobar'))), + array("username_clean = 'bertie'", array(array('username_clean' => 'bertie'))), + array("username_clean = 'phpBB'", array()), + ); + } + + /** + * @dataProvider fetchrow_data + */ + public function test_fetchrow($where, $expected) { $db = $this->new_dbal(); $result = $db->sql_query('SELECT username_clean FROM phpbb_users - WHERE user_id = 2'); - $row = $db->sql_fetchrow($result); + ' . (($where) ? ' WHERE ' . $where : '') . ' + ORDER BY user_id ASC'); - $this->assertEquals(array('username_clean' => 'foobar'), $row); + $ary = array(); + while ($row = $db->sql_fetchrow($result)) + { + $ary[] = $row; + } + $db->sql_freeresult($result); + + $this->assertEquals($expected, $ary); } - public function test_select_field() + /** + * @dataProvider fetchrow_data + */ + public function test_fetchrowset($where, $expected) { $db = $this->new_dbal(); $result = $db->sql_query('SELECT username_clean FROM phpbb_users - WHERE user_id = 2'); + ' . (($where) ? ' WHERE ' . $where : '') . ' + ORDER BY user_id ASC'); + + $this->assertEquals($expected, $db->sql_fetchrowset($result)); - $this->assertEquals('foobar', $db->sql_fetchfield('username_clean')); + $db->sql_freeresult($result); + } + + public static function fetchfield_data() + { + return array( + array('', array('barfoo', 'foobar', 'bertie')), + array('user_id = 2', array('foobar')), + array("username_clean = 'bertie'", array('bertie')), + ); + } + + /** + * @dataProvider fetchfield_data + */ + public function test_fetchfield($where, $expected) + { + $db = $this->new_dbal(); + + $result = $db->sql_query('SELECT username_clean + FROM phpbb_users + ' . (($where) ? ' WHERE ' . $where : '') . ' + ORDER BY user_id ASC'); + + $ary = array(); + while ($row = $db->sql_fetchfield('username_clean')) + { + $ary[] = $row; + } + $db->sql_freeresult($result); + + $this->assertEquals($expected, $ary); } public static function query_limit_data() @@ -70,7 +159,7 @@ class phpbb_dbal_test extends phpbb_database_test_case $result = $db->sql_query_limit('SELECT username_clean FROM phpbb_users - ORDER BY user_id', $total, $offset); + ORDER BY user_id ASC', $total, $offset); $ary = array(); while ($row = $db->sql_fetchrow($result)) @@ -81,5 +170,116 @@ class phpbb_dbal_test extends phpbb_database_test_case $this->assertEquals($expected, $ary); } + + public static function like_expression_data() + { + // * = any_char; # = one_char + return array( + array('barfoo', array(array('username_clean' => 'barfoo'))), + array('bar', array()), + array('bar*', array(array('username_clean' => 'barfoo'))), + array('*bar*', array(array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar'))), + array('*b*', array(array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar'), + array('username_clean' => 'bertie'))), + array('b*r', array()), + array('b*e', array(array('username_clean' => 'bertie'))), + array('#b*e', array()), + array('b####e', array(array('username_clean' => 'bertie'))), + ); + } + + /** + * @dataProvider like_expression_data + */ + public function test_like_expression($like_expression, $expected) + { + $db = $this->new_dbal(); + + $like_expression = str_replace('*', $db->any_char, $like_expression); + $like_expression = str_replace('#', $db->one_char, $like_expression); + $where = ($like_expression) ? 'username_clean ' . $db->sql_like_expression($like_expression) : ''; + + $result = $db->sql_query('SELECT username_clean + FROM phpbb_users + ' . (($where) ? ' WHERE ' . $where : '') . ' + ORDER BY user_id ASC'); + + $this->assertEquals($expected, $db->sql_fetchrowset($result)); + + $db->sql_freeresult($result); + } + + public static function in_set_data() + { + return array( + array('user_id', 3, false, false, array(array('username_clean' => 'bertie'))), + array('user_id', 3, false, true, array(array('username_clean' => 'bertie'))), + array('user_id', 3, true, false, array(array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar'))), + array('user_id', 3, true, true, array(array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar'))), + array('user_id', '3', false, false, array(array('username_clean' => 'bertie'))), + array('user_id', '3', false, true, array(array('username_clean' => 'bertie'))), + array('user_id', '3', true, false, array(array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar'))), + array('user_id', '3', true, true, array(array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar'))), + array('user_id', array(3), false, false, array(array('username_clean' => 'bertie'))), + array('user_id', array(3), false, true, array(array('username_clean' => 'bertie'))), + array('user_id', array(3), true, false, array(array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar'))), + array('user_id', array(3), true, true, array(array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar'))), + array('user_id', array(1, 3), false, false, array(array('username_clean' => 'barfoo'), + array('username_clean' => 'bertie'))), + array('user_id', array(1, 3), false, true, array(array('username_clean' => 'barfoo'), + array('username_clean' => 'bertie'))), + array('user_id', array(1, 3), true, false, array(array('username_clean' => 'foobar'))), + array('user_id', array(1, 3), true, true, array(array('username_clean' => 'foobar'))), + array('user_id', '', false, false, array()), + array('user_id', '', false, true, array()), + array('user_id', '', true, false, array(array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar'), + array('username_clean' => 'bertie'))), + array('user_id', '', true, true, array(array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar'), + array('username_clean' => 'bertie'))), + array('user_id', array(), false, false, false, true), + array('user_id', array(), false, true, array()), + array('user_id', array(), true, false, false, true), + array('user_id', array(), true, true, array(array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar'), + array('username_clean' => 'bertie'))), + ); + } + + /** + * @dataProvider in_set_data + */ + public function test_in_set($field, $array, $negate, $allow_empty_set, $expected, $catch_error = false) + { + $db = $this->new_dbal(); + + if ($catch_error) + { + $db->sql_return_on_error(true); + } + + $result = $db->sql_query('SELECT username_clean + FROM phpbb_users + WHERE ' . $db->sql_in_set($field, $array, $negate, $allow_empty_set) . ' + ORDER BY user_id ASC'); + + if ($catch_error) + { + $db->sql_return_on_error(falsee); + } + + $this->assertEquals($expected, $db->sql_fetchrowset($result)); + + $db->sql_freeresult($result); + } } |