BUG Fix unset config options returning isset() = true

Fixes #4791
This commit is contained in:
Damian Mooyman 2016-08-02 18:07:31 +12:00
parent 96b061ffff
commit cd80d501f9
No known key found for this signature in database
GPG Key ID: 78B823A10DE27D1A
2 changed files with 27 additions and 3 deletions

View File

@ -881,6 +881,7 @@ class Config_ForClass {
/**
* @param string $name
* @return mixed
*/
public function __get($name) {
return Config::inst()->get($this->class, $name);
@ -894,6 +895,16 @@ class Config_ForClass {
return Config::inst()->update($this->class, $name, $val);
}
/**
* @param string $name
* @return bool
*/
public function __isset($name)
{
$val = $this->__get($name);
return isset($val);
}
/**
* @param string $name
* @param int $sourceOptions

View File

@ -82,15 +82,15 @@ class ConfigTest_TestNest extends Object implements TestOnly {
}
class ConfigTest extends SapphireTest {
protected $depSettings = null;
public function setUp() {
parent::setUp();
$this->depSettings = Deprecation::dump_settings();
Deprecation::set_enabled(false);
}
public function tearDown() {
Deprecation::restore_settings($this->depSettings);
parent::tearDown();
@ -262,6 +262,19 @@ class ConfigTest extends SapphireTest {
$this->assertEquals(Object::static_lookup('ConfigTest_DefinesFooDoesntExtendObject', 'bar'), null);
}
public function testForClass() {
$config = ConfigTest_DefinesFoo::config();
// Set values
$this->assertTrue(isset($config->foo), 'foo is set');
$this->assertFalse(empty($config->foo), 'foo is not empty');
$this->assertEquals(1, $config->foo, 'foo is 1');
// Unset values
$this->assertFalse(isset($config->bar), 'bar is not set');
$this->assertTrue(empty($config->bar), 'bar is empty');
$this->assertEquals(null, $config->bar, 'bar is accessible but empty');
}
public function testFragmentOrder() {
$this->markTestIncomplete();
}