Example #1
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();
 }
 /**
  * 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;
 }