Merge pull request 'fix: #33454 Site config was not set in the correct order' (#2) from 33454/feat-site-settings-for-business-settings into master

Reviewed-on: #2
This commit is contained in:
norb 2024-07-30 12:48:29 +00:00
commit e72fa80d63
5 changed files with 39 additions and 7 deletions

View file

@ -153,7 +153,7 @@ class Settings implements \Iterator, \Countable
// load local config without merging - we need it here for the mode // load local config without merging - we need it here for the mode
$conf = $this->buildFileName(); $conf = $this->buildFileName();
$localConf = false; $localConf = [];
if (file_exists($conf)) $localConf = require($conf); if (file_exists($conf)) $localConf = require($conf);
// if a mode was set in the constructor do not overwrite it // if a mode was set in the constructor do not overwrite it
@ -169,7 +169,7 @@ class Settings implements \Iterator, \Countable
$siteConf = $this->buildFileName(self::SITE); $siteConf = $this->buildFileName(self::SITE);
if (file_exists($siteConf)) if (file_exists($siteConf))
{ {
$localConf = array_replace_recursive($this->settings, require($siteConf)); $localConf = array_replace_recursive($localConf, require($siteConf));
} }
} }

View file

@ -30,7 +30,7 @@ class SettingsTest extends TestCase
public function testConstruct() public function testConstruct()
{ {
$cfg = new Settings(); $cfg = new Settings();
$this->assertNotEmpty($cfg); $this->assertIsObject($cfg);
} }
/** /**
@ -69,7 +69,7 @@ class SettingsTest extends TestCase
{ {
$cfg = new Settings(); $cfg = new Settings();
$cfg = $this->appPath($cfg)->load(); $cfg = $this->appPath($cfg)->load();
$this->assertNotEmpty($cfg); $this->assertIsObject($cfg);
return $cfg; return $cfg;
} }
@ -130,6 +130,22 @@ class SettingsTest extends TestCase
$this->assertEquals(42, $cfg->answer); $this->assertEquals(42, $cfg->answer);
} }
/**
*/
public function testLoadingOrder()
{
$cfg = new Settings();
$cfg = $this->appPath($cfg, 'order')->site('site')->load();
$this->assertEquals('default', $cfg->testFiles);
$this->assertEquals('conf', $cfg->testFiles2);
$this->assertEquals('site', $cfg->testFile);
$this->assertEquals(42, $cfg->answer);
return $cfg;
}
/** /**
*/ */
public function testTestingOverride() public function testTestingOverride()

View file

@ -0,0 +1,5 @@
<?php return [
'answer' => 1,
'testFile' => 'conf',
'testFiles2' => 'conf'
];

View file

@ -0,0 +1,7 @@
<?php return [
'mode' => 'prod',
'answer' => 0,
'testFile' => 'default',
'testFiles' => 'default',
'testFiles2' => 'default'
];

View file

@ -0,0 +1,4 @@
<?php return [
'answer' => 42,
'testFile' => 'site'
];