From c162bd7ae79189baae259c791de520df33aed417 Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 12 Dec 2018 22:57:24 +0300 Subject: [PATCH] Fixes #16910: Fix messages sorting on extract --- framework/CHANGELOG.md | 1 + .../console/controllers/MessageController.php | 4 +-- .../controllers/BaseMessageControllerTest.php | 29 +++++++++++++++++++ .../controllers/DbMessageControllerTest.php | 7 +++++ 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index 776693585a..9e5f8785ff 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -3,6 +3,7 @@ Yii Framework 2 Change Log 2.0.16 under development ------------------------ +- Bug #16910: Fix messages sorting on extract (Groonya) - Bug #15683: Fixed file as array uploading in MultipartFormDataParser (Groonya) - Bug #16822: Create config dir recursively in message/config (Groonya) diff --git a/framework/console/controllers/MessageController.php b/framework/console/controllers/MessageController.php index bd460ae8a7..5c6969f7eb 100644 --- a/framework/console/controllers/MessageController.php +++ b/framework/console/controllers/MessageController.php @@ -722,7 +722,7 @@ EOD; } } } - $merged = array_merge($todo, $merged); + $merged = array_merge($merged, $todo); if ($sort) { ksort($merged); } @@ -825,7 +825,7 @@ EOD; } } - $merged = array_merge($todos, $merged); + $merged = array_merge($merged, $todos); if ($sort) { ksort($merged); } diff --git a/tests/framework/console/controllers/BaseMessageControllerTest.php b/tests/framework/console/controllers/BaseMessageControllerTest.php index 28812bc602..fa74f9072c 100644 --- a/tests/framework/console/controllers/BaseMessageControllerTest.php +++ b/tests/framework/console/controllers/BaseMessageControllerTest.php @@ -592,6 +592,35 @@ abstract class BaseMessageControllerTest extends TestCase $this->assertArrayHasKey($positiveKey1, $messages); $this->assertArrayHasKey($positiveKey2, $messages); } + + public function testMessagesSorting() + { + $category = 'test_order_category'; + $key1 = 'key1'; + $key2 = 'key2'; + + $sourceFileContent = "Yii::t('{$category}', '{$key1}');Yii::t('{$category}', '{$key2}');"; + $this->createSourceFile($sourceFileContent); + + $this->saveMessages([$key2 => 'already translated'], $category); + + $this->saveConfigFile($this->getConfig([ + 'sort' => true, + ])); + $this->runMessageControllerAction('extract', [$this->configFileName]); + + $keys = array_keys($this->loadMessages($category)); + $this->assertEquals([$key1, $key2], $keys, "The order of messages should be '{$key1}, {$key2}' when sort equals true"); + + + $this->saveMessages([$key2 => 'already translated'], $category); + $this->saveConfigFile($this->getConfig([ + 'sort' => false, + ])); + $this->runMessageControllerAction('extract', [$this->configFileName]); + $keys = array_keys($this->loadMessages($category)); + $this->assertEquals([$key2, $key1], $keys, "The order of messages should be '{$key2}, {$key1}' when sort equals false and {$key1} was added later"); + } } class MessageControllerMock extends MessageController diff --git a/tests/framework/console/controllers/DbMessageControllerTest.php b/tests/framework/console/controllers/DbMessageControllerTest.php index 38ed128952..0f539e591a 100644 --- a/tests/framework/console/controllers/DbMessageControllerTest.php +++ b/tests/framework/console/controllers/DbMessageControllerTest.php @@ -186,4 +186,11 @@ class DbMessageControllerTest extends BaseMessageControllerTest $this->assertArrayHasKey($obsoleteMessage, $messages, "Obsolete message should not be removed. Command output:\n\n" . $out); $this->assertEquals($obsoleteTranslation, $messages[$obsoleteMessage], "Obsolete message was not marked properly. Command output:\n\n" . $out); } + + public function testMessagesSorting() + { + $this->markTestSkipped('There\'s no need to order messages for database'); + } + + }