ソースを参照

Corrected form extension calls with the latest symfony master changes and fixed broken tests

Thanos 13 年 前
コミット
fc1be6fe1e

+ 3 - 3
Controller/CRUDController.php

@@ -154,7 +154,7 @@ class CRUDController extends Controller
         $formView = $datagrid->getForm()->createView();
 
         // set the theme for the current Admin Form
-        $this->get('twig')->getExtension('form')->setTheme($formView, $this->admin->getFilterTheme());
+        $this->get('twig')->getExtension('form')->renderer->setTheme($formView, $this->admin->getFilterTheme());
 
         return $this->render($this->admin->getListTemplate(), array(
             'action'   => 'list',
@@ -278,7 +278,7 @@ class CRUDController extends Controller
         $view = $form->createView();
 
         // set the theme for the current Admin Form
-        $this->get('twig')->getExtension('form')->setTheme($view, $this->admin->getFormTheme());
+        $this->get('twig')->getExtension('form')->renderer->setTheme($view, $this->admin->getFormTheme());
 
         return $this->render($this->admin->getEditTemplate(), array(
             'action' => 'edit',
@@ -447,7 +447,7 @@ class CRUDController extends Controller
         $view = $form->createView();
 
         // set the theme for the current Admin Form
-        $this->get('twig')->getExtension('form')->setTheme($view, $this->admin->getFormTheme());
+        $this->get('twig')->getExtension('form')->renderer->setTheme($view, $this->admin->getFormTheme());
 
         return $this->render($this->admin->getEditTemplate(), array(
             'action' => 'create',

+ 3 - 3
Controller/HelperController.php

@@ -89,7 +89,7 @@ class HelperController
 
         $extension = $this->twig->getExtension('form');
         $extension->initRuntime($this->twig);
-        $extension->setTheme($view, $admin->getFormTheme());
+        $extension->renderer->setTheme($view, $admin->getFormTheme());
 
         return new Response($extension->renderWidget($view));
     }
@@ -136,7 +136,7 @@ class HelperController
         // todo : fix this, the twig environment variable is not set inside the extension ...
         $extension = $this->twig->getExtension('form');
         $extension->initRuntime($this->twig);
-        $extension->setTheme($view, $admin->getFormTheme());
+        $extension->renderer->setTheme($view, $admin->getFormTheme());
 
         return new Response($extension->renderWidget($view));
     }
@@ -179,7 +179,7 @@ class HelperController
         }
 
         $url = $admin->generateUrl('edit', array('id' => $objectId));
-        
+
         $htmlOutput = $this->twig->render($admin->getTemplate('short_object_description'),
             array(
                 'description' => $description,

+ 5 - 5
Tests/Admin/AdminHelperTest.php

@@ -34,9 +34,9 @@ class AdminHelperTest extends \PHPUnit_Framework_TestCase
         $formFactory = $this->getMock('Symfony\Component\Form\FormFactoryInterface');
         $eventDispatcher = $this->getMock('Symfony\Component\EventDispatcher\EventDispatcherInterface');
 
-        $formBuilder = new FormBuilder('test', $formFactory, $eventDispatcher);
+        $formBuilder = new FormBuilder('test', 'stdClass', $eventDispatcher, $formFactory);
 
-        $childFormBuilder = new FormBuilder('elementId', $formFactory, $eventDispatcher);
+        $childFormBuilder = new FormBuilder('elementId', 'stdClass', $eventDispatcher, $formFactory);
         $formBuilder->add($childFormBuilder);
 
         $this->assertNull($helper->getChildFormBuilder($formBuilder, 'foo'));
@@ -51,10 +51,10 @@ class AdminHelperTest extends \PHPUnit_Framework_TestCase
         $helper = new AdminHelper($pool);
 
         $formView = new FormView('test');
-        $formView->set('id', 'test');
+        $formView->setVar('id', 'test');
         $child = new FormView('test');
-        $child->set('id', 'test_elementId');
-        $formView->addChild($child);
+        $child->setVar('id', 'test_elementId');
+        $formView->add($child);
 
         $this->assertNull($helper->getChildFormView($formView, 'foo'));
         $this->isInstanceOf('Symfony\Component\Form\FormView', $helper->getChildFormView($formView, 'test_elementId'));

+ 51 - 18
Tests/Controller/AdminHelperTest.php

@@ -94,7 +94,7 @@ class AdminHelperTest extends \PHPUnit_Framework_TestCase
     public function testgetShortObjectDescriptionActionObject()
     {
         $mockTemplate = 'AdminHelperTest:mock-short-object-description.html.twig';
-        
+
         $admin = $this->getMock('Sonata\AdminBundle\Admin\AdminInterface');
         $admin->expects($this->once())->method('setUniqid');
         $admin->expects($this->once())->method('getTemplate')->will($this->returnValue($mockTemplate));
@@ -114,13 +114,13 @@ class AdminHelperTest extends \PHPUnit_Framework_TestCase
         $container->expects($this->any())->method('get')->will($this->returnValue($admin));
 
         $twig = $this->getMock('Twig_Environment');
-        
+
         $twig->expects($this->once())->method('render')
             ->with($mockTemplate)
             ->will($this->returnCallback(function($templateName, $templateParams) {
                 return sprintf('<a href="%s" target="new">%s</a>', $templateParams['url'], $templateParams['description']);
             }));
-            
+
         $request = new Request(array(
             'code'     => 'sonata.post.admin',
             'objectId' => 42,
@@ -187,18 +187,30 @@ class AdminHelperTest extends \PHPUnit_Framework_TestCase
         $modelManager = $this->getMock('Sonata\AdminBundle\Model\ModelManagerInterface');
         $modelManager->expects($this->once())->method('find')->will($this->returnValue($object));
 
+        $mockTheme = $this->getMockBuilder('Symfony\Component\Form\FormView')
+            ->disableOriginalConstructor()
+            ->getMock();
+
         $admin = $this->getMock('Sonata\AdminBundle\Admin\AdminInterface');
         $admin->expects($this->once())->method('getModelManager')->will($this->returnValue($modelManager));
         $admin->expects($this->once())->method('setRequest');
         $admin->expects($this->once())->method('setSubject');
+        $admin->expects($this->once())->method('getFormTheme')->will($this->returnValue($mockTheme));
 
         $container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface');
         $container->expects($this->any())->method('get')->will($this->returnValue($admin));
 
+        $mockRenderer = $this->getMockBuilder('Symfony\Bridge\Twig\Form\TwigRendererInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+
         $formExtension = $this->getMock('Twig_ExtensionInterface', array('renderListElement', 'initRuntime', 'getTokenParsers', 'getNodeVisitors', 'getFilters', 'getTests', 'getFunctions', 'getOperators', 'getGlobals', 'getName', 'setTheme', 'renderWidget'));
+
+
         $formExtension->expects($this->once())->method('getName')->will($this->returnValue('form'));
         $formExtension->expects($this->once())->method('renderWidget')->will($this->returnValue(new Response));
-        $formExtension->expects($this->once())->method('setTheme');
+        $formExtension->expects($this->never())->method('setTheme');
+        $formExtension->renderer = $mockRenderer;
 
         $twig = new Twig;
         $twig->addExtension($formExtension);
@@ -212,15 +224,23 @@ class AdminHelperTest extends \PHPUnit_Framework_TestCase
 
         $pool = new Pool($container, 'title', 'logo');
 
-        $dispatcher = $this->getMock('Symfony\Component\EventDispatcher\EventDispatcherInterface');
+        $mockView = $this->getMockBuilder('Symfony\Component\Form\FormView')
+            ->disableOriginalConstructor()
+            ->getMock();
 
-        $form = new Form('foo', $dispatcher);
+        $mockForm = $this->getMockBuilder('Symfony\Component\Form\Form')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $mockForm->expects($this->once())
+            ->method('createView')
+            ->will($this->returnValue($mockView));
 
-        $helper = $this->getMock('Sonata\AdminBundle\Admin\AdminHelper', array('appendFormFieldElement'), array($pool));
+        $helper = $this->getMock('Sonata\AdminBundle\Admin\AdminHelper', array('appendFormFieldElement', 'getChildFormView'), array($pool));
         $helper->expects($this->once())->method('appendFormFieldElement')->will($this->returnValue(array(
             $this->getMock('Sonata\AdminBundle\Admin\FieldDescriptionInterface'),
-            $form
+            $mockForm
         )));
+        $helper->expects($this->once())->method('getChildFormView')->will($this->returnValue($mockView));
 
         $controller = new HelperController($twig, $pool, $helper);
         $response = $controller->appendFormFieldElementAction($request);
@@ -234,12 +254,22 @@ class AdminHelperTest extends \PHPUnit_Framework_TestCase
 
         $modelManager = $this->getMock('Sonata\AdminBundle\Model\ModelManagerInterface');
         $modelManager->expects($this->once())->method('find')->will($this->returnValue($object));
-
-        $formBuilder = new FormBuilder(
-            'foo',
-            $this->getMock('Symfony\Component\Form\FormFactoryInterface'),
-            $this->getMock('Symfony\Component\EventDispatcher\EventDispatcherInterface')
-        );
+
+        $mockView = $this->getMockBuilder('Symfony\Component\Form\FormView')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $mockForm = $this->getMockBuilder('Symfony\Component\Form\Form')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $mockForm->expects($this->once())
+            ->method('createView')
+            ->will($this->returnValue($mockView));
+
+        $formBuilder = $this->getMockBuilder('Symfony\Component\Form\FormBuilder')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $formBuilder->expects($this->once())->method('getForm')->will($this->returnValue($mockForm));
 
         $admin = $this->getMock('Sonata\AdminBundle\Admin\AdminInterface');
         $admin->expects($this->once())->method('getModelManager')->will($this->returnValue($modelManager));
@@ -248,10 +278,15 @@ class AdminHelperTest extends \PHPUnit_Framework_TestCase
         $container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface');
         $container->expects($this->any())->method('get')->will($this->returnValue($admin));
 
+        $mockRenderer = $this->getMockBuilder('Symfony\Bridge\Twig\Form\TwigRendererInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+
         $formExtension = $this->getMock('Twig_ExtensionInterface', array('renderListElement', 'initRuntime', 'getTokenParsers', 'getNodeVisitors', 'getFilters', 'getTests', 'getFunctions', 'getOperators', 'getGlobals', 'getName', 'setTheme', 'renderWidget'));
         $formExtension->expects($this->once())->method('getName')->will($this->returnValue('form'));
         $formExtension->expects($this->once())->method('renderWidget')->will($this->returnValue(new Response));
-        $formExtension->expects($this->once())->method('setTheme');
+        $formExtension->expects($this->never())->method('setTheme');
+        $formExtension->renderer = $mockRenderer;
 
         $twig = new Twig;
         $twig->addExtension($formExtension);
@@ -267,10 +302,8 @@ class AdminHelperTest extends \PHPUnit_Framework_TestCase
 
         $dispatcher = $this->getMock('Symfony\Component\EventDispatcher\EventDispatcherInterface');
 
-        $formView = new FormView('test');
-
         $helper = $this->getMock('Sonata\AdminBundle\Admin\AdminHelper', array('getChildFormView'), array($pool));
-        $helper->expects($this->once())->method('getChildFormView')->will($this->returnValue($formView));
+        $helper->expects($this->once())->method('getChildFormView')->will($this->returnValue($mockView));
 
         $controller = new HelperController($twig, $pool, $helper);
         $response = $controller->retrieveFormFieldElementAction($request);