diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/RUNNING_TESTS.txt | 28 | ||||
| -rw-r--r-- | tests/dbal/auto_increment_test.php | 100 | ||||
| -rw-r--r-- | tests/dbal/db_tools_test.php | 47 | ||||
| -rw-r--r-- | tests/dbal/select_test.php | 30 | ||||
| -rw-r--r-- | tests/test_framework/phpbb_test_case_helpers.php | 14 |
5 files changed, 161 insertions, 58 deletions
diff --git a/tests/RUNNING_TESTS.txt b/tests/RUNNING_TESTS.txt index 59197acc0f..b976545c22 100644 --- a/tests/RUNNING_TESTS.txt +++ b/tests/RUNNING_TESTS.txt @@ -21,12 +21,13 @@ the following PHP extensions must be installed and enabled to run unit tests: Database Tests -------------- + By default all tests requiring a database connection will use sqlite. If you do not have sqlite installed the tests will be skipped. If you wish to run the tests on a different database you have to create a test_config.php file within -your tests directory following the same format as phpBB's config.php. An example -for mysqli can be found below. More information on configuration options can be -found on the wiki (see below). +your tests directory following the same format as phpBB's config.php. An +example for mysqli can be found below. More information on configuration +options can be found on the wiki (see below). <?php $dbms = 'mysqli'; @@ -36,8 +37,15 @@ found on the wiki (see below). $dbuser = 'user'; $dbpasswd = 'password'; -Alternatively you can specify parameters in the environment, so e.g. the following -will run phpunit with the same parameters as in the shown test_config.php file: +It is possible to have multiple test_config.php files, for example if you +are testing on multiple databases. You can specify which test_config.php file +to use in the environment as follows: + + $ PHPBB_TEST_CONFIG=tests/test_config.php phpunit + +Alternatively you can specify parameters in the environment, so e.g. the +following will run phpunit with the same parameters as in the shown +test_config.php file: $ PHPBB_TEST_DBMS='mysqli' PHPBB_TEST_DBHOST='localhost' \ PHPBB_TEST_DBNAME='database' PHPBB_TEST_DBUSER='user' \ @@ -46,16 +54,18 @@ will run phpunit with the same parameters as in the shown test_config.php file: Running ======= -Once the prerequisites are installed, run the tests from the project root directory (above phpBB): +Once the prerequisites are installed, run the tests from the project root +directory (above phpBB): $ phpunit Slow tests -------------- + Certain tests, such as the UTF-8 normalizer or the DNS tests tend to be slow. Thus these tests are in the `slow` group, which is excluded by default. You can -enable slow tests by copying the phpunit.xml.all file to phpunit.xml. If you only -want the slow tests, run: +enable slow tests by copying the phpunit.xml.all file to phpunit.xml. If you +only want the slow tests, run: $ phpunit --group slow @@ -63,4 +73,4 @@ More Information ================ Further information is available on phpbb wiki: -http://wiki.phpbb.com/display/DEV/Unit+Tests +http://wiki.phpbb.com/Unit_Tests diff --git a/tests/dbal/auto_increment_test.php b/tests/dbal/auto_increment_test.php new file mode 100644 index 0000000000..e87fc1c6bd --- /dev/null +++ b/tests/dbal/auto_increment_test.php @@ -0,0 +1,100 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2012 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php'; +require_once dirname(__FILE__) . '/../../phpBB/includes/db/db_tools.php'; + +class phpbb_dbal_auto_increment_test extends phpbb_database_test_case +{ + protected $db; + protected $tools; + protected $table_exists; + protected $table_data; + + public function getDataSet() + { + return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/config.xml'); + } + + protected function setUp() + { + parent::setUp(); + + $this->db = $this->new_dbal(); + $this->tools = new phpbb_db_tools($this->db); + + $this->table_data = array( + 'COLUMNS' => array( + 'c_id' => array('UINT', NULL, 'auto_increment'), + 'c_uint' => array('UINT', 4), + ), + 'PRIMARY_KEY' => 'c_id', + ); + $this->tools->sql_create_table('prefix_table_name', $this->table_data); + $this->table_exists = true; + } + + protected function tearDown() + { + if ($this->table_exists) + { + $this->tools->sql_table_drop('prefix_table_name'); + } + + parent::tearDown(); + } + + static protected function get_default_values() + { + return array( + 'c_uint' => 0, + ); + } + + public function test_auto_increment() + { + $sql = 'DELETE FROM prefix_table_name'; + $result = $this->db->sql_query($sql); + + $row1 = array_merge(self::get_default_values(), array( + 'c_uint' => 1, + )); + $row2 = array_merge(self::get_default_values(), array( + 'c_uint' => 2, + )); + + $sql = 'INSERT INTO prefix_table_name ' . $this->db->sql_build_array('INSERT', $row1); + $result = $this->db->sql_query($sql); + $id1 = $this->db->sql_nextid(); + + $sql = 'INSERT INTO prefix_table_name ' . $this->db->sql_build_array('INSERT', $row2); + $result = $this->db->sql_query($sql); + $id2 = $this->db->sql_nextid(); + + $this->assertGreaterThan($id1, $id2, 'Auto increment should increase the id value'); + + $sql = "SELECT * + FROM prefix_table_name WHERE c_id = $id1"; + $result = $this->db->sql_query($sql); + $row_actual = $this->db->sql_fetchrow($result); + $this->db->sql_freeresult($result); + + $row1['c_id'] = $id1; + $this->assertEquals($row1, $row_actual); + + $sql = "SELECT * + FROM prefix_table_name WHERE c_id = $id2"; + $result = $this->db->sql_query($sql); + $row_actual = $this->db->sql_fetchrow($result); + $this->db->sql_freeresult($result); + + $row2['c_id'] = $id2; + $this->assertEquals($row2, $row_actual); + } +} diff --git a/tests/dbal/db_tools_test.php b/tests/dbal/db_tools_test.php index c7ddb88ce8..9bed0648cd 100644 --- a/tests/dbal/db_tools_test.php +++ b/tests/dbal/db_tools_test.php @@ -106,7 +106,7 @@ class phpbb_dbal_db_tools_test extends phpbb_database_test_case 'c_bool' => 0, 'c_vchar' => '', 'c_vchar_size' => '', - 'c_char_size' => '', + 'c_char_size' => 'abcd', 'c_xstext' => '', 'c_stext' => '', 'c_text' => '', @@ -189,51 +189,6 @@ class phpbb_dbal_db_tools_test extends phpbb_database_test_case $this->assertEquals($row_expect[$column_name], $row_actual[$column_name], "Column $column_name of type $type should have equal return and input value."); } - public function test_auto_increment() - { - $sql = 'DELETE FROM prefix_table_name'; - $result = $this->db->sql_query($sql); - - $row1 = array_merge(self::get_default_values(), array( - 'c_uint' => 1, - 'c_vchar' => '1', // these values are necessary to avoid unique index issues - 'c_vchar_size' => '1', - )); - $row2 = array_merge(self::get_default_values(), array( - 'c_uint' => 2, - 'c_vchar' => '2', - 'c_vchar_size' => '2', - )); - - $sql = 'INSERT INTO prefix_table_name ' . $this->db->sql_build_array('INSERT', $row1); - $result = $this->db->sql_query($sql); - $id1 = $this->db->sql_nextid(); - - $sql = 'INSERT INTO prefix_table_name ' . $this->db->sql_build_array('INSERT', $row2); - $result = $this->db->sql_query($sql); - $id2 = $this->db->sql_nextid(); - - $this->assertGreaterThan($id1, $id2, 'Auto increment should increase the id value'); - - $sql = "SELECT * - FROM prefix_table_name WHERE c_id = $id1"; - $result = $this->db->sql_query($sql); - $row_actual = $this->db->sql_fetchrow($result); - $this->db->sql_freeresult($result); - - $row1['c_id'] = $id1; - $this->assertEquals($row1, $row_actual); - - $sql = "SELECT * - FROM prefix_table_name WHERE c_id = $id2"; - $result = $this->db->sql_query($sql); - $row_actual = $this->db->sql_fetchrow($result); - $this->db->sql_freeresult($result); - - $row2['c_id'] = $id2; - $this->assertEquals($row2, $row_actual); - } - public function test_list_columns() { $this->assertEquals( diff --git a/tests/dbal/select_test.php b/tests/dbal/select_test.php index 21b12777dc..81cd13b006 100644 --- a/tests/dbal/select_test.php +++ b/tests/dbal/select_test.php @@ -125,6 +125,32 @@ class phpbb_dbal_select_test extends phpbb_database_test_case $this->assertEquals($expected, $ary); } + public static function fetchfield_seek_data() + { + return array( + array(1, 'foobar'), + array(0, 'barfoo'), + array(2, 'bertie'), + ); + } + + /** + * @dataProvider fetchfield_seek_data + */ + public function test_fetchfield_seek($rownum, $expected) + { + $db = $this->new_dbal(); + + $result = $db->sql_query('SELECT username_clean + FROM phpbb_users + ORDER BY user_id ASC'); + + $field = $db->sql_fetchfield('username_clean', $rownum, $result); + $db->sql_freeresult($result); + + $this->assertEquals($expected, $field); + } + public static function query_limit_data() { return array( @@ -349,7 +375,9 @@ class phpbb_dbal_select_test extends phpbb_database_test_case { $db = $this->new_dbal(); - $sql = 'SELECT * FROM (SELECT 1) AS TBL WHERE 1 = 0'; + $sql = 'SELECT user_id + FROM phpbb_users + WHERE 1 = 0'; $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); diff --git a/tests/test_framework/phpbb_test_case_helpers.php b/tests/test_framework/phpbb_test_case_helpers.php index b46c36efaa..2a3c27f9f9 100644 --- a/tests/test_framework/phpbb_test_case_helpers.php +++ b/tests/test_framework/phpbb_test_case_helpers.php @@ -58,9 +58,19 @@ class phpbb_test_case_helpers )); } - if (file_exists(dirname(__FILE__) . '/../test_config.php')) + if (isset($_SERVER['PHPBB_TEST_CONFIG'])) { - include(dirname(__FILE__) . '/../test_config.php'); + // Could be an absolute path + $test_config = $_SERVER['PHPBB_TEST_CONFIG']; + } + else + { + $test_config = dirname(__FILE__) . '/../test_config.php'; + } + + if (file_exists($test_config)) + { + include($test_config); $config = array_merge($config, array( 'dbms' => $dbms, |
