aboutsummaryrefslogtreecommitdiffstats
path: root/tests/installer
diff options
context:
space:
mode:
authorMate Bartus <mate.bartus@gmail.com>2015-07-07 19:16:58 +0200
committerMate Bartus <mate.bartus@gmail.com>2015-07-08 01:28:11 +0200
commit5ad0af3d3df698f7c749fee1f65962e0ba3cf663 (patch)
tree8ae4423d79bf4002865cc5f238c870fe13fe41f6 /tests/installer
parent8bfd29e86dac675919d3572aac3ba5891d9d844e (diff)
downloadforums-5ad0af3d3df698f7c749fee1f65962e0ba3cf663.tar
forums-5ad0af3d3df698f7c749fee1f65962e0ba3cf663.tar.gz
forums-5ad0af3d3df698f7c749fee1f65962e0ba3cf663.tar.bz2
forums-5ad0af3d3df698f7c749fee1f65962e0ba3cf663.tar.xz
forums-5ad0af3d3df698f7c749fee1f65962e0ba3cf663.zip
[ticket/13740] Fixes and Tests for database helper
PHPBB3-13740
Diffstat (limited to 'tests/installer')
-rw-r--r--tests/installer/database_helper_test.php151
1 files changed, 151 insertions, 0 deletions
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 @@
+<?php
+/**
+ *
+ * This file is part of the phpBB Forum Software package.
+ *
+ * @copyright (c) phpBB Limited <https://www.phpbb.com>
+ * @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_',
+ ),
+ );
+ }
+}