diff options
author | Andreas Fischer <bantu@phpbb.com> | 2013-06-11 14:39:50 +0200 |
---|---|---|
committer | Andreas Fischer <bantu@phpbb.com> | 2013-06-11 14:39:50 +0200 |
commit | b74b84dbec62c57dc7d0a0c9d01bb64f88a74338 (patch) | |
tree | 10c1535688c651fce9239bd8ab4565479bcd1838 /tests/test_framework | |
parent | fba093de0578881b78128c5faa71a5194fe24b4e (diff) | |
parent | 949a443bfe6f75e0cb3d944d05b25797c8a63697 (diff) | |
download | forums-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.php | 15 | ||||
-rw-r--r-- | tests/test_framework/phpbb_database_test_connection_manager.php | 27 |
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)) |