/** * 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'); }
/** * 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; }