From 83099798e3d05292a3bdbdba370a032523b9509d Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Sun, 12 Mar 2017 09:48:53 +0100 Subject: [PATCH] Test the configuration manager --- Service/ConfigurationManager.php | 8 +- Tests/Unit/Model/ConfigurationTest.php | 6 +- .../Unit/Service/ConfigurationManagerTest.php | 97 +++++++++++++++++++ 3 files changed, 106 insertions(+), 5 deletions(-) create mode 100644 Tests/Unit/Service/ConfigurationManagerTest.php diff --git a/Service/ConfigurationManager.php b/Service/ConfigurationManager.php index 1c2c56b2..41f59da2 100644 --- a/Service/ConfigurationManager.php +++ b/Service/ConfigurationManager.php @@ -39,13 +39,17 @@ public function addConfiguration($name, Configuration $configuration) * * @return null|Configuration */ - public function getConfiguration($name = 'default') + public function getConfiguration($name = null) { + if (empty($name)) { + return $this->getConfiguration('default'); + } + if (isset($this->configuration[$name])) { return $this->configuration[$name]; } - if ($name === 'default' || empty($name)) { + if ($name === 'default') { $name = $this->getFirstName(); if (isset($this->configuration[$name])) { return $this->configuration[$name]; diff --git a/Tests/Unit/Model/ConfigurationTest.php b/Tests/Unit/Model/ConfigurationTest.php index ced601ba..d25d731f 100644 --- a/Tests/Unit/Model/ConfigurationTest.php +++ b/Tests/Unit/Model/ConfigurationTest.php @@ -17,7 +17,7 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase { public function testAccessors() { - $key2Function = $this->getDefaultData(); + $key2Function = self::getDefaultData(); $conf = new Configuration($key2Function); foreach ($key2Function as $key => $value) { @@ -31,7 +31,7 @@ public function testAccessors() public function testGetPathsToTranslationFiles() { - $data = $this->getDefaultData(); + $data = self::getDefaultData(); $data['external_translations_dirs'] = ['foo', 'bar']; $data['output_dir'] = 'biz'; @@ -43,7 +43,7 @@ public function testGetPathsToTranslationFiles() /** * @return array */ - private function getDefaultData() + public static function getDefaultData() { return [ 'name' => 'getName', diff --git a/Tests/Unit/Service/ConfigurationManagerTest.php b/Tests/Unit/Service/ConfigurationManagerTest.php new file mode 100644 index 00000000..e9a86445 --- /dev/null +++ b/Tests/Unit/Service/ConfigurationManagerTest.php @@ -0,0 +1,97 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Translation\Bundle\Tests\Unit\Service; + +use Translation\Bundle\Model\Configuration; +use Translation\Bundle\Service\ConfigurationManager; +use Translation\Bundle\Tests\Unit\Model\ConfigurationTest; + +class ConfigurationManagerTest extends \PHPUnit_Framework_TestCase +{ + public function testGetConfigurationFirst() + { + $manager = new ConfigurationManager(); + $correctConfiguration = $this->createConfiguration(['name' => 'correct']); + + $manager->addConfiguration('foo', $correctConfiguration); + $manager->addConfiguration('bar', $this->createConfiguration()); + + $this->assertEquals($correctConfiguration, $manager->getConfiguration()); + $this->assertEquals($correctConfiguration, $manager->getConfiguration('default')); + } + + public function testGetConfigurationDefault() + { + $manager = new ConfigurationManager(); + $correctConfiguration = $this->createConfiguration(['name' => 'correct']); + + $manager->addConfiguration('bar', $this->createConfiguration()); + $manager->addConfiguration('default', $correctConfiguration); + + $this->assertEquals($correctConfiguration, $manager->getConfiguration()); + $this->assertEquals($correctConfiguration, $manager->getConfiguration('default')); + $this->assertEquals($correctConfiguration, $manager->getConfiguration('')); + $this->assertEquals($correctConfiguration, $manager->getConfiguration(null)); + } + + public function testGetConfigurationMissing() + { + $manager = new ConfigurationManager(); + $correctConfiguration = $this->createConfiguration(['name' => 'correct']); + + $manager->addConfiguration('bar', $this->createConfiguration()); + $manager->addConfiguration('default', $correctConfiguration); + + $this->assertNull($manager->getConfiguration('missing')); + } + + public function testFirstName() + { + $manager = new ConfigurationManager(); + $manager->addConfiguration('foo', $this->createConfiguration()); + $manager->addConfiguration('bar', $this->createConfiguration()); + + $this->assertEquals('foo', $manager->getFirstName()); + } + + public function testFirstNameEmpty() + { + $manager = new ConfigurationManager(); + + $this->assertNull($manager->getFirstName()); + } + + public function testGetNames() + { + $manager = new ConfigurationManager(); + $manager->addConfiguration('foo', $this->createConfiguration()); + $manager->addConfiguration('bar', $this->createConfiguration()); + + $names = $manager->getNames(); + $this->assertEquals(['foo', 'bar'], $names); + } + + public function testGetNamesEmpty() + { + $manager = new ConfigurationManager(); + + $names = $manager->getNames(); + $this->assertEquals([], $names); + } + + private function createConfiguration($data = []) + { + $default = ConfigurationTest::getDefaultData(); + + return new Configuration(array_merge($default, $data)); + } +}