瀏覽代碼

Minior refactoring of configuration handling

Konstantin.Myakshin 9 年之前
父節點
當前提交
c692ec68fd
共有 2 個文件被更改,包括 24 次插入24 次删除
  1. 2 4
      DependencyInjection/SonataAdminExtension.php
  2. 22 20
      Tests/DependencyInjection/ConfigurationTest.php

+ 2 - 4
DependencyInjection/SonataAdminExtension.php

@@ -11,7 +11,6 @@
 
 namespace Sonata\AdminBundle\DependencyInjection;
 
-use Symfony\Component\Config\Definition\Processor;
 use Symfony\Component\Config\FileLocator;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
@@ -81,9 +80,8 @@ BOOM
             $sidebarMenu->setFactoryMethod('createSidebarMenu');
         }
 
-        $configuration = new Configuration();
-        $processor = new Processor();
-        $config = $processor->processConfiguration($configuration, $configs);
+        $configuration = $this->getConfiguration($configs, $container);
+        $config = $this->processConfiguration($configuration, $configs);
 
         $config['options']['javascripts'] = $config['assets']['javascripts'];
         $config['options']['stylesheets'] = $config['assets']['stylesheets'];

+ 22 - 20
Tests/DependencyInjection/ConfigurationTest.php

@@ -18,9 +18,7 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
 {
     public function testOptions()
     {
-        $processor = new Processor();
-
-        $config = $processor->processConfiguration(new Configuration(), array());
+        $config = $this->process(array());
 
         $this->assertTrue($config['options']['html5_validate']);
         $this->assertNull($config['options']['pager_links']);
@@ -32,9 +30,7 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
     {
         $this->setExpectedException('Symfony\Component\Config\Definition\Exception\InvalidTypeException');
 
-        $processor = new Processor();
-
-        $config = $processor->processConfiguration(new Configuration(), array(array(
+        $config = $this->process(array(array(
             'options' => array(
                 'html5_validate' => '1',
             ),
@@ -43,9 +39,7 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
 
     public function testCustomTemplatesPerAdmin()
     {
-        $processor = new Processor();
-
-        $config = $processor->processConfiguration(new Configuration(), array(array(
+        $config = $this->process(array(array(
             'admin_services' => array(
                 'my_admin_id' => array(
                     'templates' => array(
@@ -62,9 +56,7 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
 
     public function testAdminServicesDefault()
     {
-        $processor = new Processor();
-
-        $config = $processor->processConfiguration(new Configuration(), array(array(
+        $config = $this->process(array(array(
             'admin_services' => array('my_admin_id' => array()),
         )));
 
@@ -94,16 +86,14 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
 
     public function testDashboardWithoutRoles()
     {
-        $processor = new Processor();
-        $config = $processor->processConfiguration(new Configuration(), array());
+        $config = $this->process(array());
 
         $this->assertEmpty($config['dashboard']['blocks'][0]['roles']);
     }
 
     public function testDashboardWithRoles()
     {
-        $processor = new Processor();
-        $config = $processor->processConfiguration(new Configuration(), array(array(
+        $config = $this->process(array(array(
             'dashboard' => array(
                 'blocks' => array(array(
                     'roles' => array('ROLE_ADMIN'),
@@ -117,8 +107,7 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
 
     public function testDashboardGroups()
     {
-        $processor = new Processor();
-        $config = $processor->processConfiguration(new Configuration(), array(array(
+        $config = $this->process(array(array(
             'dashboard' => array(
                 'groups' => array(
                     'bar' => array(
@@ -185,8 +174,7 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
     {
         $this->setExpectedException('\InvalidArgumentException', 'Expected either parameters "route" and "label" for array items');
 
-        $processor = new Processor();
-        $config = $processor->processConfiguration(new Configuration(), array(array(
+        $config = $this->process(array(array(
             'dashboard' => array(
                 'groups' => array(
                     'bar' => array(
@@ -204,4 +192,18 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
             ),
         )));
     }
+
+    /**
+     * Processes an array of configurations and returns a compiled version.
+     *
+     * @param array $configs An array of raw configurations
+     *
+     * @return array A normalized array
+     */
+    protected function process($configs)
+    {
+        $processor = new Processor();
+
+        return $processor->processConfiguration(new Configuration(), $configs);
+    }
 }