PersonalTranslationDocumentTest.php 2.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace Gedmo\Translatable;
  3. use Tool\BaseTestCaseMongoODM;
  4. use Doctrine\Common\EventManager;
  5. use Translatable\Fixture\Document\Personal\Article;
  6. use Translatable\Fixture\Document\Personal\ArticleTranslation;
  7. /**
  8. * These are tests for translatable behavior
  9. *
  10. * @author Gediminas Morkevicius <gediminas.morkevicius@gmail.com>
  11. * @package Gedmo.Translatable
  12. * @link http://www.gediminasm.org
  13. * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
  14. */
  15. class PersonalTranslationDocumentTest extends BaseTestCaseMongoODM
  16. {
  17. const ARTICLE = 'Translatable\Fixture\Document\Personal\Article';
  18. const TRANSLATION = 'Translatable\Fixture\Document\Personal\ArticleTranslation';
  19. private $translatableListener;
  20. private $id;
  21. protected function setUp()
  22. {
  23. parent::setUp();
  24. $evm = new EventManager;
  25. $this->translatableListener = new TranslatableListener();
  26. $this->translatableListener->setDefaultLocale('en');
  27. $this->translatableListener->setTranslatableLocale('en');
  28. $evm->addEventSubscriber($this->translatableListener);
  29. $this->getMockDocumentManager($evm);
  30. }
  31. /**
  32. * @test
  33. */
  34. function shouldCreateTranslations()
  35. {
  36. $this->populate();
  37. $article = $this->dm->getRepository(self::ARTICLE)->find($this->id);
  38. $translations = $article->getTranslations();
  39. $this->assertCount(2, $translations);
  40. }
  41. /**
  42. * @test
  43. */
  44. function shouldTranslateTheRecord()
  45. {
  46. $this->populate();
  47. $this->translatableListener->setTranslatableLocale('lt');
  48. $article = $this->dm->getRepository(self::ARTICLE)->find($this->id);
  49. $this->assertEquals('lt', $article->getTitle());
  50. }
  51. private function populate()
  52. {
  53. $article = new Article;
  54. $article->setTitle('en');
  55. $this->dm->persist($article);
  56. $this->dm->flush();
  57. $this->id = $article->getId();
  58. $this->translatableListener->setTranslatableLocale('de');
  59. $article->setTitle('de');
  60. $ltTranslation = new ArticleTranslation;
  61. $ltTranslation
  62. ->setField('title')
  63. ->setContent('lt')
  64. ->setObject($article)
  65. ->setLocale('lt')
  66. ;
  67. $this->dm->persist($ltTranslation);
  68. $this->dm->persist($article);
  69. $this->dm->flush();
  70. $this->dm->clear();
  71. }
  72. }