123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- <?php
- namespace Gedmo\Translator;
- use Doctrine\Common\EventManager;
- use Tool\BaseTestCaseORM;
- use Translator\Fixture\Person;
- /**
- * These are tests for translatable behavior
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- * @package Gedmo.Translatable
- * @link http://www.gediminasm.org
- * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
- */
- class TranslatableTest extends BaseTestCaseORM
- {
- const PERSON = 'Translator\\Fixture\\Person';
- protected function setUp()
- {
- parent::setUp();
- $evm = new EventManager;
- $this->getMockSqliteEntityManager($evm);
- }
- public function testTranslatable()
- {
- $person = new Person();
- $person->translate()->setName('Jen');
- $person->translate('ru_RU')->setName('Женя');
- $person->setDescription('description');
- $person->translate('ru_RU')->setDescription('multilingual description');
- $this->assertSame('Jen', $person->translate()->getName());
- $this->assertSame('Женя', $person->translate('ru_RU')->getName());
- $this->assertSame('multilingual description', $person->getDescription());
- $this->assertSame('multilingual description', $person->translate()->getDescription());
- $this->assertSame('multilingual description', $person->translate('ru_RU')->getDescription());
- $this->em->persist($person);
- $this->em->flush();
- $this->em->clear();
- // retrieve record (translations would be fetched later - by demand)
- $person = $this->em->getRepository(self::PERSON)->findOneByName('Jen');
- $this->assertSame('Jen', $person->getName());
- $this->assertSame('Jen', $person->translate()->getName());
- $this->assertSame('Женя', $person->translate('ru_RU')->getName());
- $this->assertSame('multilingual description', $person->getDescription());
- $this->assertSame('multilingual description', $person->translate()->getDescription());
- $this->assertSame('multilingual description', $person->translate('ru_RU')->getDescription());
- // retrieve record with all translations in one query
- $persons = $this->em->getRepository(self::PERSON)
- ->createQueryBuilder('p')
- ->select('p, t')
- ->join('p.translations', 't')
- ->getQuery()
- ->execute();
- $person = $persons[0];
- $this->assertSame('Jen', $person->getName());
- $this->assertSame('Jen', $person->translate()->getName());
- $this->assertSame('Женя', $person->translate('ru_RU')->getName());
- $this->assertSame('multilingual description', $person->getDescription());
- $this->assertSame('multilingual description', $person->translate()->getDescription());
- $this->assertSame('multilingual description', $person->translate('ru_RU')->getDescription());
- $person->translate('es_ES')->setName('Amigo');
- $this->em->flush();
- // retrieve record with all translations in one query
- $persons = $this->em->getRepository(self::PERSON)
- ->createQueryBuilder('p')
- ->select('p, t')
- ->join('p.translations', 't')
- ->getQuery()
- ->execute();
- $person = $persons[0];
- $this->assertSame('Jen', $person->getName());
- $this->assertSame('Jen', $person->translate()->getName());
- $this->assertSame('Женя', $person->translate('ru_RU')->getName());
- $this->assertSame('Amigo', $person->translate('es_ES')->getName());
- $this->assertSame('multilingual description', $person->getDescription());
- $this->assertSame('multilingual description', $person->translate()->getDescription());
- $this->assertSame('multilingual description', $person->translate('ru_RU')->getDescription());
- }
- protected function getUsedEntityFixtures()
- {
- return array(self::PERSON, self::PERSON.'Translation');
- }
- }
|