'override', 'a' => array( 'b' => array( 'c' => 'C', 'c2' => 'D' ) ), ); protected $defaultConfig; protected $dummyConfigFilePath1; protected $dummyConfigFilePath2; public function setUp() { $this->defaultConfig = array('session' => array('save_path' => session_save_path())); $this->dummyConfigFilePath1 = realpath(dirname(__FILE__) . '/../../../config/configuration.local.php'); $this->dummyConfigFilePath2 = realpath(dirname(__FILE__) . '/../../../config/configuration.logger.quiet.php'); } public function testConfigurationInstanceIsTheSame() { $this->assertSame(Configuration::getInstance(), Configuration::getInstance()); } public function testInitialDefaultConfigContainsOnlyDefaultSessionSavePath() { $this->assertSame(Configuration::getInstance()->getConfig(), $this->defaultConfig); } public function testConfigChangesAfterSettingCustomConfig() { $preConfig = Configuration::getInstance()->getConfig(); Configuration::getInstance()->setCustomConfig($this->testConfig); $postConfig = Configuration::getInstance()->getConfig(); $this->assertNotSame($preConfig, $postConfig); } public function testCustomConfigGetsMergedProperly() { Configuration::getInstance()->setCustomConfig($this->testConfig); $this->assertSame(Configuration::getInstance()->getConfig(), $this->testConfig); } public function testReturnsFalseIfHasKeyButNotMostNestedKey() { Configuration::getInstance()->setCustomConfig($this->defaultConfig); Configuration::getInstance()->setCustomConfig($this->testConfig); $this->assertEquals(Configuration::has(array('session', 'save_path')), false); } public function testReturnsFalseIfHasNotInitialKeyButHasNestedKey() { Configuration::getInstance()->setCustomConfig($this->defaultConfig); $this->assertEquals(Configuration::has(array('z', 'save_path')), false); } public function testReturnsFalseIfHasNoneOfKeyPath() { Configuration::getInstance()->setCustomConfig($this->defaultConfig); $this->assertEquals(Configuration::has(array('z', 'w')), false); } public function testReturnsTrueIfHasKeyPath() { Configuration::getInstance()->setCustomConfig($this->defaultConfig); $this->assertEquals(Configuration::has(array('session', 'save_path')), true); } public function testCanGetNestedKeyValueFromKeysList() { Configuration::getInstance()->setCustomConfig($this->defaultConfig); $this->assertSame( Configuration::get(array('session', 'save_path')), $this->defaultConfig['session']['save_path'] ); } public function testReturnsDefaultParamIfKeyNotSet() { Configuration::getInstance()->setCustomConfig($this->defaultConfig); $default = "some_random_thing"; $this->assertSame( Configuration::get(array('x', 'y'), $default), $default ); } public function testKeysInDotNotationGetConvertedToKeysArray() { $this->assertSame( Configuration::parseKeys('a.b.c'), array('a', 'b', 'c') ); } public function testKeysInDotNotationGetsSameResult() { Configuration::getInstance()->setCustomConfig($this->defaultConfig); Configuration::getInstance()->setCustomConfig($this->testConfig); $this->assertSame( Configuration::get('a.b.c'), Configuration::get(array('a', 'b', 'c')) ); } public function testGetWithoutParamReturnsFullConfigArray() { Configuration::getInstance()->setCustomConfig($this->testConfig); $this->assertSame(Configuration::get(), $this->testConfig); } public function testDummyConfigFileExists() { $this->assertEquals(file_exists($this->dummyConfigFilePath1), true); } public function testFileCustomConfigGetsLoadedIfFileExists() { $configPriorToFileLoading = Configuration::get(); Configuration::setConfigFilePath($this->dummyConfigFilePath1); $this->assertSame(Configuration::get(), array_replace_recursive($this->testConfig, include $this->dummyConfigFilePath1)); } public function testSetConfigFilePathWithSecondParamTrueClearsPreviousConfig() { $configPriorToFileLoading = Configuration::get(); Configuration::setConfigFilePath($this->dummyConfigFilePath2, true); $this->assertSame(Configuration::get(), include $this->dummyConfigFilePath2); } }