AbstractBcGeneratorTest.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. /*
  3. * This file is part of the Sonata package.
  4. *
  5. * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Sonata\AdminBundle\Tests\Generator;
  11. use Sonata\AdminBundle\Generator\AbstractBcGenerator;
  12. use Sonata\AdminBundle\Tests\Fixtures\Generator\GeneratorBc22;
  13. use Sonata\AdminBundle\Tests\Fixtures\Generator\GeneratorBc23;
  14. /**
  15. * @author Andrej Hudec <pulzarraider@gmail.com>
  16. */
  17. class AbstractBcGeneratorTest extends \PHPUnit_Framework_TestCase
  18. {
  19. private static $errorReportingBackup;
  20. public static function setUpBeforeClass()
  21. {
  22. // Disable E_STRICT errors for this test only
  23. self::$errorReportingBackup = error_reporting();
  24. error_reporting(self::$errorReportingBackup ^ E_STRICT);
  25. }
  26. public static function tearDownAfterClass()
  27. {
  28. // Restore error reporting
  29. error_reporting(self::$errorReportingBackup);
  30. }
  31. public function testRenderBc22()
  32. {
  33. if (AbstractBcGenerator::getGeneratorVersion() != '2.2') {
  34. $this->markTestSkipped('Wrong Sensio Generator version, expected 2.2');
  35. }
  36. $skeletonDir = 'path/to/templates';
  37. $template = 'test.html.twig';
  38. $parameters = array('foo' => 'bar');
  39. $generator22 = new GeneratorBc22();
  40. $generator22->setSkeletonDirs($skeletonDir);
  41. $generator22->setBc(true);
  42. $this->assertEquals('Result OK', $this->callMethod($generator22, 'renderBc', array($template, $parameters)));
  43. }
  44. public function testRenderFileBc22()
  45. {
  46. if (AbstractBcGenerator::getGeneratorVersion() != '2.2') {
  47. $this->markTestSkipped('Wrong Sensio Generator version, expected 2.2');
  48. }
  49. $skeletonDir = 'path/to/templates';
  50. $template = 'test.html.twig';
  51. $parameters = array('foo' => 'bar');
  52. $target = 'target_file';
  53. $generator22 = new GeneratorBc22();
  54. $generator22->setSkeletonDirs($skeletonDir);
  55. $generator22->setBc(true);
  56. $this->assertTrue($this->callMethod($generator22, 'renderFileBc', array($template, $target, $parameters)));
  57. }
  58. public function testRenderBc23()
  59. {
  60. if (AbstractBcGenerator::getGeneratorVersion() != '2.3') {
  61. $this->markTestSkipped('Wrong Sensio Generator version, expected 2.3');
  62. }
  63. $skeletonDir = 'path/to/templates';
  64. $template = 'test.html.twig';
  65. $parameters = array('foo' => 'bar');
  66. $generator23 = new GeneratorBc23();
  67. $generator23->setSkeletonDirs($skeletonDir);
  68. $generator23->setBc(false);
  69. $this->assertEquals('Result OK', $this->callMethod($generator23, 'renderBc', array($template, $parameters)));
  70. }
  71. public function testRenderFileBc23()
  72. {
  73. if (AbstractBcGenerator::getGeneratorVersion() != '2.3') {
  74. $this->markTestSkipped('Wrong Sensio Generator version, expected 2.3');
  75. }
  76. $skeletonDir = 'path/to/templates';
  77. $template = 'test.html.twig';
  78. $parameters = array('foo' => 'bar');
  79. $target = 'target_file';
  80. $generator23 = new GeneratorBc23();
  81. $generator23->setSkeletonDirs($skeletonDir);
  82. $generator23->setBc(false);
  83. $this->assertTrue($this->callMethod($generator23, 'renderFileBc', array($template, $target, $parameters)));
  84. }
  85. protected function callMethod($obj, $name, array $args)
  86. {
  87. $class = new \ReflectionClass($obj);
  88. $method = $class->getMethod($name);
  89. $method->setAccessible(true);
  90. return $method->invokeArgs($obj, $args);
  91. }
  92. }