mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-10 13:28:55 +00:00
[feature/dbal-tests] Added database test & refactored test framework
There is now a phpbb_database_test_case which can be used as a base class for tests that require database access. You have to set up a test_config.php file in your tests/ directory containing host, user, pass etc. Extra test functionality has been moved to phpbb_test_case_helpers to provide the same functionality in database tests and regular tests without duplicating the code. This is achieved through delegation of method calls.
This commit is contained in:
parent
c71b1245ec
commit
94bc65e203
4 changed files with 138 additions and 21 deletions
|
@ -33,4 +33,7 @@ if (version_compare(PHPUnit_Runner_Version::id(), '3.3.0', '<'))
|
|||
}
|
||||
|
||||
require_once 'PHPUnit/Framework.php';
|
||||
require_once 'PHPUnit/Extensions/Database/TestCase.php';
|
||||
require_once 'test_framework/phpbb_test_case_helpers.php';
|
||||
require_once 'test_framework/phpbb_test_case.php';
|
||||
require_once 'test_framework/phpbb_database_test_case.php';
|
||||
|
|
42
tests/test_framework/phpbb_database_test_case.php
Normal file
42
tests/test_framework/phpbb_database_test_case.php
Normal file
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2008 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
abstract class phpbb_database_test_case extends PHPUnit_Extensions_Database_TestCase
|
||||
{
|
||||
protected $test_case_helpers;
|
||||
|
||||
public function init_test_case_helpers()
|
||||
{
|
||||
if (!$this->test_case_helpers)
|
||||
{
|
||||
$this->test_case_helpers = new phpbb_test_case_helpers($this);
|
||||
}
|
||||
}
|
||||
|
||||
public function getConnection()
|
||||
{
|
||||
$this->init_test_case_helpers();
|
||||
$database_config = $this->test_case_helpers->get_database_config();
|
||||
|
||||
$pdo = new PDO('mysql:host=' . $database_config['dbhost'] . ';dbname=' . $database_config['dbname'], $database_config['dbuser'], $database_config['dbpasswd']);
|
||||
return $this->createDefaultDBConnection($pdo, 'testdb');
|
||||
}
|
||||
|
||||
public function new_dbal()
|
||||
{
|
||||
$this->init_test_case_helpers();
|
||||
return $this->test_case_helpers->new_dbal();
|
||||
}
|
||||
|
||||
public function setExpectedTriggerError($errno, $message = '')
|
||||
{
|
||||
$this->init_test_case_helpers();
|
||||
$this->test_case_helpers->setExpectedTriggerError($errno, $message);
|
||||
}
|
||||
}
|
|
@ -9,29 +9,19 @@
|
|||
|
||||
class phpbb_test_case extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
protected $expectedTriggerError = false;
|
||||
protected $test_case_helpers;
|
||||
|
||||
public function init_test_case_helpers()
|
||||
{
|
||||
if (!$this->test_case_helpers)
|
||||
{
|
||||
$this->test_case_helpers = new phpbb_test_case_helpers($this);
|
||||
}
|
||||
}
|
||||
|
||||
public function setExpectedTriggerError($errno, $message = '')
|
||||
{
|
||||
$exceptionName = '';
|
||||
switch ($errno)
|
||||
{
|
||||
case E_NOTICE:
|
||||
case E_STRICT:
|
||||
PHPUnit_Framework_Error_Notice::$enabled = true;
|
||||
$exceptionName = 'PHPUnit_Framework_Error_Notice';
|
||||
break;
|
||||
|
||||
case E_WARNING:
|
||||
PHPUnit_Framework_Error_Warning::$enabled = true;
|
||||
$exceptionName = 'PHPUnit_Framework_Error_Warning';
|
||||
break;
|
||||
|
||||
default:
|
||||
$exceptionName = 'PHPUnit_Framework_Error';
|
||||
break;
|
||||
}
|
||||
$this->expectedTriggerError = true;
|
||||
$this->setExpectedException($exceptionName, (string) $message, $errno);
|
||||
$this->init_test_case_helpers();
|
||||
$this->test_case_helpers->setExpectedTriggerError($errno, $message);
|
||||
}
|
||||
}
|
||||
|
|
82
tests/test_framework/phpbb_test_case_helpers.php
Normal file
82
tests/test_framework/phpbb_test_case_helpers.php
Normal file
|
@ -0,0 +1,82 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2008 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
class phpbb_test_case_helpers
|
||||
{
|
||||
protected $expectedTriggerError = false;
|
||||
|
||||
protected $test_case;
|
||||
|
||||
public function __construct($test_case)
|
||||
{
|
||||
$this->test_case = $test_case;
|
||||
}
|
||||
|
||||
public function get_database_config()
|
||||
{
|
||||
if (!file_exists('test_config.php'))
|
||||
{
|
||||
trigger_error("You have to create a test_config.php like this:
|
||||
<?php
|
||||
$dbms = 'mysqli';
|
||||
$dbhost = 'localhost';
|
||||
$dbport = '';
|
||||
$dbname = 'database';
|
||||
$dbuser = 'user';
|
||||
$dbpasswd = 'password';", E_USER_ERROR);
|
||||
}
|
||||
include('test_config.php');
|
||||
|
||||
return array(
|
||||
'dbms' => $dbms,
|
||||
'dbhost' => $dbhost,
|
||||
'dbport' => $dbport,
|
||||
'dbname' => $dbname,
|
||||
'dbuser' => $dbuser,
|
||||
'dbpasswd' => $dbpasswd,
|
||||
);
|
||||
}
|
||||
|
||||
public function new_dbal()
|
||||
{
|
||||
global $phpbb_root_path, $phpEx;
|
||||
$config = $this->get_database_config();
|
||||
|
||||
require_once '../phpBB/includes/db/' . $config['dbms'] . '.php';
|
||||
$dbal = 'dbal_' . $config['dbms'];
|
||||
$db = new $dbal();
|
||||
$db->sql_connect($config['dbhost'], $config['dbuser'], $config['dbpasswd'], $config['dbname'], $config['dbport']);
|
||||
|
||||
return $db;
|
||||
}
|
||||
|
||||
public function setExpectedTriggerError($errno, $message = '')
|
||||
{
|
||||
$exceptionName = '';
|
||||
switch ($errno)
|
||||
{
|
||||
case E_NOTICE:
|
||||
case E_STRICT:
|
||||
PHPUnit_Framework_Error_Notice::$enabled = true;
|
||||
$exceptionName = 'PHPUnit_Framework_Error_Notice';
|
||||
break;
|
||||
|
||||
case E_WARNING:
|
||||
PHPUnit_Framework_Error_Warning::$enabled = true;
|
||||
$exceptionName = 'PHPUnit_Framework_Error_Warning';
|
||||
break;
|
||||
|
||||
default:
|
||||
$exceptionName = 'PHPUnit_Framework_Error';
|
||||
break;
|
||||
}
|
||||
$this->expectedTriggerError = true;
|
||||
$this->test_case->setExpectedException($exceptionName, (string) $message, $errno);
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue