Browse Source

Fix unit tests

Thomas Rabaix 11 years ago
parent
commit
18591bc4aa
2 changed files with 76 additions and 18 deletions
  1. 36 11
      Generator/AbstractBcGenerator.php
  2. 40 7
      Tests/Generator/AbstractBcGeneratorTest.php

+ 36 - 11
Generator/AbstractBcGenerator.php

@@ -32,6 +32,18 @@ abstract class AbstractBcGenerator extends Generator
      */
     private $bcEnabled = false;
 
+    /**
+     * Returns the Generator Version
+     *
+     * @return string
+     */
+    public static function getGeneratorVersion()
+    {
+        $r = new \ReflectionClass('Sensio\Bundle\GeneratorBundle\Generator\Generator');
+
+        return $r->hasMethod('setSkeletonDirs') === true ? '2.3' : '2.2';
+    }
+
     /**
      * {@inheritdoc}
      */
@@ -41,13 +53,13 @@ abstract class AbstractBcGenerator extends Generator
 
         $this->bcEnabled = false;
 
-        if (method_exists(get_parent_class(get_parent_class($this)), 'setSkeletonDirs')) {
-            //Sensio Generator >=2.3
-            parent::setSkeletonDirs($skeletonDirs);
-        } else {
-            //Sensio Generator 2.2
+        if (self::getGeneratorVersion() === '2.2') {
             $this->bcEnabled = true;
         }
+
+        if (self::getGeneratorVersion() === '2.3') {
+            parent::setSkeletonDirs($this->skeletonDirs);
+        }
     }
 
     /**
@@ -60,25 +72,38 @@ abstract class AbstractBcGenerator extends Generator
         $this->bcEnabled = $bcEnabled;
     }
 
+    /**
+     * @param string $template
+     * @param array $parameters
+     *
+     * @return string
+     */
     protected function renderBc($template, $parameters)
     {
         if ($this->bcEnabled) {
             //Sensio Generator 2.2
             return $this->render($this->skeletonDirs, $template, $parameters);
-        } else {
-            //Sensio Generator >=2.3
-            return $this->render($template, $parameters);
         }
+
+        //Sensio Generator >=2.3
+        return $this->render($template, $parameters);
     }
 
+    /**
+     * @param string $template
+     * @param string $target
+     * @param array  $parameters
+     *
+     * @return int
+     */
     protected function renderFileBc($template, $target, $parameters)
     {
         if ($this->bcEnabled) {
             //Sensio Generator 2.2
             return $this->renderFile($this->skeletonDirs, $template, $target, $parameters);
-        } else {
-            //Sensio Generator >=2.3
-            return $this->renderFile($template, $target, $parameters);
         }
+
+        //Sensio Generator >=2.3
+        return $this->renderFile($template, $target, $parameters);
     }
 }

+ 40 - 7
Tests/Generator/AbstractBcGeneratorTest.php

@@ -11,6 +11,7 @@
 
 namespace Sonata\AdminBundle\Tests\Generator;
 
+use Sonata\AdminBundle\Generator\AbstractBcGenerator;
 use Sonata\AdminBundle\Tests\Fixtures\Generator\GeneratorBc22;
 use Sonata\AdminBundle\Tests\Fixtures\Generator\GeneratorBc23;
 
@@ -34,8 +35,12 @@ class AbstractBcGeneratorTest extends \PHPUnit_Framework_TestCase
         error_reporting(self::$errorReportingBackup);
     }
 
-    public function testRenderBc()
+    public function testRenderBc22()
     {
+        if (AbstractBcGenerator::getGeneratorVersion() != '2.2') {
+            $this->markTestSkipped('Wrong Sensio Generator version, expected 2.2');
+        }
+
         $skeletonDir = 'path/to/templates';
         $template = 'test.html.twig';
         $parameters = array('foo' => 'bar');
@@ -44,15 +49,14 @@ class AbstractBcGeneratorTest extends \PHPUnit_Framework_TestCase
         $generator22->setSkeletonDirs($skeletonDir);
         $generator22->setBc(true);
         $this->assertEquals('Result OK', $this->callMethod($generator22, 'renderBc', array($template, $parameters)));
-
-        $generator23 = new GeneratorBc23();
-        $generator23->setSkeletonDirs($skeletonDir);
-        $generator23->setBc(false);
-        $this->assertEquals('Result OK', $this->callMethod($generator23, 'renderBc', array($template, $parameters)));
     }
 
-    public function testRenderFileBc()
+    public function testRenderFileBc22()
     {
+        if (AbstractBcGenerator::getGeneratorVersion() != '2.2') {
+            $this->markTestSkipped('Wrong Sensio Generator version, expected 2.2');
+        }
+
         $skeletonDir = 'path/to/templates';
         $template = 'test.html.twig';
         $parameters = array('foo' => 'bar');
@@ -62,6 +66,34 @@ class AbstractBcGeneratorTest extends \PHPUnit_Framework_TestCase
         $generator22->setSkeletonDirs($skeletonDir);
         $generator22->setBc(true);
         $this->assertTrue($this->callMethod($generator22, 'renderFileBc', array($template, $target, $parameters)));
+    }
+
+    public function testRenderBc23()
+    {
+        if (AbstractBcGenerator::getGeneratorVersion() != '2.3') {
+            $this->markTestSkipped('Wrong Sensio Generator version, expected 2.3');
+        }
+
+        $skeletonDir = 'path/to/templates';
+        $template = 'test.html.twig';
+        $parameters = array('foo' => 'bar');
+
+        $generator23 = new GeneratorBc23();
+        $generator23->setSkeletonDirs($skeletonDir);
+        $generator23->setBc(false);
+        $this->assertEquals('Result OK', $this->callMethod($generator23, 'renderBc', array($template, $parameters)));
+    }
+
+    public function testRenderFileBc23()
+    {
+        if (AbstractBcGenerator::getGeneratorVersion() != '2.3') {
+            $this->markTestSkipped('Wrong Sensio Generator version, expected 2.3');
+        }
+
+        $skeletonDir = 'path/to/templates';
+        $template = 'test.html.twig';
+        $parameters = array('foo' => 'bar');
+        $target = 'target_file';
 
         $generator23 = new GeneratorBc23();
         $generator23->setSkeletonDirs($skeletonDir);
@@ -69,6 +101,7 @@ class AbstractBcGeneratorTest extends \PHPUnit_Framework_TestCase
         $this->assertTrue($this->callMethod($generator23, 'renderFileBc', array($template, $target, $parameters)));
     }
 
+
     protected function callMethod($obj, $name, array $args)
     {
         $class = new \ReflectionClass($obj);