diff --git a/.gitignore b/.gitignore index 678f3ed..04f5bda 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ vendor/ main.uml composer.lock +.phpunit.result.cache diff --git a/lib/Configs/ConfigBuilder.php b/lib/Configs/ConfigBuilder.php index 78a6d12..1ce2013 100644 --- a/lib/Configs/ConfigBuilder.php +++ b/lib/Configs/ConfigBuilder.php @@ -27,15 +27,16 @@ class ConfigBuilder implements ConfigurationInterface { ->arrayNode('logger') ->canBeEnabled() ->children() - ->scalarNode('file') - ->end() + ->scalarNode('file')->end() ->scalarNode('level') ->defaultValue('ERROR') ->validate() ->IfNotInArray(['DEBUG', 'INFO', 'NOTICE', 'WARNING', 'ERROR', 'CRITICAL', 'ALERT', 'EMERGENCY']) ->thenInvalid('Invalid log level %s') - ->end() - ->end(); + ->end() + ->end() + ->end() + ->end(); foreach ($this->configs as $config) { $ref = $ref->append($config->get()); diff --git a/lib/Configs/TaskwarriorConfig.php b/lib/Configs/TaskwarriorConfig.php index a2e684a..f80fb03 100644 --- a/lib/Configs/TaskwarriorConfig.php +++ b/lib/Configs/TaskwarriorConfig.php @@ -2,24 +2,24 @@ namespace Aerex\BaikalStorage\Configs; -use Symfony\Component\Config\Definition\Builder\TreeBuilder; +use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition; class TaskwarriorConfig { public function get() { - $treeBuilder = new TreeBuilder(); - $node = $treeBuilder->root('taskwarrior'); - $node->children() - ->scalarNode('taskdata') - ->defaultValue('~/.task') - ->end() - ->scalarNode('taskrc') - ->defaultValue('~/.taskrc') - ->end() - ->scalarNode('project_tag_suffix') - ->defaultValue('project_') - ->end() - ->end(); - + $node = new ArrayNodeDefinition('taskwarrior'); + $node->canBeEnabled() + ->children() + ->scalarNode('taskdata') + ->defaultValue('~/.task') + ->end() + ->scalarNode('taskrc') + ->defaultValue('~/.taskrc') + ->end() + ->scalarNode('project_tag_suffix') + ->defaultValue('project_') + ->end() + ->end(); + return $node; } } diff --git a/tests/Configs/ConfigTest.php b/tests/Configs/ConfigTest.php index 0be757f..1a05f1d 100644 --- a/tests/Configs/ConfigTest.php +++ b/tests/Configs/ConfigTest.php @@ -3,6 +3,7 @@ namespace Aerex\BaikalStorage; use PHPUnit\Framework\TestCase; use Aerex\BaikalStorage\Configs\ConfigBuilder; +use Aerex\BaikalStorage\Configs\TaskwarriorConfig; class ConfigTest extends TestCase { @@ -26,6 +27,24 @@ class ConfigTest extends TestCase { } + public function testTaskwarriorConfig() { + $configs = new ConfigBuilder(__DIR__ . '/Fixtures/TaskwarriorConfig.yaml'); + $configs->add(new TaskwarriorConfig()); + $contents = $configs->loadYaml(); + $this->assertEquals(sizeof($contents), 2); + $this->assertArrayHasKey('logger', $contents, 'config missing logger property'); + $this->assertArrayHasKey('file', $contents['logger'], 'config missing logger.file property'); + $this->assertArrayHasKey('level', $contents['logger'], 'config missing logger.level property'); + $this->assertArrayHasKey('enabled', $contents['logger'], 'config missing logger.enabled property'); + $this->assertArrayHasKey('taskwarrior', $contents, 'config missing taskwarrior property'); + $this->assertArrayHasKey('taskrc', $contents['taskwarrior'], 'config missing taskwarrior.taskrc property'); + $this->assertEquals($contents['taskwarrior']['taskrc'], '/home/aerex/.taskrc'); + $this->assertArrayHasKey('taskdata', $contents['taskwarrior'], 'config missing taskwarrior.taskdata property'); + $this->assertEquals($contents['taskwarrior']['taskdata'], '/home/aerex/.task'); + $this->assertArrayHasKey('project_tag_suffix', $contents['taskwarrior'], 'config missing taskwarrior.taskdata property'); + $this->assertEquals($contents['taskwarrior']['project_tag_suffix'], 'project_'); + } + }