mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
Nest and unnest Config and Controller for each test and test suite
This commit is contained in:
parent
38ca214e2b
commit
3ee5b24898
@ -166,6 +166,11 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
|
|||||||
protected $model;
|
protected $model;
|
||||||
|
|
||||||
public function setUp() {
|
public function setUp() {
|
||||||
|
|
||||||
|
//nest config and injector for each test so they are effectively sandboxed per test
|
||||||
|
Config::nest();
|
||||||
|
Injector::nest();
|
||||||
|
|
||||||
// We cannot run the tests on this abstract class.
|
// We cannot run the tests on this abstract class.
|
||||||
if(get_class($this) == "SapphireTest") $this->skipTest = true;
|
if(get_class($this) == "SapphireTest") $this->skipTest = true;
|
||||||
|
|
||||||
@ -285,6 +290,10 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
|
|||||||
* for tearing down the state again.
|
* for tearing down the state again.
|
||||||
*/
|
*/
|
||||||
public function setUpOnce() {
|
public function setUpOnce() {
|
||||||
|
|
||||||
|
//nest config and injector for each suite so they are effectively sandboxed
|
||||||
|
Config::nest();
|
||||||
|
Injector::nest();
|
||||||
$isAltered = false;
|
$isAltered = false;
|
||||||
|
|
||||||
if(!Director::isDev()) {
|
if(!Director::isDev()) {
|
||||||
@ -333,22 +342,10 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
|
|||||||
* tearDown method that's called once per test class rather once per test method.
|
* tearDown method that's called once per test class rather once per test method.
|
||||||
*/
|
*/
|
||||||
public function tearDownOnce() {
|
public function tearDownOnce() {
|
||||||
// If we have made changes to the extensions present, then migrate the database schema.
|
//unnest injector / config now that the test suite is over
|
||||||
if($this->extensionsToReapply || $this->extensionsToRemove) {
|
// this will reset all the extensions on the object too (see setUpOnce)
|
||||||
// Remove extensions added for testing
|
Injector::unnest();
|
||||||
foreach($this->extensionsToRemove as $class => $extensions) {
|
Config::unnest();
|
||||||
foreach($extensions as $extension) {
|
|
||||||
$class::remove_extension($extension);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reapply ones removed
|
|
||||||
foreach($this->extensionsToReapply as $class => $extensions) {
|
|
||||||
foreach($extensions as $extension) {
|
|
||||||
$class::add_extension($extension);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if($this->extensionsToReapply || $this->extensionsToRemove || $this->extraDataObjects) {
|
if($this->extensionsToReapply || $this->extensionsToRemove || $this->extraDataObjects) {
|
||||||
$this->resetDBSchema();
|
$this->resetDBSchema();
|
||||||
@ -501,6 +498,9 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
|
|||||||
$controller->response->setStatusCode(200);
|
$controller->response->setStatusCode(200);
|
||||||
$controller->response->removeHeader('Location');
|
$controller->response->removeHeader('Location');
|
||||||
}
|
}
|
||||||
|
//unnest injector / config now that tests are over
|
||||||
|
Injector::unnest();
|
||||||
|
Config::unnest();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function assertContains(
|
public static function assertContains(
|
||||||
|
@ -18,9 +18,6 @@ class DirectorTest extends SapphireTest {
|
|||||||
public function setUp() {
|
public function setUp() {
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
// Required for testRequestFilterInDirectorTest
|
|
||||||
Injector::nest();
|
|
||||||
|
|
||||||
// Hold the original request URI once so it doesn't get overwritten
|
// Hold the original request URI once so it doesn't get overwritten
|
||||||
if(!self::$originalRequestURI) {
|
if(!self::$originalRequestURI) {
|
||||||
self::$originalRequestURI = $_SERVER['REQUEST_URI'];
|
self::$originalRequestURI = $_SERVER['REQUEST_URI'];
|
||||||
@ -53,9 +50,6 @@ class DirectorTest extends SapphireTest {
|
|||||||
public function tearDown() {
|
public function tearDown() {
|
||||||
// TODO Remove director rule, currently API doesnt allow this
|
// TODO Remove director rule, currently API doesnt allow this
|
||||||
|
|
||||||
// Remove base URL override (setting to false reverts to default behaviour)
|
|
||||||
Config::inst()->update('Director', 'alternate_base_url', false);
|
|
||||||
|
|
||||||
$_GET = $this->originalGet;
|
$_GET = $this->originalGet;
|
||||||
$_SESSION = $this->originalSession;
|
$_SESSION = $this->originalSession;
|
||||||
|
|
||||||
@ -68,8 +62,6 @@ class DirectorTest extends SapphireTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Injector::unnest();
|
|
||||||
|
|
||||||
parent::tearDown();
|
parent::tearDown();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -391,7 +391,7 @@ class ConfigManifestTest extends SapphireTest {
|
|||||||
|
|
||||||
public function testEnvironmentRules() {
|
public function testEnvironmentRules() {
|
||||||
foreach (array('dev', 'test', 'live') as $env) {
|
foreach (array('dev', 'test', 'live') as $env) {
|
||||||
Config::inst()->nest();
|
Config::nest();
|
||||||
|
|
||||||
Config::inst()->update('Director', 'environment_type', $env);
|
Config::inst()->update('Director', 'environment_type', $env);
|
||||||
$config = $this->getConfigFixtureValue('Environment');
|
$config = $this->getConfigFixtureValue('Environment');
|
||||||
@ -403,13 +403,11 @@ class ConfigManifestTest extends SapphireTest {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Config::inst()->unnest();
|
Config::unnest();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testDynamicEnvironmentRules() {
|
public function testDynamicEnvironmentRules() {
|
||||||
Config::inst()->nest();
|
|
||||||
|
|
||||||
// First, make sure environment_type is live
|
// First, make sure environment_type is live
|
||||||
Config::inst()->update('Director', 'environment_type', 'live');
|
Config::inst()->update('Director', 'environment_type', 'live');
|
||||||
$this->assertEquals('live', Config::inst()->get('Director', 'environment_type'));
|
$this->assertEquals('live', Config::inst()->get('Director', 'environment_type'));
|
||||||
@ -423,8 +421,6 @@ class ConfigManifestTest extends SapphireTest {
|
|||||||
|
|
||||||
// And that the dynamic rule was calculated correctly
|
// And that the dynamic rule was calculated correctly
|
||||||
$this->assertEquals('dev', Config::inst()->get('ConfigManifestTest', 'DynamicEnvironment'));
|
$this->assertEquals('dev', Config::inst()->get('ConfigManifestTest', 'DynamicEnvironment'));
|
||||||
|
|
||||||
Config::inst()->unnest();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMultipleRules() {
|
public function testMultipleRules() {
|
||||||
|
@ -11,7 +11,7 @@ class DevAdminControllerTest extends FunctionalTest {
|
|||||||
public function setUp(){
|
public function setUp(){
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
Config::nest()->update('DevelopmentAdmin', 'registered_controllers', array(
|
Config::inst()->update('DevelopmentAdmin', 'registered_controllers', array(
|
||||||
'x1' => array(
|
'x1' => array(
|
||||||
'controller' => 'DevAdminControllerTest_Controller1',
|
'controller' => 'DevAdminControllerTest_Controller1',
|
||||||
'links' => array(
|
'links' => array(
|
||||||
@ -28,11 +28,6 @@ class DevAdminControllerTest extends FunctionalTest {
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function tearDown(){
|
|
||||||
parent::tearDown();
|
|
||||||
Config::unnest();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public function testGoodRegisteredControllerOutput(){
|
public function testGoodRegisteredControllerOutput(){
|
||||||
// Check for the controller running from the registered url above
|
// Check for the controller running from the registered url above
|
||||||
|
@ -43,7 +43,6 @@ class DataObjectSchemaGenerationTest extends SapphireTest {
|
|||||||
// Table will have been initially created by the $extraDataObjects setting
|
// Table will have been initially created by the $extraDataObjects setting
|
||||||
|
|
||||||
// Let's insert a new field here
|
// Let's insert a new field here
|
||||||
Config::nest();
|
|
||||||
Config::inst()->update('DataObjectSchemaGenerationTest_DO', 'db', array(
|
Config::inst()->update('DataObjectSchemaGenerationTest_DO', 'db', array(
|
||||||
'SecretField' => 'Varchar(100)'
|
'SecretField' => 'Varchar(100)'
|
||||||
));
|
));
|
||||||
@ -55,9 +54,6 @@ class DataObjectSchemaGenerationTest extends SapphireTest {
|
|||||||
$needsUpdating = $db->doesSchemaNeedUpdating();
|
$needsUpdating = $db->doesSchemaNeedUpdating();
|
||||||
$db->cancelSchemaUpdate();
|
$db->cancelSchemaUpdate();
|
||||||
$this->assertTrue($needsUpdating);
|
$this->assertTrue($needsUpdating);
|
||||||
|
|
||||||
// Restore db configuration
|
|
||||||
Config::unnest();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -78,7 +74,6 @@ class DataObjectSchemaGenerationTest extends SapphireTest {
|
|||||||
$this->assertFalse($needsUpdating);
|
$this->assertFalse($needsUpdating);
|
||||||
|
|
||||||
// Test with alternate index format, although these indexes are the same
|
// Test with alternate index format, although these indexes are the same
|
||||||
Config::nest();
|
|
||||||
Config::inst()->remove('DataObjectSchemaGenerationTest_IndexDO', 'indexes');
|
Config::inst()->remove('DataObjectSchemaGenerationTest_IndexDO', 'indexes');
|
||||||
Config::inst()->update('DataObjectSchemaGenerationTest_IndexDO', 'indexes',
|
Config::inst()->update('DataObjectSchemaGenerationTest_IndexDO', 'indexes',
|
||||||
Config::inst()->get('DataObjectSchemaGenerationTest_IndexDO', 'indexes_alt')
|
Config::inst()->get('DataObjectSchemaGenerationTest_IndexDO', 'indexes_alt')
|
||||||
@ -91,9 +86,6 @@ class DataObjectSchemaGenerationTest extends SapphireTest {
|
|||||||
$needsUpdating = $db->doesSchemaNeedUpdating();
|
$needsUpdating = $db->doesSchemaNeedUpdating();
|
||||||
$db->cancelSchemaUpdate();
|
$db->cancelSchemaUpdate();
|
||||||
$this->assertFalse($needsUpdating);
|
$this->assertFalse($needsUpdating);
|
||||||
|
|
||||||
// Restore old index format
|
|
||||||
Config::unnest();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -106,7 +98,6 @@ class DataObjectSchemaGenerationTest extends SapphireTest {
|
|||||||
// Table will have been initially created by the $extraDataObjects setting
|
// Table will have been initially created by the $extraDataObjects setting
|
||||||
|
|
||||||
// Update the SearchFields index here
|
// Update the SearchFields index here
|
||||||
Config::nest();
|
|
||||||
Config::inst()->update('DataObjectSchemaGenerationTest_IndexDO', 'indexes', array(
|
Config::inst()->update('DataObjectSchemaGenerationTest_IndexDO', 'indexes', array(
|
||||||
'SearchFields' => array(
|
'SearchFields' => array(
|
||||||
'value' => 'Title'
|
'value' => 'Title'
|
||||||
@ -120,9 +111,6 @@ class DataObjectSchemaGenerationTest extends SapphireTest {
|
|||||||
$needsUpdating = $db->doesSchemaNeedUpdating();
|
$needsUpdating = $db->doesSchemaNeedUpdating();
|
||||||
$db->cancelSchemaUpdate();
|
$db->cancelSchemaUpdate();
|
||||||
$this->assertTrue($needsUpdating);
|
$this->assertTrue($needsUpdating);
|
||||||
|
|
||||||
// Restore old indexes
|
|
||||||
Config::unnest();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -10,6 +10,7 @@ class MySQLDatabaseTest extends SapphireTest {
|
|||||||
);
|
);
|
||||||
|
|
||||||
public function setUp() {
|
public function setUp() {
|
||||||
|
parent::setUp();
|
||||||
if(DB::getConn() instanceof MySQLDatabase) {
|
if(DB::getConn() instanceof MySQLDatabase) {
|
||||||
MySQLDatabaseTest_DO::config()->db = array(
|
MySQLDatabaseTest_DO::config()->db = array(
|
||||||
'MultiEnum1' => 'MultiEnum("A, B, C, D","")',
|
'MultiEnum1' => 'MultiEnum("A, B, C, D","")',
|
||||||
@ -18,7 +19,6 @@ class MySQLDatabaseTest extends SapphireTest {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
$this->markTestSkipped('This test requires the Config API to be immutable');
|
$this->markTestSkipped('This test requires the Config API to be immutable');
|
||||||
parent::setUp();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,16 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
class OembedTest extends SapphireTest {
|
class OembedTest extends SapphireTest {
|
||||||
public function setUp() {
|
|
||||||
parent::setUp();
|
|
||||||
Config::nest();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function tearDown() {
|
|
||||||
Config::unnest();
|
|
||||||
parent::tearDown();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testGetOembedFromUrl() {
|
public function testGetOembedFromUrl() {
|
||||||
Config::inst()->update('Oembed', 'providers', array(
|
Config::inst()->update('Oembed', 'providers', array(
|
||||||
'http://*.silverstripe.com/watch*'=>'http://www.silverstripe.com/oembed/'
|
'http://*.silverstripe.com/watch*'=>'http://www.silverstripe.com/oembed/'
|
||||||
|
@ -14,16 +14,10 @@ class BasicAuthTest extends FunctionalTest {
|
|||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
// Fixtures assume Email is the field used to identify the log in identity
|
// Fixtures assume Email is the field used to identify the log in identity
|
||||||
Config::nest();
|
|
||||||
Member::config()->unique_identifier_field = 'Email';
|
Member::config()->unique_identifier_field = 'Email';
|
||||||
Member::config()->lock_out_after_incorrect_logins = 10;
|
Member::config()->lock_out_after_incorrect_logins = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function tearDown() {
|
|
||||||
Config::unnest();
|
|
||||||
parent::tearDown();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testBasicAuthEnabledWithoutLogin() {
|
public function testBasicAuthEnabledWithoutLogin() {
|
||||||
$origUser = isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : null;
|
$origUser = isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : null;
|
||||||
$origPw = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : null;
|
$origPw = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : null;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user