diff options
Diffstat (limited to 'tests')
| -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))  | 
