Skip to content

Commit cbca085

Browse files
committed
#10378: Improved calculating version hash for the js-translation.json file
1 parent 5b1b749 commit cbca085

File tree

5 files changed

+87
-9
lines changed

5 files changed

+87
-9
lines changed

app/code/Magento/Translation/Block/Js.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ public function getTranslationFilePath()
7070
}
7171

7272
/**
73+
* Gets current version of the translation file.
74+
*
7375
* @return string
7476
*/
7577
public function getTranslationFileVersion()

app/code/Magento/Translation/Model/FileManager.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ public function updateTranslationFileContent($content)
122122
}
123123

124124
/**
125+
* Calculate translation file version hash.
126+
*
125127
* @return string
126128
*/
127129
public function getTranslationFileVersion()

app/code/Magento/Translation/Model/Inline/File.php

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,41 @@
55
*/
66
namespace Magento\Translation\Model\Inline;
77

8+
use Magento\Framework\Translate\ResourceInterface;
9+
use Magento\Framework\Locale\ResolverInterface;
10+
use Magento\Framework\Serialize\Serializer\Json;
11+
812
/**
913
* Prepares content of inline translations file.
1014
*/
1115
class File
1216
{
1317
/**
14-
* @var \Magento\Framework\Translate\ResourceInterface
18+
* @var ResourceInterface
1519
*/
1620
private $translateResource;
1721

1822
/**
19-
* @var \Magento\Framework\Locale\ResolverInterface
23+
* @var ResolverInterface
2024
*/
2125
private $localeResolver;
2226

2327
/**
24-
* @var \Magento\Framework\Serialize\Serializer\Json
28+
* @var Json
2529
*/
2630
private $jsonSerializer;
2731

2832
/**
2933
* Initialize dependencies
3034
*
31-
* @param \Magento\Framework\Translate\ResourceInterface $translateResource
32-
* @param \Magento\Framework\Locale\ResolverInterface $localeResolver
33-
* @param \Magento\Framework\Serialize\Serializer\Json $jsonSerializer
35+
* @param ResourceInterface $translateResource
36+
* @param ResolverInterface $localeResolver
37+
* @param Json $jsonSerializer
3438
*/
3539
public function __construct(
36-
\Magento\Framework\Translate\ResourceInterface $translateResource,
37-
\Magento\Framework\Locale\ResolverInterface $localeResolver,
38-
\Magento\Framework\Serialize\Serializer\Json $jsonSerializer
40+
ResourceInterface $translateResource,
41+
ResolverInterface $localeResolver,
42+
Json $jsonSerializer
3943
) {
4044
$this->translateResource = $translateResource;
4145
$this->localeResolver = $localeResolver;

app/code/Magento/Translation/Test/Unit/Block/JsTest.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,14 @@ public function testGetTranslationFilePath()
6565
->willReturn('frontend/Magento/luma/en_EN');
6666
$this->assertEquals('frontend/Magento/luma/en_EN', $this->model->getTranslationFilePath());
6767
}
68+
69+
public function testGetTranslationFileVersion()
70+
{
71+
$version = sha1('translationFile');
72+
73+
$this->fileManagerMock->expects($this->once())
74+
->method('getTranslationFileVersion')
75+
->willReturn($version);
76+
$this->assertEquals($version, $this->model->getTranslationFileVersion());
77+
}
6878
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Translation\Test\Unit\Model\Inline;
7+
8+
class FileTest extends \PHPUnit\Framework\TestCase
9+
{
10+
/**
11+
* @var \Magento\Translation\Model\Inline\File
12+
*/
13+
private $model;
14+
15+
/**
16+
* @var \Magento\Framework\Translate\ResourceInterface|\PHPUnit_Framework_MockObject_MockObject
17+
*/
18+
private $translateResourceMock;
19+
20+
/**
21+
* @var \Magento\Framework\Locale\ResolverInterface|\PHPUnit_Framework_MockObject_MockObject
22+
*/
23+
private $localeResolverMock;
24+
25+
/**
26+
* @var \Magento\Framework\Serialize\Serializer\Json
27+
*/
28+
private $jsonSerializer;
29+
30+
protected function setUp()
31+
{
32+
$this->translateResourceMock = $this->getMockBuilder(\Magento\Framework\Translate\ResourceInterface::class)
33+
->disableOriginalConstructor()
34+
->getMock();
35+
$this->localeResolverMock = $this->getMockBuilder(\Magento\Framework\Locale\ResolverInterface::class)
36+
->disableOriginalConstructor()
37+
->getMock();
38+
$this->jsonSerializer = new \Magento\Framework\Serialize\Serializer\Json();
39+
40+
$this->model = new \Magento\Translation\Model\Inline\File(
41+
$this->translateResourceMock,
42+
$this->localeResolverMock,
43+
$this->jsonSerializer
44+
);
45+
}
46+
47+
public function testGetTranslationFileContent()
48+
{
49+
$translations = ['string' => 'translatedString'];
50+
51+
$this->localeResolverMock->expects($this->atLeastOnce())->method('getLocale')->willReturn('en_US');
52+
$this->translateResourceMock->expects($this->atLeastOnce())->method('getTranslationArray')
53+
->willReturn($translations);
54+
55+
$this->assertEquals(
56+
$this->jsonSerializer->serialize($translations),
57+
$this->model->getTranslationFileContent()
58+
);
59+
}
60+
}

0 commit comments

Comments
 (0)