From 5ad0af3d3df698f7c749fee1f65962e0ba3cf663 Mon Sep 17 00:00:00 2001 From: Mate Bartus Date: Tue, 7 Jul 2015 19:16:58 +0200 Subject: [ticket/13740] Fixes and Tests for database helper PHPBB3-13740 --- tests/installer/database_helper_test.php | 151 +++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 tests/installer/database_helper_test.php (limited to 'tests/installer/database_helper_test.php') diff --git a/tests/installer/database_helper_test.php b/tests/installer/database_helper_test.php new file mode 100644 index 0000000000..80c76c004b --- /dev/null +++ b/tests/installer/database_helper_test.php @@ -0,0 +1,151 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +class phpbb_installer_database_helper_test extends phpbb_test_case +{ + /** + * @var phpbb\install\helper\database + */ + private $database_helper; + + /** + * @var phpbb\db\driver\driver_interface + */ + private $dbms_mock; + + public function setUp() + { + $filesystem = new \phpbb\filesystem\filesystem(); + $phpbb_root_path = ''; + $this->database_helper = new \phpbb\install\helper\database($filesystem, $phpbb_root_path); + + // I used oracle because it tolerates the shortest table prefixes + // so it's the simplest to write test cases for + $this->dbms_mock = $this->getMock('\phpbb\db\driver\oracle'); + } + + /** + * @param string $input + * @param string $expected + * + * @dataProvider comment_string_provider + */ + public function test_remove_comments($input, $expected) + { + $this->assertEquals($expected, $this->database_helper->remove_comments($input)); + } + + /** + * @param array $expected + * @param string $sql + * @param string $delimiter + * + * @dataProvider sql_file_string_provider + */ + public function test_split_sql($expected, $sql, $delimiter) + { + $this->assertEquals($expected, $this->database_helper->split_sql_file($sql, $delimiter)); + } + + /** + * @param bool|array $expected + * @param string $test_string + * + * @dataProvider prefix_test_case_provider + */ + public function test_validate_table_prefix($expected, $test_string) + { + $this->assertEquals($expected, $this->database_helper->validate_table_prefix($this->dbms_mock, $test_string)); + } + + // Data provider for the remove comments function + public function comment_string_provider() + { + return array( + array( + 'abc', + 'abc', + ), + array( + 'abc /* asdf */', + "abc \n", + ), + array( + 'abc /* asdf */ f', + "abc \n f", + ), + array( + '# abc', + "\n", + ), + ); + } + + // Data provider for the sql file splitter function + public function sql_file_string_provider() + { + return array( + array( + array( + 'abcd "efgh"' . "\n" . 'qwerty', + 'SELECT * FROM table', + ), + 'abcd "efgh" + qwerty; + SELECT * FROM table', + ';', + ), + array( + array( + 'SELECT * FROM table1', + 'SELECT * FROM table2 WHERE i_am="king"', + ), + 'SELECT * FROM table1; SELECT * FROM table2 WHERE i_am="king"', + ';', + ), + ); + } + + // Test data for prefix test + public function prefix_test_case_provider() + { + return array( + array( + true, + 'phpbb_', + ), + array( + true, + 'phpbb', + ), + array( + array( + array('title' => 'INST_ERR_DB_INVALID_PREFIX'), + ), + '1hpbb_', + ), + array( + array( + array('title' => 'INST_ERR_DB_INVALID_PREFIX'), + ), + '?hpbb_', + ), + array( + array( + array('title' => 'INST_ERR_PREFIX_TOO_LONG'), + ), + 'php_bb_', + ), + ); + } +} -- cgit v1.2.1 From 1c01252b5d899c488e007659234b6224ac3f4c19 Mon Sep 17 00:00:00 2001 From: Mate Bartus Date: Wed, 8 Jul 2015 13:17:42 +0200 Subject: [ticket/13740] Fix test stubs PHPBB3-13740 --- tests/installer/database_helper_test.php | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) (limited to 'tests/installer/database_helper_test.php') diff --git a/tests/installer/database_helper_test.php b/tests/installer/database_helper_test.php index 80c76c004b..84445c86c5 100644 --- a/tests/installer/database_helper_test.php +++ b/tests/installer/database_helper_test.php @@ -28,10 +28,6 @@ class phpbb_installer_database_helper_test extends phpbb_test_case $filesystem = new \phpbb\filesystem\filesystem(); $phpbb_root_path = ''; $this->database_helper = new \phpbb\install\helper\database($filesystem, $phpbb_root_path); - - // I used oracle because it tolerates the shortest table prefixes - // so it's the simplest to write test cases for - $this->dbms_mock = $this->getMock('\phpbb\db\driver\oracle'); } /** @@ -65,7 +61,7 @@ class phpbb_installer_database_helper_test extends phpbb_test_case */ public function test_validate_table_prefix($expected, $test_string) { - $this->assertEquals($expected, $this->database_helper->validate_table_prefix($this->dbms_mock, $test_string)); + $this->assertEquals($expected, $this->database_helper->validate_table_prefix('oracle', $test_string)); } // Data provider for the remove comments function @@ -100,17 +96,9 @@ class phpbb_installer_database_helper_test extends phpbb_test_case 'abcd "efgh"' . "\n" . 'qwerty', 'SELECT * FROM table', ), - 'abcd "efgh" - qwerty; - SELECT * FROM table', - ';', - ), - array( - array( - 'SELECT * FROM table1', - 'SELECT * FROM table2 WHERE i_am="king"', - ), - 'SELECT * FROM table1; SELECT * FROM table2 WHERE i_am="king"', + 'abcd "efgh"' . "\n" . + 'qwerty' . "\n" . + 'SELECT * FROM table', ';', ), ); -- cgit v1.2.1 From 794726a464452a6056d8a2ba06c4394767d4c497 Mon Sep 17 00:00:00 2001 From: Mate Bartus Date: Wed, 8 Jul 2015 18:08:50 +0200 Subject: [ticket/13740] Fix database test PHPBB3-13740 --- tests/installer/database_helper_test.php | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'tests/installer/database_helper_test.php') diff --git a/tests/installer/database_helper_test.php b/tests/installer/database_helper_test.php index 84445c86c5..d2ebe76ad5 100644 --- a/tests/installer/database_helper_test.php +++ b/tests/installer/database_helper_test.php @@ -18,11 +18,6 @@ class phpbb_installer_database_helper_test extends phpbb_test_case */ private $database_helper; - /** - * @var phpbb\db\driver\driver_interface - */ - private $dbms_mock; - public function setUp() { $filesystem = new \phpbb\filesystem\filesystem(); @@ -61,7 +56,7 @@ class phpbb_installer_database_helper_test extends phpbb_test_case */ public function test_validate_table_prefix($expected, $test_string) { - $this->assertEquals($expected, $this->database_helper->validate_table_prefix('oracle', $test_string)); + $this->assertEquals($expected, $this->database_helper->validate_table_prefix('sqlite3', $test_string)); } // Data provider for the remove comments function @@ -97,7 +92,7 @@ class phpbb_installer_database_helper_test extends phpbb_test_case 'SELECT * FROM table', ), 'abcd "efgh"' . "\n" . - 'qwerty' . "\n" . + 'qwerty;' . "\n" . 'SELECT * FROM table', ';', ), @@ -130,9 +125,16 @@ class phpbb_installer_database_helper_test extends phpbb_test_case ), array( array( - array('title' => 'INST_ERR_PREFIX_TOO_LONG'), + array('title' => array('INST_ERR_PREFIX_TOO_LONG', 200)), + ), + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', + ), + array( + array( + array('title' => 'INST_ERR_DB_INVALID_PREFIX'), + array('title' => array('INST_ERR_PREFIX_TOO_LONG', 200)), ), - 'php_bb_', + '_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', ), ); } -- cgit v1.2.1 From 635b5999b915c982616153f31f8dbc61f996be08 Mon Sep 17 00:00:00 2001 From: Mate Bartus Date: Sat, 19 Sep 2015 19:56:01 +0200 Subject: [ticket/14178] Fix installer's database helper test PHPBB3-14178 --- tests/installer/database_helper_test.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'tests/installer/database_helper_test.php') diff --git a/tests/installer/database_helper_test.php b/tests/installer/database_helper_test.php index d2ebe76ad5..ed355884f6 100644 --- a/tests/installer/database_helper_test.php +++ b/tests/installer/database_helper_test.php @@ -56,7 +56,23 @@ class phpbb_installer_database_helper_test extends phpbb_test_case */ public function test_validate_table_prefix($expected, $test_string) { - $this->assertEquals($expected, $this->database_helper->validate_table_prefix('sqlite3', $test_string)); + $db_helper_mock = $this->getMockBuilder('\phpbb\install\helper\database') + ->setMethods(array('get_available_dbms')) + ->disableOriginalConstructor() + ->getMock(); + + $db_helper_mock->method('get_available_dbms') + ->willReturn(array('sqlite3' => array( + 'LABEL' => 'SQLite3', + 'SCHEMA' => 'sqlite', + 'MODULE' => 'sqlite3', + 'DELIM' => ';', + 'DRIVER' => 'phpbb\db\driver\sqlite3', + 'AVAILABLE' => true, + '2.0.x' => false, + ))); + + $this->assertEquals($expected, $db_helper_mock->validate_table_prefix('sqlite3', $test_string)); } // Data provider for the remove comments function -- cgit v1.2.1