Skip to content

Commit

Permalink
#10378: Improved calculating version hash for the js-translation.json…
Browse files Browse the repository at this point in the history
… file
  • Loading branch information
ishakhsuvarov committed Aug 17, 2017
1 parent 5b1b749 commit cbca085
Show file tree
Hide file tree
Showing 5 changed files with 87 additions and 9 deletions.
2 changes: 2 additions & 0 deletions app/code/Magento/Translation/Block/Js.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ public function getTranslationFilePath()
}

/**
* Gets current version of the translation file.
*
* @return string
*/
public function getTranslationFileVersion()
Expand Down
2 changes: 2 additions & 0 deletions app/code/Magento/Translation/Model/FileManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,8 @@ public function updateTranslationFileContent($content)
}

/**
* Calculate translation file version hash.
*
* @return string
*/
public function getTranslationFileVersion()
Expand Down
22 changes: 13 additions & 9 deletions app/code/Magento/Translation/Model/Inline/File.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
10 changes: 10 additions & 0 deletions app/code/Magento/Translation/Test/Unit/Block/JsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}
}
60 changes: 60 additions & 0 deletions app/code/Magento/Translation/Test/Unit/Model/Inline/FileTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Translation\Test\Unit\Model\Inline;

class FileTest extends \PHPUnit\Framework\TestCase
{
/**
* @var \Magento\Translation\Model\Inline\File
*/
private $model;

/**
* @var \Magento\Framework\Translate\ResourceInterface|\PHPUnit_Framework_MockObject_MockObject
*/
private $translateResourceMock;

/**
* @var \Magento\Framework\Locale\ResolverInterface|\PHPUnit_Framework_MockObject_MockObject
*/
private $localeResolverMock;

/**
* @var \Magento\Framework\Serialize\Serializer\Json
*/
private $jsonSerializer;

protected function setUp()
{
$this->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()
);
}
}

0 comments on commit cbca085

Please sign in to comment.