aboutsummaryrefslogtreecommitdiffstats
path: root/tests/dbal
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2010-03-26 22:33:54 +0100
committerJoas Schilling <nickvergessen@gmx.de>2010-03-26 23:27:49 +0100
commit147d6fd590b0ff0bbed153fd33dcead494f822d0 (patch)
treeb139061b7bda982668f956745ac2b15d52cd0afd /tests/dbal
parentc6442ce64072fd5080d1b2f3a3d595c62ccdc59c (diff)
downloadforums-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.php216
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);
+ }
}