AdminExtractorTest.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <?php
  2. namespace Sonata\AdminBundle\Translator\Extractor\JMSTranslatorBundle;
  3. use Symfony\Component\HttpKernel\Log\LoggerInterface;
  4. use Sonata\AdminBundle\Admin\Pool;
  5. use Sonata\AdminBundle\Admin\AdminInterface;
  6. use JMS\TranslationBundle\Model\MessageCatalogue;
  7. use JMS\TranslationBundle\Model\Message;
  8. use Sonata\AdminBundle\Translator\Extractor\JMSTranslatorBundle\AdminExtractor;
  9. /**
  10. * Test for AdminExtractor
  11. *
  12. * @author Andrej Hudec <pulzarraider@gmail.com>
  13. */
  14. class AdminExtractorTest extends \PHPUnit_Framework_TestCase
  15. {
  16. /**
  17. * @var AdminExtractor
  18. */
  19. private $adminExtractor;
  20. /**
  21. * @var Pool
  22. */
  23. private $pool;
  24. /**
  25. * @var AdminInterface
  26. */
  27. private $fooAdmin;
  28. /**
  29. * @var AdminInterface
  30. */
  31. private $barAdmin;
  32. public function setUp()
  33. {
  34. $this->fooAdmin = $this->getMock('Sonata\AdminBundle\Admin\AdminInterface');
  35. $this->barAdmin = $this->getMock('Sonata\AdminBundle\Admin\AdminInterface');
  36. //php 5.3 BC
  37. $fooAdmin = $this->fooAdmin;
  38. $barAdmin = $this->barAdmin;
  39. $container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface');
  40. $container->expects($this->any())
  41. ->method('get')
  42. ->will($this->returnCallback(function($id) use ($fooAdmin, $barAdmin) {
  43. switch ($id) {
  44. case 'foo_admin':
  45. return $fooAdmin;
  46. case 'bar_admin':
  47. return $barAdmin;
  48. }
  49. return null;
  50. }));
  51. $logger = $this->getMock('Symfony\Component\HttpKernel\Log\LoggerInterface');
  52. $this->pool = new Pool($container, '', '');
  53. $this->pool->setAdminServiceIds(array('foo_admin', 'bar_admin'));
  54. $this->adminExtractor = new AdminExtractor($this->pool, $logger);
  55. $this->adminExtractor->setLogger($logger);
  56. }
  57. public function testExtractEmpty()
  58. {
  59. $catalogue = $this->adminExtractor->extract();
  60. $this->assertInstanceOf('JMS\TranslationBundle\Model\MessageCatalogue', $catalogue);
  61. $this->assertFalse($catalogue->has(new Message('foo', 'foo_admin_domain')));
  62. }
  63. public function testExtract()
  64. {
  65. //php 5.3 BC
  66. $translator = $this->adminExtractor;
  67. $this->fooAdmin->expects($this->any())
  68. ->method('getShow')
  69. ->will($this->returnCallback(function() use ($translator) {
  70. $translator->trans('foo', array(), 'foo_admin_domain');
  71. $translator->transChoice('foo', 1, array(), 'foo_admin_domain');
  72. return null;
  73. }));
  74. $catalogue = $this->adminExtractor->extract();
  75. $this->assertTrue($catalogue->has(new Message('foo', 'foo_admin_domain')));
  76. $this->assertFalse($catalogue->has(new Message('nonexistent', 'foo_admin_domain')));
  77. $this->assertInstanceOf('JMS\TranslationBundle\Model\Message', $catalogue->get('foo', 'foo_admin_domain'));
  78. $message = $catalogue->get('foo', 'foo_admin_domain');
  79. $this->assertEquals('foo', $message->getId());
  80. $this->assertEquals('foo_admin_domain', $message->getDomain());
  81. }
  82. public function testExtractWithExcewption()
  83. {
  84. $this->setExpectedException('RuntimeException', 'Foo throws exception');
  85. $this->fooAdmin->expects($this->any())
  86. ->method('getShow')
  87. ->will($this->returnCallback(function() {
  88. throw new \RuntimeException('Foo throws exception');
  89. }));
  90. $catalogue = $this->adminExtractor->extract();
  91. }
  92. }