API CHANGE: Let any DataObjectDecorator define an on_db_reset() method that is called by tests, like in Versioned. (from r97734) (from r99051)

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@102827 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
Ingo Schommer 2010-04-14 03:53:44 +00:00
parent 87b98eaa66
commit 7452c4c584

View File

@ -577,9 +577,12 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
$dbConn = DB::getConn();
$dbName = $dbConn->currentDatabase();
if($dbName && DB::getConn()->databaseExists($dbName)) {
// Todo: it would be good to remove this inappropriate coupling, somehow.
// The versioned class keeps a static cache of information about temporary tables.
Versioned::on_db_reset();
// Some DataObjectsDecorators keep a static cache of information that needs to
// be reset whenever the database is killed
foreach(ClassInfo::subclassesFor('DataObjectDecorator') as $class) {
$toCall = array($class, 'on_db_reset');
if(is_callable($toCall)) call_user_func($toCall);
}
// echo "Deleted temp database " . $dbConn->currentDatabase() . "\n";
$dbConn->dropDatabase();
@ -594,10 +597,13 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
if(self::using_temp_db()) {
$dbadmin = new DatabaseAdmin();
$dbadmin->clearAllData();
// Todo: it would be good to remove this inappropriate coupling, somehow.
// The versioned class keeps a static cache of information about temporary tables.
Versioned::on_db_reset();
// Some DataObjectsDecorators keep a static cache of information that needs to
// be reset whenever the database is cleaned out
foreach(ClassInfo::subclassesFor('DataObjectDecorator') as $class) {
$toCall = array($class, 'on_db_reset');
if(is_callable($toCall)) call_user_func($toCall);
}
}
}