aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_framework
diff options
context:
space:
mode:
authorAndreas Fischer <bantu@phpbb.com>2013-06-11 14:39:50 +0200
committerAndreas Fischer <bantu@phpbb.com>2013-06-11 14:39:50 +0200
commitb74b84dbec62c57dc7d0a0c9d01bb64f88a74338 (patch)
tree10c1535688c651fce9239bd8ab4565479bcd1838 /tests/test_framework
parentfba093de0578881b78128c5faa71a5194fe24b4e (diff)
parent949a443bfe6f75e0cb3d944d05b25797c8a63697 (diff)
downloadforums-b74b84dbec62c57dc7d0a0c9d01bb64f88a74338.tar
forums-b74b84dbec62c57dc7d0a0c9d01bb64f88a74338.tar.gz
forums-b74b84dbec62c57dc7d0a0c9d01bb64f88a74338.tar.bz2
forums-b74b84dbec62c57dc7d0a0c9d01bb64f88a74338.tar.xz
forums-b74b84dbec62c57dc7d0a0c9d01bb64f88a74338.zip
Merge branch 'develop-olympus' into develop
* develop-olympus: [ticket/11601] Add protected method for database sync and call it [ticket/11601] Split post_setup_synchronisation logic from xml parsing
Diffstat (limited to 'tests/test_framework')
-rw-r--r--tests/test_framework/phpbb_database_test_case.php15
-rw-r--r--tests/test_framework/phpbb_database_test_connection_manager.php27
2 files changed, 39 insertions, 3 deletions
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))