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') 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 9d54867485300eefe7fcd8e8c2080eb655e713ed Mon Sep 17 00:00:00 2001 From: Mate Bartus Date: Wed, 8 Jul 2015 01:00:28 +0200 Subject: [ticket/13740] Test navigation provider PHPBB3-13740 --- tests/installer/navigation_provider_test.php | 34 ++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 tests/installer/navigation_provider_test.php (limited to 'tests') diff --git a/tests/installer/navigation_provider_test.php b/tests/installer/navigation_provider_test.php new file mode 100644 index 0000000000..5bfce0eba8 --- /dev/null +++ b/tests/installer/navigation_provider_test.php @@ -0,0 +1,34 @@ + + * @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_navigation_provider_test extends phpbb_test_case +{ + public function test_navigation() + { + // Mock nav interface + $nav_mock = $this->getMockBuilder('\phpbb\install\helper\navigation\navigation_interface') + ->method('get') + ->willReturn(array('foo' => 'bar')) + ->getMock(); + + // Set up dependencies + $container = new phpbb_mock_container_builder(); + $container->set('foo', $nav_mock); + $nav_collection = new \phpbb\di\service_collection($container); + $nav_collection->add('foo'); + + // Let's test + $nav_provider = new \phpbb\install\helper\navigation\navigation_provider($nav_collection); + $this->assertEquals(array('foo' => 'bar'), $nav_provider->get()); + } +} -- cgit v1.2.1 From 612eead5a9932d459d8b65f9217f895c33b51c39 Mon Sep 17 00:00:00 2001 From: Mate Bartus Date: Wed, 8 Jul 2015 01:27:05 +0200 Subject: [ticket/13740] Installer config test PHPBB3-13740 --- tests/installer/installer_config_test.php | 86 +++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 tests/installer/installer_config_test.php (limited to 'tests') diff --git a/tests/installer/installer_config_test.php b/tests/installer/installer_config_test.php new file mode 100644 index 0000000000..d1110bf8f8 --- /dev/null +++ b/tests/installer/installer_config_test.php @@ -0,0 +1,86 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +use phpbb\install\helper\config; + +class phpbb_installer_config_test extends phpbb_test_case +{ + /** + * @var \phpbb\install\helper\config + */ + private $config; + + public function setUp() + { + $phpbb_root_path = __DIR__ . './../../phpBB/'; + $filesystem = $this->getMock('\phpbb\filesystem\filesystem'); + $php_ini = $this->getMockBuilder('\phpbb\php\ini') + ->method('get_int') + ->willReturn(-1) + ->method('get_bytes') + ->willReturn(-1) + ->getMock(); + + $this->config = new config($filesystem, $php_ini, $phpbb_root_path); + } + + /** + * @covers config::set + * @covers config::get + */ + public function test_set_get_var() + { + $this->config->set('foo', 'bar'); + $this->assertEquals('bar', $this->config->get('foo')); + } + + public function test_get_time_remaining() + { + $this->assertGreaterThan(0, $this->config->get_time_remaining()); + } + + public function test_get_memory_remaining() + { + $this->assertGreaterThan(0, $this->config->get_memory_remaining()); + } + + /** + * @covers config::set_finished_task + * @covers config::set_active_module + * @covers config::set_task_progress_count + * @covers config::increment_current_task_progress + * @covers config::get_progress_data + */ + public function test_progress_tracking() + { + $this->config->set_finished_task('foo', 3); + $this->config->set_active_module('bar', 4); + $this->config->set_task_progress_count(10); + $this->config->increment_current_task_progress(); + + $this->assertContains(array('current_task_progress' => 1), $this->config->get_progress_data()); + + $this->config->increment_current_task_progress(2); + + $this->assertEquals(array( + 'last_task_module_index' => 4, + 'last_task_module_name' => 'bar', // Stores the service name of the latest finished module + 'last_task_index' => 3, + 'last_task_name' => 'foo', // Stores the service name of the latest finished task + 'max_task_progress' => 10, + 'current_task_progress' => 3, + ), + $this->config->get_progress_data() + ); + } +} -- 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 ++++---------------- tests/installer/installer_config_test.php | 11 ++++++----- tests/installer/navigation_provider_test.php | 8 ++++---- 3 files changed, 14 insertions(+), 25 deletions(-) (limited to 'tests') 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', ';', ), ); diff --git a/tests/installer/installer_config_test.php b/tests/installer/installer_config_test.php index d1110bf8f8..6c0079a1ec 100644 --- a/tests/installer/installer_config_test.php +++ b/tests/installer/installer_config_test.php @@ -25,11 +25,11 @@ class phpbb_installer_config_test extends phpbb_test_case $phpbb_root_path = __DIR__ . './../../phpBB/'; $filesystem = $this->getMock('\phpbb\filesystem\filesystem'); $php_ini = $this->getMockBuilder('\phpbb\php\ini') - ->method('get_int') - ->willReturn(-1) - ->method('get_bytes') - ->willReturn(-1) ->getMock(); + $php_ini->method('get_int') + ->willReturn(-1); + $php_ini->method('get_bytes') + ->willReturn(-1); $this->config = new config($filesystem, $php_ini, $phpbb_root_path); } @@ -68,7 +68,8 @@ class phpbb_installer_config_test extends phpbb_test_case $this->config->set_task_progress_count(10); $this->config->increment_current_task_progress(); - $this->assertContains(array('current_task_progress' => 1), $this->config->get_progress_data()); + $progress_data = $this->config->get_progress_data(); + $this->assertEquals(1, $progress_data['current_task_progress']); $this->config->increment_current_task_progress(2); diff --git a/tests/installer/navigation_provider_test.php b/tests/installer/navigation_provider_test.php index 5bfce0eba8..ea39af66cd 100644 --- a/tests/installer/navigation_provider_test.php +++ b/tests/installer/navigation_provider_test.php @@ -16,14 +16,14 @@ class phpbb_installer_navigation_provider_test extends phpbb_test_case public function test_navigation() { // Mock nav interface - $nav_mock = $this->getMockBuilder('\phpbb\install\helper\navigation\navigation_interface') - ->method('get') - ->willReturn(array('foo' => 'bar')) + $nav_stub = $this->getMockBuilder('\phpbb\install\helper\navigation\navigation_interface') ->getMock(); + $nav_stub->method('get') + ->willReturn(array('foo' => 'bar')); // Set up dependencies $container = new phpbb_mock_container_builder(); - $container->set('foo', $nav_mock); + $container->set('foo', $nav_stub); $nav_collection = new \phpbb\di\service_collection($container); $nav_collection->add('foo'); -- 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') 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 62103cec300ddadb904862ee2a74d68f71eb32ca Mon Sep 17 00:00:00 2001 From: Mate Bartus Date: Thu, 9 Jul 2015 15:26:48 +0200 Subject: [ticket/13740] Use service collection instead of array of task names PHPBB3-13740 --- tests/installer/installer_config_test.php | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'tests') diff --git a/tests/installer/installer_config_test.php b/tests/installer/installer_config_test.php index 6c0079a1ec..4b83eb9a8f 100644 --- a/tests/installer/installer_config_test.php +++ b/tests/installer/installer_config_test.php @@ -63,8 +63,8 @@ class phpbb_installer_config_test extends phpbb_test_case */ public function test_progress_tracking() { - $this->config->set_finished_task('foo', 3); - $this->config->set_active_module('bar', 4); + $this->config->set_finished_task('foo'); + $this->config->set_active_module('bar'); $this->config->set_task_progress_count(10); $this->config->increment_current_task_progress(); @@ -74,10 +74,8 @@ class phpbb_installer_config_test extends phpbb_test_case $this->config->increment_current_task_progress(2); $this->assertEquals(array( - 'last_task_module_index' => 4, - 'last_task_module_name' => 'bar', // Stores the service name of the latest finished module - 'last_task_index' => 3, - 'last_task_name' => 'foo', // Stores the service name of the latest finished task + 'last_task_module_name' => 'bar', + 'last_task_name' => 'foo', 'max_task_progress' => 10, 'current_task_progress' => 3, ), -- cgit v1.2.1 From 051b7d1867351df293d055b62e0eb051758f90da Mon Sep 17 00:00:00 2001 From: Mate Bartus Date: Fri, 10 Jul 2015 14:54:21 +0200 Subject: [ticket/13740] Module base test PHPBB3-13740 --- tests/installer/mocks/test_installer_module.php | 20 +++++++ tests/installer/mocks/test_installer_task_mock.php | 44 +++++++++++++++ tests/installer/module_base_test.php | 65 ++++++++++++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 tests/installer/mocks/test_installer_module.php create mode 100644 tests/installer/mocks/test_installer_task_mock.php create mode 100644 tests/installer/module_base_test.php (limited to 'tests') diff --git a/tests/installer/mocks/test_installer_module.php b/tests/installer/mocks/test_installer_module.php new file mode 100644 index 0000000000..e6ebbba263 --- /dev/null +++ b/tests/installer/mocks/test_installer_module.php @@ -0,0 +1,20 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +class test_installer_module extends \phpbb\install\module_base +{ + public function get_navigation_stage_path() + { + return array(); + } +} diff --git a/tests/installer/mocks/test_installer_task_mock.php b/tests/installer/mocks/test_installer_task_mock.php new file mode 100644 index 0000000000..ccd62b3bf4 --- /dev/null +++ b/tests/installer/mocks/test_installer_task_mock.php @@ -0,0 +1,44 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +class test_installer_task_mock extends \phpbb\install\task_base +{ + private $task_was_runned; + + public function __construct() + { + $this->task_was_runned = false; + + parent::__construct(); + } + + public function run() + { + $this->task_was_runned = true; + } + + public function was_task_runned() + { + return $this->task_was_runned; + } + + public function get_task_lang_name() + { + return ''; + } + + public static function get_step_count() + { + return 2; + } +} diff --git a/tests/installer/module_base_test.php b/tests/installer/module_base_test.php new file mode 100644 index 0000000000..fd92c9b674 --- /dev/null +++ b/tests/installer/module_base_test.php @@ -0,0 +1,65 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +require_once __DIR__ . '/mocks/test_installer_task_mock.php'; +require_once __DIR__ . '/mocks/test_installer_module.php'; + +class module_base_test extends phpbb_test_case +{ + /** + * @var \phpbb\install\module_interface + */ + protected $module; + + /** + * @var phpbb_mock_container_builder + */ + protected $container; + + public function setUp() + { + // DI container mock + $this->container = new phpbb_mock_container_builder(); + $this->container->set('task_one', new test_installer_task_mock()); + $this->container->set('task_two', new test_installer_task_mock()); + + // the collection + $module_collection = new \phpbb\di\ordered_service_collection($this->container); + $module_collection->add('task_one'); + $module_collection->add('task_two'); + $module_collection->add_service_class('task_one', 'test_installer_task_mock'); + $module_collection->add_service_class('task_two', 'test_installer_task_mock'); + + $this->module = new test_installer_module($module_collection, true, false); + + $iohandler = $this->getMock('\phpbb\install\helper\iohandler\iohandler_interface'); + $config = new \phpbb\install\helper\config(new \phpbb\filesystem\filesystem(), new \phpbb\php\ini(), '', 'php'); + $this->module->setup($config, $iohandler); + } + + public function test_run() + { + $this->module->run(); + + $task = $this->container->get('task_one'); + $this->assertTrue($task->was_task_runned()); + + $task = $this->container->get('task_two'); + $this->assertTrue($task->was_task_runned()); + } + + public function test_step_count() + { + $this->assertEquals(4, $this->module->get_step_count()); + } +} -- cgit v1.2.1