mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
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:
parent
8a0a0b3263
commit
9769a488dc
@ -27,6 +27,7 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
|
|||||||
protected $originalRequirements;
|
protected $originalRequirements;
|
||||||
protected $originalIsRunningTest;
|
protected $originalIsRunningTest;
|
||||||
protected $originalTheme;
|
protected $originalTheme;
|
||||||
|
protected $originalNestedURLsState;
|
||||||
|
|
||||||
protected $mailer;
|
protected $mailer;
|
||||||
|
|
||||||
@ -102,6 +103,9 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
|
|||||||
|
|
||||||
$this->originalTheme = SSViewer::current_theme();
|
$this->originalTheme = SSViewer::current_theme();
|
||||||
|
|
||||||
|
// Save nested_urls state, so we can restore it later
|
||||||
|
$this->originalNestedURLsState = SiteTree::nested_urls();
|
||||||
|
|
||||||
$className = get_class($this);
|
$className = get_class($this);
|
||||||
$fixtureFile = eval("return {$className}::\$fixture_file;");
|
$fixtureFile = eval("return {$className}::\$fixture_file;");
|
||||||
|
|
||||||
@ -338,6 +342,21 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
|
|||||||
|
|
||||||
// Reset mocked datetime
|
// Reset mocked datetime
|
||||||
SS_Datetime::clear_mock_now();
|
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
|
* Clear the log of emails sent
|
||||||
|
Loading…
x
Reference in New Issue
Block a user