aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/functional/extension_acp_test.php52
-rw-r--r--tests/functional/extension_controller_test.php56
-rw-r--r--tests/functional/extension_module_test.php46
-rw-r--r--tests/functional/extension_permission_lang_test.php44
-rw-r--r--tests/functional/metadata_manager_test.php32
-rw-r--r--tests/test_framework/phpbb_database_test_case.php15
-rw-r--r--tests/test_framework/phpbb_database_test_connection_manager.php27
-rw-r--r--tests/test_framework/phpbb_test_case_helpers.php52
8 files changed, 127 insertions, 197 deletions
diff --git a/tests/functional/extension_acp_test.php b/tests/functional/extension_acp_test.php
index 9badab8ced..8614c0c963 100644
--- a/tests/functional/extension_acp_test.php
+++ b/tests/functional/extension_acp_test.php
@@ -12,34 +12,25 @@
*/
class phpbb_functional_extension_acp_test extends phpbb_functional_test_case
{
- static private $copied_files = array();
static private $helper;
- /**
- * This should only be called once before the tests are run.
- * This is used to copy the extensions to the phpBB install
- */
+ static protected $fixtures = array(
+ './',
+ );
+
static public function setUpBeforeClass()
{
- global $phpbb_root_path;
-
parent::setUpBeforeClass();
self::$helper = new phpbb_test_case_helpers(self);
+ self::$helper->copy_ext_fixtures(dirname(__FILE__) . '/../extension/ext/', self::$fixtures);
+ }
- self::$copied_files = array();
-
- if (file_exists($phpbb_root_path . 'ext/'))
- {
- // First, move any extensions setup on the board to a temp directory
- self::$copied_files = self::$helper->copy_dir($phpbb_root_path . 'ext/', $phpbb_root_path . 'store/temp_ext/');
-
- // Then empty the ext/ directory on the board (for accurate test cases)
- self::$helper->empty_dir($phpbb_root_path . 'ext/');
- }
+ static public function tearDownAfterClass()
+ {
+ parent::tearDownAfterClass();
- // Copy our ext/ files from the test case to the board
- self::$copied_files = array_merge(self::$copied_files, self::$helper->copy_dir(dirname(__FILE__) . '/../extension/ext/', $phpbb_root_path . 'ext/'));
+ self::$helper->restore_original_ext_dir();
}
public function setUp()
@@ -84,29 +75,6 @@ class phpbb_functional_extension_acp_test extends phpbb_functional_test_case
$this->add_lang('acp/extensions');
}
- /**
- * This should only be called once after the tests are run.
- * This is used to remove the files copied to the phpBB install
- */
- static public function tearDownAfterClass()
- {
- global $phpbb_root_path;
-
- if (file_exists($phpbb_root_path . 'store/temp_ext/'))
- {
- // Copy back the board installed extensions from the temp directory
- self::$helper->copy_dir($phpbb_root_path . 'store/temp_ext/', $phpbb_root_path . 'ext/');
- }
-
- // Remove all of the files we copied around (from board ext -> temp_ext, from test ext -> board ext)
- self::$helper->remove_files(self::$copied_files);
-
- if (file_exists($phpbb_root_path . 'store/temp_ext/'))
- {
- self::$helper->empty_dir($phpbb_root_path . 'store/temp_ext/');
- }
- }
-
public function test_list()
{
$crawler = self::request('GET', 'adm/index.php?i=acp_extensions&mode=main&sid=' . $this->sid);
diff --git a/tests/functional/extension_controller_test.php b/tests/functional/extension_controller_test.php
index a09035cb2b..9ddf1e3e5c 100644
--- a/tests/functional/extension_controller_test.php
+++ b/tests/functional/extension_controller_test.php
@@ -15,65 +15,27 @@ class phpbb_functional_extension_controller_test extends phpbb_functional_test_c
{
protected $phpbb_extension_manager;
+ static private $helper;
+
static protected $fixtures = array(
- 'foo/bar/config/routing.yml',
- 'foo/bar/config/services.yml',
- 'foo/bar/controller/controller.php',
- 'foo/bar/styles/prosilver/template/foo_bar_body.html',
+ 'foo/bar/config/',
+ 'foo/bar/controller/',
+ 'foo/bar/styles/prosilver/template/',
);
- /**
- * This should only be called once before the tests are run.
- * This is used to copy the fixtures to the phpBB install
- */
static public function setUpBeforeClass()
{
- global $phpbb_root_path;
parent::setUpBeforeClass();
- $directories = array(
- $phpbb_root_path . 'ext/foo/bar/',
- $phpbb_root_path . 'ext/foo/bar/config/',
- $phpbb_root_path . 'ext/foo/bar/controller/',
- $phpbb_root_path . 'ext/foo/bar/styles/prosilver/template',
- );
-
- foreach ($directories as $dir)
- {
- if (!is_dir($dir))
- {
- mkdir($dir, 0777, true);
- }
- }
-
- foreach (self::$fixtures as $fixture)
- {
- copy(
- "tests/functional/fixtures/ext/$fixture",
- "{$phpbb_root_path}ext/$fixture");
- }
+ self::$helper = new phpbb_test_case_helpers(self);
+ self::$helper->copy_ext_fixtures(dirname(__FILE__) . '/fixtures/ext/', self::$fixtures);
}
- /**
- * This should only be called once after the tests are run.
- * This is used to remove the fixtures from the phpBB install
- */
static public function tearDownAfterClass()
{
- global $phpbb_root_path;
-
- foreach (self::$fixtures as $fixture)
- {
- unlink("{$phpbb_root_path}ext/$fixture");
- }
+ parent::tearDownAfterClass();
- rmdir("{$phpbb_root_path}ext/foo/bar/config");
- rmdir("{$phpbb_root_path}ext/foo/bar/controller");
- rmdir("{$phpbb_root_path}ext/foo/bar/styles/prosilver/template");
- rmdir("{$phpbb_root_path}ext/foo/bar/styles/prosilver");
- rmdir("{$phpbb_root_path}ext/foo/bar/styles");
- rmdir("{$phpbb_root_path}ext/foo/bar");
- rmdir("{$phpbb_root_path}ext/foo");
+ self::$helper->restore_original_ext_dir();
}
public function setUp()
diff --git a/tests/functional/extension_module_test.php b/tests/functional/extension_module_test.php
index c8686e0ac6..c573ea5410 100644
--- a/tests/functional/extension_module_test.php
+++ b/tests/functional/extension_module_test.php
@@ -16,56 +16,26 @@ require_once dirname(__FILE__) . '/../../phpBB/includes/acp/acp_modules.php';
class phpbb_functional_extension_module_test extends phpbb_functional_test_case
{
protected $phpbb_extension_manager;
- static private $copied_files = array();
+
static private $helper;
- /**
- * This should only be called once before the tests are run.
- * This is used to copy the fixtures to the phpBB install
- */
+ static protected $fixtures = array(
+ './',
+ );
+
static public function setUpBeforeClass()
{
- global $phpbb_root_path;
parent::setUpBeforeClass();
self::$helper = new phpbb_test_case_helpers(self);
-
- self::$copied_files = array();
-
- if (file_exists($phpbb_root_path . 'ext/'))
- {
- // First, move any extensions setup on the board to a temp directory
- self::$copied_files = self::$helper->copy_dir($phpbb_root_path . 'ext/', $phpbb_root_path . 'store/temp_ext/');
-
- // Then empty the ext/ directory on the board (for accurate test cases)
- self::$helper->empty_dir($phpbb_root_path . 'ext/');
- }
-
- // Copy our ext/ files from the test case to the board
- self::$copied_files = array_merge(self::$copied_files, self::$helper->copy_dir(dirname(__FILE__) . '/fixtures/ext/', $phpbb_root_path . 'ext/'));
+ self::$helper->copy_ext_fixtures(dirname(__FILE__) . '/fixtures/ext/', self::$fixtures);
}
- /**
- * This should only be called once after the tests are run.
- * This is used to remove the fixtures from the phpBB install
- */
static public function tearDownAfterClass()
{
- global $phpbb_root_path;
-
- if (file_exists($phpbb_root_path . 'store/temp_ext/'))
- {
- // Copy back the board installed extensions from the temp directory
- self::$helper->copy_dir($phpbb_root_path . 'store/temp_ext/', $phpbb_root_path . 'ext/');
- }
-
- // Remove all of the files we copied around (from board ext -> temp_ext, from test ext -> board ext)
- self::$helper->remove_files(self::$copied_files);
+ parent::tearDownAfterClass();
- if (file_exists($phpbb_root_path . 'store/temp_ext/'))
- {
- self::$helper->empty_dir($phpbb_root_path . 'store/temp_ext/');
- }
+ self::$helper->restore_original_ext_dir();
}
public function setUp()
diff --git a/tests/functional/extension_permission_lang_test.php b/tests/functional/extension_permission_lang_test.php
index 9a251e8645..6c1720735c 100644
--- a/tests/functional/extension_permission_lang_test.php
+++ b/tests/functional/extension_permission_lang_test.php
@@ -16,59 +16,23 @@ class phpbb_functional_extension_permission_lang_test extends phpbb_functional_t
static private $helper;
- static private $copied_files = array();
-
static protected $fixtures = array(
'foo/bar/language/en/',
);
- /**
- * This should only be called once before the tests are run.
- * This is used to copy the fixtures to the phpBB install
- */
static public function setUpBeforeClass()
{
- global $phpbb_root_path;
parent::setUpBeforeClass();
self::$helper = new phpbb_test_case_helpers(self);
-
- self::$copied_files = array();
-
- if (file_exists($phpbb_root_path . 'ext/'))
- {
- // First, move any extensions setup on the board to a temp directory
- self::$copied_files = self::$helper->copy_dir($phpbb_root_path . 'ext/', $phpbb_root_path . 'store/temp_ext/');
-
- // Then empty the ext/ directory on the board (for accurate test cases)
- self::$helper->empty_dir($phpbb_root_path . 'ext/');
- }
-
- // Copy our ext/ files from the test case to the board
- self::$copied_files = array_merge(self::$copied_files, self::$helper->copy_dir(dirname(__FILE__) . '/fixtures/ext/' . $fixture, $phpbb_root_path . 'ext/' . $fixture));
+ self::$helper->copy_ext_fixtures(dirname(__FILE__) . '/fixtures/ext/', self::$fixtures);
}
- /**
- * This should only be called once after the tests are run.
- * This is used to remove the fixtures from the phpBB install
- */
static public function tearDownAfterClass()
{
- global $phpbb_root_path;
-
- if (file_exists($phpbb_root_path . 'store/temp_ext/'))
- {
- // Copy back the board installed extensions from the temp directory
- self::$helper->copy_dir($phpbb_root_path . 'store/temp_ext/', $phpbb_root_path . 'ext/');
- }
-
- // Remove all of the files we copied around (from board ext -> temp_ext, from test ext -> board ext)
- self::$helper->remove_files(self::$copied_files);
-
- if (file_exists($phpbb_root_path . 'store/temp_ext/'))
- {
- self::$helper->empty_dir($phpbb_root_path . 'store/temp_ext/');
- }
+ parent::tearDownAfterClass();
+
+ self::$helper->restore_original_ext_dir();
}
public function setUp()
diff --git a/tests/functional/metadata_manager_test.php b/tests/functional/metadata_manager_test.php
index 7e98b0d025..c55e7373ea 100644
--- a/tests/functional/metadata_manager_test.php
+++ b/tests/functional/metadata_manager_test.php
@@ -16,47 +16,25 @@ class phpbb_functional_metadata_manager_test extends phpbb_functional_test_case
{
protected $phpbb_extension_manager;
- static private $helpers;
+ static private $helper;
static protected $fixtures = array(
'foo/bar/',
);
- /**
- * This should only be called once before the tests are run.
- * This is used to copy the fixtures to the phpBB install
- */
static public function setUpBeforeClass()
{
- global $phpbb_root_path;
parent::setUpBeforeClass();
- self::$helpers = new phpbb_test_case_helpers(self);
-
- if (!file_exists($phpbb_root_path . 'ext/foo/bar/'))
- {
- self::$helpers->makedirs($phpbb_root_path . 'ext/foo/bar/');
- }
-
- foreach (self::$fixtures as $fixture)
- {
- self::$helpers->copy_dir(dirname(__FILE__) . '/fixtures/ext/' . $fixture, $phpbb_root_path . 'ext/' . $fixture);
- }
+ self::$helper = new phpbb_test_case_helpers(self);
+ self::$helper->copy_ext_fixtures(dirname(__FILE__) . '/fixtures/ext/', self::$fixtures);
}
- /**
- * This should only be called once after the tests are run.
- * This is used to remove the fixtures from the phpBB install
- */
static public function tearDownAfterClass()
{
- global $phpbb_root_path;
+ parent::tearDownAfterClass();
- foreach (self::$fixtures as $fixture)
- {
- self::$helpers->empty_dir($phpbb_root_path . 'ext/' . $fixture);
- }
- self::$helpers->empty_dir($phpbb_root_path . 'ext/foo/');
+ self::$helper->restore_original_ext_dir();
}
public function setUp()
diff --git a/tests/test_framework/phpbb_database_test_case.php b/tests/test_framework/phpbb_database_test_case.php
index c11537b047..c72ea5f765 100644
--- a/tests/test_framework/phpbb_database_test_case.php
+++ b/tests/test_framework/phpbb_database_test_case.php
@@ -62,6 +62,21 @@ abstract class phpbb_database_test_case extends PHPUnit_Extensions_Database_Test
}
}
+ /**
+ * Performs synchronisations for a given table/column set on the database
+ *
+ * @param array $table_column_map Information about the tables/columns to synchronise
+ *
+ * @return null
+ */
+ protected function database_synchronisation($table_column_map)
+ {
+ $config = $this->get_database_config();
+ $manager = $this->create_connection_manager($config);
+ $manager->connect();
+ $manager->database_synchronisation($table_column_map);
+ }
+
public function createXMLDataSet($path)
{
$db_config = $this->get_database_config();
diff --git a/tests/test_framework/phpbb_database_test_connection_manager.php b/tests/test_framework/phpbb_database_test_connection_manager.php
index 6bf73dcfa4..c93a777701 100644
--- a/tests/test_framework/phpbb_database_test_connection_manager.php
+++ b/tests/test_framework/phpbb_database_test_connection_manager.php
@@ -480,11 +480,32 @@ class phpbb_database_test_connection_manager
*/
public function post_setup_synchronisation($xml_data_set)
{
+ $table_names = $xml_data_set->getTableNames();
+
+ $tables = array();
+ foreach ($table_names as $table)
+ {
+ $tables[$table] = $xml_data_set->getTableMetaData($table)->getColumns();
+ }
+
+ $this->database_synchronisation($tables);
+ }
+
+ /**
+ * Performs synchronisations on the database after a fixture has been loaded
+ *
+ * @param array $table_column_map Array of tables/columns to synchronise
+ * array(table1 => array(column1, column2))
+ *
+ * @return null
+ */
+ public function database_synchronisation($table_column_map)
+ {
$this->ensure_connected(__METHOD__);
$queries = array();
- // Get escaped versions of the table names used in the fixture
- $table_names = array_map(array($this->pdo, 'PDO::quote'), $xml_data_set->getTableNames());
+ // Get escaped versions of the table names to synchronise
+ $table_names = array_map(array($this->pdo, 'PDO::quote'), array_keys($table_column_map));
switch ($this->config['dbms'])
{
@@ -541,7 +562,7 @@ class phpbb_database_test_connection_manager
while ($row = $result->fetch(PDO::FETCH_ASSOC))
{
// Get the columns used in the fixture for this table
- $column_names = $xml_data_set->getTableMetaData($row['table_name'])->getColumns();
+ $column_names = $table_column_map[$row['table_name']];
// Skip sequences that weren't specified in the fixture
if (!in_array($row['column_name'], $column_names))
diff --git a/tests/test_framework/phpbb_test_case_helpers.php b/tests/test_framework/phpbb_test_case_helpers.php
index 20ae384f21..1b08f2368f 100644
--- a/tests/test_framework/phpbb_test_case_helpers.php
+++ b/tests/test_framework/phpbb_test_case_helpers.php
@@ -18,6 +18,58 @@ class phpbb_test_case_helpers
$this->test_case = $test_case;
}
+ private $copied_files = array();
+
+ /**
+ * This should only be called once before the tests are run.
+ * This is used to copy the fixtures to the phpBB install
+ */
+ public function copy_ext_fixtures($fixtures_dir, $fixtures)
+ {
+ global $phpbb_root_path;
+
+ $this->copied_files = array();
+
+ if (file_exists($phpbb_root_path . 'ext/'))
+ {
+ // First, move any extensions setup on the board to a temp directory
+ $this->copied_files = $this->copy_dir($phpbb_root_path . 'ext/', $phpbb_root_path . 'store/temp_ext/');
+
+ // Then empty the ext/ directory on the board (for accurate test cases)
+ $this->empty_dir($phpbb_root_path . 'ext/');
+ }
+
+ // Copy our ext/ files from the test case to the board
+ foreach ($fixtures as $fixture)
+ {
+ $this->copied_files = array_merge($this->copied_files, $this->copy_dir($fixtures_dir . $fixture, $phpbb_root_path . 'ext/' . $fixture));
+ }
+ }
+
+ /**
+ * This should only be called once after the tests are run.
+ * This is used to remove the fixtures from the phpBB install
+ */
+ public function restore_original_ext_dir()
+ {
+ global $phpbb_root_path;
+
+ // Copy back the board installed extensions from the temp directory
+ if (file_exists($phpbb_root_path . 'store/temp_ext/'))
+ {
+ $this->copy_dir($phpbb_root_path . 'store/temp_ext/', $phpbb_root_path . 'ext/');
+ }
+
+ // Remove all of the files we copied around (from board ext -> temp_ext, from test ext -> board ext)
+ $this->remove_files($this->copied_files);
+ $this->copied_files = array();
+
+ if (file_exists($phpbb_root_path . 'store/temp_ext/'))
+ {
+ $this->empty_dir($phpbb_root_path . 'store/temp_ext/');
+ }
+ }
+
public function setExpectedTriggerError($errno, $message = '')
{
$exceptionName = '';