/**
  * Converts arrays to documents.
  *
  * @param array $translations
  *
  * @return array
  */
 private function toDocumentArray(array $translations)
 {
     $out = [];
     foreach ($translations as $path => $domains) {
         foreach ($domains as $domain => $transMeta) {
             foreach ($transMeta['translations'] as $key => $keyTrans) {
                 /** @var Translation $document */
                 $document = new Translation();
                 $document->setDomain($domain);
                 $document->setKey($key);
                 $document->setPath($path);
                 $document->setFormat($transMeta['format']);
                 foreach ($keyTrans as $locale => $trans) {
                     $message = new Message();
                     $message->setLocale($locale);
                     $message->setMessage($trans);
                     $document->addMessage($message);
                 }
                 $out[] = $document;
             }
         }
     }
     return $out;
 }
Ejemplo n.º 2
0
 /**
  * Tests if correct data array is formed.
  */
 public function testGetExportData()
 {
     $translation = new Translation();
     $translation->setDomain('foo_domain');
     $translation->setKey('foo_key');
     $translation->setPath('vfs://root/Resources/translations');
     $translation->setFormat('yml');
     $message = new Message();
     $message->setLocale('foo_locale');
     $message->setMessage('foo_message');
     $message->setStatus(Message::DIRTY);
     $translation->addMessage($message);
     $storageMock = $this->getStorageMock(['read', 'write']);
     $storageMock->expects($this->once())->method('read')->willReturn([$translation]);
     $storageMock->expects($this->once())->method('write');
     $exporter = $this->getExporterMock(['export']);
     $exporter->expects($this->once())->method('export')->with('vfs://root/Resources/translations/foo_domain.foo_locale.yml', ['foo_key' => 'foo_message']);
     $filesystemMock = $this->getFilesystemMock();
     $filesystemMock->expects($this->once())->method('touch')->with('vfs://root/Resources/translations/foo_domain.foo_locale.yml');
     /** @var Export|\PHPUnit_Framework_MockObject_MockObject $exportService */
     $exportService = $this->getMockBuilder('ONGR\\TranslationsBundle\\Service\\Export')->setConstructorArgs([$this->getLoadersContainerMock(), $storageMock, $exporter, vfsStream::url('root')])->setMethods(['getFilesystem'])->getMock();
     $exportService->expects($this->any())->method('getFilesystem')->willReturn($filesystemMock);
     $exportService->export();
 }
 /**
  * Tests if document JSON serialization is correct.
  */
 public function testSerialize()
 {
     $date = new \DateTime();
     $dateString = $date->format('Y-m-d H:i:s');
     $translation = new Translation();
     $translation->setCreatedAt($date);
     $translation->setUpdatedAt($date);
     $translation->setDomain('foo_domain');
     $message = new Message();
     $message->setLocale('en');
     $message->setMessage('foo_message');
     $message->setCreatedAt($date);
     $message->setUpdatedAt($date);
     $translation->addMessage($message);
     $expectedJson = '{"id":"10b9bf5859bce4052de0dac6c01324679d21cad0","domain":"foo_domain",' . '"tags":[],"messages":{"en":{"message":"foo_message","status":"fresh",' . "\"createdAt\":\"{$dateString}\",\"updatedAt\":\"{$dateString}\"}},\"key\":null,\"path\":null," . "\"format\":null,\"createdAt\":\"{$dateString}\",\"updatedAt\":\"{$dateString}\"}";
     $this->assertEquals($expectedJson, json_encode($translation), 'JSON strings should be equal');
 }