Issue165Test.php 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. namespace Gedmo\Translatable;
  3. use Tool\BaseTestCaseMongoODM;
  4. use Doctrine\Common\EventManager;
  5. use Translatable\Fixture\Issue165\SimpleArticle;
  6. /**
  7. * These are tests for Translatable behavior ODM implementation
  8. *
  9. * @author Gediminas Morkevicius <gediminas.morkevicius@gmail.com>
  10. * @package Gedmo.Translatable
  11. * @link http://www.gediminasm.org
  12. * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
  13. */
  14. class Issue165Test extends BaseTestCaseMongoODM
  15. {
  16. const ARTICLE = 'Translatable\Fixture\Issue165\SimpleArticle';
  17. const TRANSLATION = 'Gedmo\\Translatable\\Document\\Translation';
  18. private $translatableListener;
  19. private $articleId;
  20. protected function setUp()
  21. {
  22. parent::setUp();
  23. $evm = new EventManager();
  24. $this->translatableListener = new TranslatableListener;
  25. $this->translatableListener->setDefaultLocale('en');
  26. $this->translatableListener->setTranslatableLocale('en');
  27. $evm->addEventSubscriber($this->translatableListener);
  28. $this->getMockDocumentManager($evm);
  29. }
  30. /**
  31. * @test
  32. */
  33. public function shouldPersistUntranslatedFields()
  34. {
  35. $article = new SimpleArticle;
  36. $article->setTitle('en');
  37. $article->setContent('en');
  38. $article->setUntranslated('en');
  39. $this->dm->persist($article);
  40. $this->dm->flush();
  41. $this->assertEquals('en', $article->getUntranslated());
  42. $this->translatableListener->setTranslatableLocale('ru');
  43. $article->setTitle('ru');
  44. $article->setContent('ru');
  45. $article->setUntranslated('ru');
  46. $this->dm->persist($article);
  47. $this->dm->flush();
  48. $this->assertEquals('ru', $article->getUntranslated());
  49. $this->translatableListener->setTranslatableLocale('de');
  50. $newarticle = new SimpleArticle;
  51. $newarticle->setTitle('de');
  52. $newarticle->setContent('de');
  53. $newarticle->setUntranslated('de');
  54. $this->dm->persist($newarticle);
  55. $this->dm->flush();
  56. $this->dm->refresh($article);
  57. $this->assertEquals('de', $newarticle->getUntranslated());
  58. $this->translatableListener->setTranslatableLocale('en');
  59. $id = $newarticle->getId();
  60. $newarticle = $this->dm->getRepository('Translatable\Fixture\Issue165\SimpleArticle')->find($id);
  61. $newarticle->setTitle('en');
  62. $newarticle->setContent('en');
  63. $newarticle->setUntranslated('en');
  64. $this->dm->persist($newarticle);
  65. $this->dm->flush();
  66. $this->dm->refresh($newarticle);
  67. $this->assertEquals('en', $newarticle->getUntranslated());
  68. $this->translatableListener->setTranslatableLocale('de');
  69. $newarticle->setTitle('de2');
  70. $newarticle->setContent('de2');
  71. $newarticle->setUntranslated('de2');
  72. $this->dm->persist($newarticle);
  73. $this->dm->flush();
  74. $id = $newarticle->getId();
  75. $newarticle = $this->dm->getRepository('Translatable\Fixture\Issue165\SimpleArticle')->find($id);
  76. $this->assertEquals('de2', $newarticle->getUntranslated());
  77. }
  78. }