浏览代码

[Form] Removed EntityType from DefaultTypeLoader

Bernhard Schussek 14 年之前
父节点
当前提交
3f390aa271

+ 0 - 1
src/Symfony/Component/Form/Type/Loader/DefaultTypeLoader.php

@@ -18,7 +18,6 @@ use Symfony\Component\Form\Renderer\Theme\FormThemeFactoryInterface;
 use Symfony\Component\Form\CsrfProvider\CsrfProviderInterface;
 use Symfony\Component\Validator\ValidatorInterface;
 use Symfony\Component\HttpFoundation\File\TemporaryStorage;
-use Doctrine\ORM\EntityManager;
 
 class DefaultTypeLoader extends ArrayTypeLoader
 {

+ 12 - 7
tests/Symfony/Tests/Bridge/Doctrine/Form/EntityTypeTest.php

@@ -29,16 +29,13 @@ class EntityTypeTest extends DoctrineOrmTestCase
 
     const COMPOSITE_IDENT_CLASS = 'Symfony\Tests\Bridge\Doctrine\Form\Fixtures\CompositeIdentEntity';
 
+    private $em;
+
     protected function setUp()
     {
-        parent::setUp();
-
-        if (!$this->chainLoader->hasType('entity')) {
-            $this->markTestSkipped('No entity type.');
-        }
-
         $this->em = $this->createTestEntityManager();
-        $this->chainLoader->addLoader(new DoctrineTypeLoader($this->em));
+
+        parent::setUp();
 
         $schemaTool = new SchemaTool($this->em);
         $classes = array(
@@ -57,6 +54,14 @@ class EntityTypeTest extends DoctrineOrmTestCase
         }
     }
 
+    protected function getTypeLoaders()
+    {
+        $loaders = parent::getTypeLoaders();
+        $loaders[] = new DoctrineTypeLoader($this->em);
+
+        return $loaders;
+    }
+
     protected function persist(array $entities)
     {
         foreach ($entities as $entity) {

+ 18 - 12
tests/Symfony/Tests/Component/Form/Type/TestCase.php

@@ -14,6 +14,7 @@ namespace Symfony\Tests\Component\Form\Type;
 use Symfony\Component\Form\FormBuilder;
 use Symfony\Component\Form\FormFactory;
 use Symfony\Component\Form\Type\Loader\DefaultTypeLoader;
+use Symfony\Component\Form\Type\Loader\TypeLoaderChain;
 use Symfony\Component\EventDispatcher\EventDispatcher;
 
 abstract class TestCase extends \PHPUnit_Framework_TestCase
@@ -26,15 +27,13 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase
 
     protected $storage;
 
-    protected $em;
-
     protected $factory;
 
     protected $builder;
 
     protected $dispatcher;
 
-    protected $chainLoader;
+    protected $typeLoader;
 
     protected function setUp()
     {
@@ -49,15 +48,22 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase
         $this->storage = $this->getMockBuilder('Symfony\Component\HttpFoundation\File\TemporaryStorage')
             ->disableOriginalConstructor()
             ->getMock();
-        $this->em = $this->getMockBuilder('Doctrine\ORM\EntityManager')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $loader = new DefaultTypeLoader($this->themeFactory, null,
-                $this->validator, $this->csrfProvider, $this->storage);
-        $this->chainLoader = new \Symfony\Component\Form\Type\Loader\TypeLoaderChain();
-        $this->chainLoader->addLoader($loader);
-        $this->factory = new FormFactory($this->chainLoader);
+
+        $this->typeLoader = new TypeLoaderChain();
+
+        // TODO should be passed to chain constructor instead
+        foreach ($this->getTypeLoaders() as $loader) {
+            $this->typeLoader->addLoader($loader);
+        }
+
+        $this->factory = new FormFactory($this->typeLoader);
 
         $this->builder = new FormBuilder($this->dispatcher);
     }
-}
+
+    protected function getTypeLoaders()
+    {
+        return array(new DefaultTypeLoader($this->themeFactory, null,
+                $this->validator, $this->csrfProvider, $this->storage));
+    }
+}