From cbca08573439fefcc4764de2d0b2cfa306830ce3 Mon Sep 17 00:00:00 2001 From: Ievgen Shakhsuvarov Date: Thu, 17 Aug 2017 17:01:38 +0300 Subject: [PATCH] magento/magento2#10378: Improved calculating version hash for the js-translation.json file --- app/code/Magento/Translation/Block/Js.php | 2 + .../Magento/Translation/Model/FileManager.php | 2 + .../Magento/Translation/Model/Inline/File.php | 22 ++++--- .../Translation/Test/Unit/Block/JsTest.php | 10 ++++ .../Test/Unit/Model/Inline/FileTest.php | 60 +++++++++++++++++++ 5 files changed, 87 insertions(+), 9 deletions(-) create mode 100644 app/code/Magento/Translation/Test/Unit/Model/Inline/FileTest.php diff --git a/app/code/Magento/Translation/Block/Js.php b/app/code/Magento/Translation/Block/Js.php index 2198ed5cf6b86..d4d627d19393a 100644 --- a/app/code/Magento/Translation/Block/Js.php +++ b/app/code/Magento/Translation/Block/Js.php @@ -70,6 +70,8 @@ public function getTranslationFilePath() } /** + * Gets current version of the translation file. + * * @return string */ public function getTranslationFileVersion() diff --git a/app/code/Magento/Translation/Model/FileManager.php b/app/code/Magento/Translation/Model/FileManager.php index 820284c2d8b1e..b4a541f2579c0 100644 --- a/app/code/Magento/Translation/Model/FileManager.php +++ b/app/code/Magento/Translation/Model/FileManager.php @@ -122,6 +122,8 @@ public function updateTranslationFileContent($content) } /** + * Calculate translation file version hash. + * * @return string */ public function getTranslationFileVersion() diff --git a/app/code/Magento/Translation/Model/Inline/File.php b/app/code/Magento/Translation/Model/Inline/File.php index c859bfa34658d..678ceeb1aeec2 100644 --- a/app/code/Magento/Translation/Model/Inline/File.php +++ b/app/code/Magento/Translation/Model/Inline/File.php @@ -5,37 +5,41 @@ */ namespace Magento\Translation\Model\Inline; +use Magento\Framework\Translate\ResourceInterface; +use Magento\Framework\Locale\ResolverInterface; +use Magento\Framework\Serialize\Serializer\Json; + /** * Prepares content of inline translations file. */ class File { /** - * @var \Magento\Framework\Translate\ResourceInterface + * @var ResourceInterface */ private $translateResource; /** - * @var \Magento\Framework\Locale\ResolverInterface + * @var ResolverInterface */ private $localeResolver; /** - * @var \Magento\Framework\Serialize\Serializer\Json + * @var Json */ private $jsonSerializer; /** * Initialize dependencies * - * @param \Magento\Framework\Translate\ResourceInterface $translateResource - * @param \Magento\Framework\Locale\ResolverInterface $localeResolver - * @param \Magento\Framework\Serialize\Serializer\Json $jsonSerializer + * @param ResourceInterface $translateResource + * @param ResolverInterface $localeResolver + * @param Json $jsonSerializer */ public function __construct( - \Magento\Framework\Translate\ResourceInterface $translateResource, - \Magento\Framework\Locale\ResolverInterface $localeResolver, - \Magento\Framework\Serialize\Serializer\Json $jsonSerializer + ResourceInterface $translateResource, + ResolverInterface $localeResolver, + Json $jsonSerializer ) { $this->translateResource = $translateResource; $this->localeResolver = $localeResolver; diff --git a/app/code/Magento/Translation/Test/Unit/Block/JsTest.php b/app/code/Magento/Translation/Test/Unit/Block/JsTest.php index aa6587c75b6a4..5dc0e6fe5dcaa 100644 --- a/app/code/Magento/Translation/Test/Unit/Block/JsTest.php +++ b/app/code/Magento/Translation/Test/Unit/Block/JsTest.php @@ -65,4 +65,14 @@ public function testGetTranslationFilePath() ->willReturn('frontend/Magento/luma/en_EN'); $this->assertEquals('frontend/Magento/luma/en_EN', $this->model->getTranslationFilePath()); } + + public function testGetTranslationFileVersion() + { + $version = sha1('translationFile'); + + $this->fileManagerMock->expects($this->once()) + ->method('getTranslationFileVersion') + ->willReturn($version); + $this->assertEquals($version, $this->model->getTranslationFileVersion()); + } } diff --git a/app/code/Magento/Translation/Test/Unit/Model/Inline/FileTest.php b/app/code/Magento/Translation/Test/Unit/Model/Inline/FileTest.php new file mode 100644 index 0000000000000..5af8fbdb01f39 --- /dev/null +++ b/app/code/Magento/Translation/Test/Unit/Model/Inline/FileTest.php @@ -0,0 +1,60 @@ +translateResourceMock = $this->getMockBuilder(\Magento\Framework\Translate\ResourceInterface::class) + ->disableOriginalConstructor() + ->getMock(); + $this->localeResolverMock = $this->getMockBuilder(\Magento\Framework\Locale\ResolverInterface::class) + ->disableOriginalConstructor() + ->getMock(); + $this->jsonSerializer = new \Magento\Framework\Serialize\Serializer\Json(); + + $this->model = new \Magento\Translation\Model\Inline\File( + $this->translateResourceMock, + $this->localeResolverMock, + $this->jsonSerializer + ); + } + + public function testGetTranslationFileContent() + { + $translations = ['string' => 'translatedString']; + + $this->localeResolverMock->expects($this->atLeastOnce())->method('getLocale')->willReturn('en_US'); + $this->translateResourceMock->expects($this->atLeastOnce())->method('getTranslationArray') + ->willReturn($translations); + + $this->assertEquals( + $this->jsonSerializer->serialize($translations), + $this->model->getTranslationFileContent() + ); + } +}