BUGFIX: testing framework needs to be reset to a clean state after each test: now also nested urls and redirection state will be reverted

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@98944 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
Mateusz Uzdowski 2010-02-15 00:50:32 +00:00 committed by Sam Minnee
parent 8a0a0b3263
commit 9769a488dc

View File

@ -27,6 +27,7 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
protected $originalRequirements;
protected $originalIsRunningTest;
protected $originalTheme;
protected $originalNestedURLsState;
protected $mailer;
@ -101,6 +102,9 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
Controller::curr()->setSession(new Session(array()));
$this->originalTheme = SSViewer::current_theme();
// Save nested_urls state, so we can restore it later
$this->originalNestedURLsState = SiteTree::nested_urls();
$className = get_class($this);
$fixtureFile = eval("return {$className}::\$fixture_file;");
@ -338,6 +342,21 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
// Reset mocked datetime
SS_Datetime::clear_mock_now();
// Restore nested_urls state
if ( $this->originalNestedURLsState )
SiteTree::enable_nested_urls();
else
SiteTree::disable_nested_urls();
// Stop the redirection that might have been requested in the test.
// Note: Ideally a clean Controller should be created for each test.
// Now all tests executed in a batch share the same controller.
$controller = Controller::curr();
if ( $controller && $controller->response && $controller->response->getHeader('Location') ) {
$controller->response->setStatusCode(200);
$controller->response->removeHeader('Location');
}
}
/**
* Clear the log of emails sent