mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-07 20:08:53 +00:00
[ticket/13740] Fixes and Tests for database helper
PHPBB3-13740
This commit is contained in:
parent
8bfd29e86d
commit
5ad0af3d3d
2 changed files with 153 additions and 1 deletions
|
@ -43,7 +43,8 @@ class database
|
|||
*/
|
||||
public function __construct(\phpbb\filesystem\filesystem_interface $filesystem, $phpbb_root_path)
|
||||
{
|
||||
$this->filesystem = $filesystem;
|
||||
$this->filesystem = $filesystem;
|
||||
$this->phpbb_root_path = $phpbb_root_path;
|
||||
|
||||
// DBMS supported by phpBB
|
||||
$this->supported_dbms = array(
|
||||
|
|
151
tests/installer/database_helper_test.php
Normal file
151
tests/installer/database_helper_test.php
Normal file
|
@ -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_',
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue