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; }