From d0687d1d68dee57f217495be062e8603b7ed0a59 Mon Sep 17 00:00:00 2001 From: Andrey Legayev Date: Wed, 2 Oct 2019 17:10:51 +0300 Subject: [PATCH 1/2] Static Content Deploy - Sort JS Translations to have them in the same order on every build We've faced an issue on BitBucket Pipelines: every build had own unique order of JS translations. We couldn't see the real diff between builds because of it. Simple alphabetical sorting of translations resolves this issue. --- app/code/Magento/Translation/Model/Js/DataProvider.php | 2 ++ .../Translation/Test/Unit/Model/Js/DataProviderTest.php | 9 ++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/code/Magento/Translation/Model/Js/DataProvider.php b/app/code/Magento/Translation/Model/Js/DataProvider.php index 7aad7c765bcd5..ae388239bc538 100644 --- a/app/code/Magento/Translation/Model/Js/DataProvider.php +++ b/app/code/Magento/Translation/Model/Js/DataProvider.php @@ -120,6 +120,8 @@ public function getData($themePath) } } + ksort($dictionary); + return $dictionary; } diff --git a/app/code/Magento/Translation/Test/Unit/Model/Js/DataProviderTest.php b/app/code/Magento/Translation/Test/Unit/Model/Js/DataProviderTest.php index 021709bdda1f6..3ebbaf3f6721d 100644 --- a/app/code/Magento/Translation/Test/Unit/Model/Js/DataProviderTest.php +++ b/app/code/Magento/Translation/Test/Unit/Model/Js/DataProviderTest.php @@ -90,7 +90,7 @@ public function testGetData() $themePath = 'blank'; $areaCode = 'adminhtml'; - $filePaths = [['path1'], ['path2'], ['path3'], ['path4']]; + $filePaths = [['path1'], ['path2'], ['path4'], ['path3']]; $jsFilesMap = [ ['base', $themePath, '*', '*', [$filePaths[0]]], @@ -111,8 +111,8 @@ public function testGetData() $contentsMap = [ 'content1$.mage.__("hello1")content1', 'content2$.mage.__("hello2")content2', + 'content2$.mage.__("hello4")content4', // this value should be last after running data provider 'content2$.mage.__("hello3")content3', - 'content2$.mage.__("hello4")content4' ]; $translateMap = [ @@ -147,7 +147,10 @@ public function testGetData() ->method('render') ->willReturnMap($translateMap); - $this->assertEquals($expectedResult, $this->model->getData($themePath)); + $actualResult = $this->model->getData($themePath); + $this->assertEquals($expectedResult, $actualResult); + $this->assertEquals(json_encode($expectedResult), json_encode($actualResult), + "Translations should be sorted by key"); } /** From b52dc0cf8ae48ce91fbd6d9da2f9a45aa4c5961a Mon Sep 17 00:00:00 2001 From: Andrey Legayev Date: Wed, 2 Oct 2019 17:41:34 +0300 Subject: [PATCH 2/2] Fix code style --- .../Translation/Test/Unit/Model/Js/DataProviderTest.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Translation/Test/Unit/Model/Js/DataProviderTest.php b/app/code/Magento/Translation/Test/Unit/Model/Js/DataProviderTest.php index 3ebbaf3f6721d..b5bfbbc29a603 100644 --- a/app/code/Magento/Translation/Test/Unit/Model/Js/DataProviderTest.php +++ b/app/code/Magento/Translation/Test/Unit/Model/Js/DataProviderTest.php @@ -149,8 +149,11 @@ public function testGetData() $actualResult = $this->model->getData($themePath); $this->assertEquals($expectedResult, $actualResult); - $this->assertEquals(json_encode($expectedResult), json_encode($actualResult), - "Translations should be sorted by key"); + $this->assertEquals( + json_encode($expectedResult), + json_encode($actualResult), + "Translations should be sorted by key" + ); } /**