Forráskód Böngészése

[Test] add CoreController test

Thomas Rabaix 13 éve
szülő
commit
3ca3fdaead

+ 1 - 1
Controller/CoreController.php

@@ -23,7 +23,7 @@ class CoreController extends Controller
      */
      */
     public function getBaseTemplate()
     public function getBaseTemplate()
     {
     {
-        if ($this->get('request')->isXmlHttpRequest()) {
+        if ($this->getRequest()->isXmlHttpRequest()) {
             return $this->container->get('sonata.admin.pool')->getTemplate('ajax');
             return $this->container->get('sonata.admin.pool')->getTemplate('ajax');
         }
         }
 
 

+ 85 - 0
Tests/Controller/CoreControllerTest.php

@@ -0,0 +1,85 @@
+<?php
+
+/*
+ * This file is part of the Sonata package.
+ *
+ * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Sonata\AdminBundle\Tests\Controller;
+
+use Sonata\AdminBundle\Controller\CoreController;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\HttpFoundation\Response;
+use Sonata\AdminBundle\Admin\Pool;
+use Symfony\Bundle\FrameworkBundle\Templating\EngineInterface;
+use Symfony\Component\HttpFoundation\Request;
+
+class CoreControllerTest extends \PHPUnit_Framework_TestCase
+{
+    public function testdashboardActionStandardRequest()
+    {
+        $container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface');
+
+        $pool = new Pool($container, 'title', 'logo.png');
+        $pool->setTemplates(array(
+            'ajax' => 'ajax.html',
+        ));
+
+        $templating = $this->getMock('Symfony\Bundle\FrameworkBundle\Templating\EngineInterface');
+        $request = new Request();
+
+        $values = array(
+            'sonata.admin.pool' => $pool,
+            'templating'        => $templating,
+            'request'           => $request
+        );
+
+        $container->expects($this->any())->method('get')->will($this->returnCallback(function($id) use ($values) {
+            return $values[$id];
+        }));
+
+        $controller = new CoreController();
+        $controller->setContainer($container);
+
+        $response = $controller->dashboardAction();
+
+        $this->isInstanceOf('Symfony\Component\HttpFoundation\Response', $response);
+    }
+
+    public function testdashboardActionAjaxLayout()
+    {
+
+        $container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface');
+
+        $pool = new Pool($container, 'title', 'logo.png');
+        $pool->setTemplates(array(
+            'ajax' => 'ajax.html',
+        ));
+
+        $templating = $this->getMock('Symfony\Bundle\FrameworkBundle\Templating\EngineInterface');
+        $request = new Request();
+        $request->headers->set('X-Requested-With', 'XMLHttpRequest');
+
+        $values = array(
+            'sonata.admin.pool' => $pool,
+            'templating'        => $templating,
+            'request'           => $request
+        );
+
+        $container->expects($this->any())->method('get')->will($this->returnCallback(function($id) use ($values) {
+            return $values[$id];
+        }));
+
+        $controller = new CoreController();
+        $controller->setContainer($container);
+
+        $response = $controller->dashboardAction();
+
+        $this->isInstanceOf('Symfony\Component\HttpFoundation\Response', $response);
+    }
+
+}