public function testPersistUpdateScenario()
 {
     $testValue = 'some Value';
     $existsTranslation = new Translation();
     $existsTranslation->setValue($testValue);
     $this->repo->expects($this->any())->method('findValue')->will($this->returnValueMap([['key_1', $this->testLocale, 'messages', Translation::SCOPE_SYSTEM, null], ['key_2', $this->testLocale, 'messages', Translation::SCOPE_SYSTEM, null], ['key_3', $this->testLocale, 'messages', Translation::SCOPE_SYSTEM, null], ['key_1', $this->testLocale, 'validators', Translation::SCOPE_SYSTEM, $existsTranslation], ['key_2', $this->testLocale, 'validators', Translation::SCOPE_SYSTEM, null]]));
     $this->em->expects($this->once())->method('beginTransaction');
     $this->em->expects($this->exactly(5))->method('persist');
     $this->em->expects($this->exactly(3))->method('flush');
     $this->em->expects($this->exactly(3))->method('clear');
     $this->em->expects($this->once())->method('commit');
     $this->em->expects($this->never())->method('rollback');
     $this->metadataCache->expects($this->once())->method('updateTimestamp')->with($this->testLocale);
     $this->persister->persist($this->testLocale, $this->testData);
     $this->assertSame($this->testData['validators']['key_1'], $existsTranslation->getValue());
     $this->assertNotSame($testValue, $existsTranslation->getValue());
 }
 public function testLoad()
 {
     $locale = 'fr';
     $domain = 'test';
     $metadataCache = $this->getMockBuilder('Oro\\Bundle\\TranslationBundle\\Translation\\DynamicTranslationMetadataCache')->disableOriginalConstructor()->getMock();
     $resource = new OrmTranslationResource($locale, $metadataCache);
     $value1 = new Translation();
     $value1->setKey('label1');
     $value1->setScope(Translation::SCOPE_SYSTEM);
     $value1->setLocale($locale);
     $value1->setDomain($domain);
     $value1->setValue('value1 (SYSTEM_SCOPE)');
     $value2 = new Translation();
     $value2->setKey('label1');
     $value2->setScope(Translation::SCOPE_UI);
     $value2->setLocale($locale);
     $value2->setDomain($domain);
     $value2->setValue('value1 (UI_SCOPE)');
     $value3 = new Translation();
     $value3->setKey('label3');
     $value3->setScope(Translation::SCOPE_UI);
     $value3->setLocale($locale);
     $value3->setDomain($domain);
     $value3->setValue('value3');
     $values = [$value1, $value2, $value3];
     $translationTable = 'translation_table';
     $repo = $this->getMockBuilder('Oro\\Bundle\\TranslationBundle\\Entity\\Repository\\TranslationRepository')->disableOriginalConstructor()->getMock();
     $repo->expects($this->once())->method('findValues')->with($locale, $domain)->willReturn($values);
     $metadata = $this->getMockBuilder('Doctrine\\ORM\\Mapping\\ClassMetadata')->disableOriginalConstructor()->getMock();
     $metadata->expects($this->once())->method('getTableName')->willReturn($translationTable);
     $this->em->expects($this->once())->method('getClassMetadata')->with(Translation::ENTITY_NAME)->willReturn($metadata);
     $this->em->expects($this->once())->method('getRepository')->with(Translation::ENTITY_NAME)->willReturn($repo);
     $schemaManager = $this->getMockBuilder('Doctrine\\DBAL\\Schema\\AbstractSchemaManager')->disableOriginalConstructor()->setMethods(['tablesExist'])->getMockForAbstractClass();
     $this->connection->expects($this->once())->method('connect');
     $this->connection->expects($this->once())->method('getSchemaManager')->willReturn($schemaManager);
     $schemaManager->expects($this->once())->method('tablesExist')->with($translationTable)->willReturn(true);
     /** @var MessageCatalogue $result */
     $result = $this->loader->load($resource, $locale, $domain);
     $this->assertInstanceOf('Symfony\\Component\\Translation\\MessageCatalogue', $result);
     $this->assertEquals($locale, $result->getLocale());
     $this->assertEquals('value1 (UI_SCOPE)', $result->get('label1', $domain));
     $this->assertEquals('value3', $result->get('label3', $domain));
 }
 /**
  * Find existing translation in database
  *
  * @param string $key
  * @param string $locale
  * @param string $domain
  * @param string $value
  *
  * @return Translation
  */
 private function getTranslationObject($key, $locale, $domain, $value)
 {
     $object = $this->repository->findValue($key, $locale, $domain);
     if (null === $object) {
         $object = new Translation();
         $object->setScope(Translation::SCOPE_SYSTEM);
         $object->setLocale($locale);
         $object->setDomain($domain);
         $object->setKey($key);
     }
     $object->setValue($value);
     return $object;
 }
 /**
  * Copies a translation value
  *
  * @param string $srcKey
  * @param string $destKey
  * @param string $domain
  * @return bool TRUE if a translation key exists and it was copied
  */
 public function copyValue($srcKey, $destKey, $domain = self::DEFAULT_DOMAIN)
 {
     /** @var Translation[] $srcTranslationValues */
     $srcTranslationValues = $this->findBy(['key' => $srcKey, 'domain' => $domain]);
     /** @var Translation[] $destTranslationValues */
     $destTranslationValues = $this->findBy(['key' => $destKey, 'domain' => $domain]);
     $result = false;
     foreach ($srcTranslationValues as $srcTranslationValue) {
         $destTranslationValue = null;
         foreach ($destTranslationValues as $val) {
             if ($val->getLocale() === $srcTranslationValue->getLocale()) {
                 $destTranslationValue = $val;
                 break;
             }
         }
         if (!$destTranslationValue) {
             $destTranslationValue = new Translation();
             $destTranslationValue->setKey($destKey)->setValue($srcTranslationValue->getValue())->setLocale($srcTranslationValue->getLocale())->setDomain($srcTranslationValue->getDomain())->setScope($srcTranslationValue->getScope());
         } else {
             $destTranslationValue->setValue($srcTranslationValue->getValue());
         }
         $this->getEntityManager()->persist($destTranslationValue);
         $result = true;
     }
     return $result;
 }
Exemple #5
0
 public function testGettersAndSetters()
 {
     $this->assertNull($this->translation->getId());
     $this->assertNull($this->translation->getKey());
     $this->assertNull($this->translation->getValue());
     $this->assertNull($this->translation->getLocale());
     $this->assertNull($this->translation->getDomain());
     $this->assertEquals(Translation::SCOPE_SYSTEM, $this->translation->getScope());
     $this->translation->setKey('test.key')->setValue('Test value')->setLocale('en')->setDomain('messages')->setScope(Translation::SCOPE_UI);
     $this->assertNull($this->translation->getId());
     $this->assertEquals('test.key', $this->translation->getKey());
     $this->assertEquals('Test value', $this->translation->getValue());
     $this->assertEquals('en', $this->translation->getLocale());
     $this->assertEquals('messages', $this->translation->getDomain());
     $this->assertEquals(Translation::SCOPE_UI, $this->translation->getScope());
 }