From b443b53919f50bd0176e7b67dfd1efc28276a770 Mon Sep 17 00:00:00 2001 From: Igor Scheller Date: Thu, 18 Oct 2018 23:34:18 +0200 Subject: Translation: added pluralization support --- tests/Unit/Helpers/TranslatorTest.php | 43 +++++++++++++++++----- tests/Unit/HelpersTest.php | 20 ++++++++++ .../Renderer/Twig/Extensions/TranslationTest.php | 1 + 3 files changed, 54 insertions(+), 10 deletions(-) (limited to 'tests/Unit') diff --git a/tests/Unit/Helpers/TranslatorTest.php b/tests/Unit/Helpers/TranslatorTest.php index 396d2b65..34050e42 100644 --- a/tests/Unit/Helpers/TranslatorTest.php +++ b/tests/Unit/Helpers/TranslatorTest.php @@ -10,12 +10,12 @@ use stdClass; class TranslatorTest extends ServiceProviderTest { /** - * @covers \Engelsystem\Helpers\Translator::__construct() - * @covers \Engelsystem\Helpers\Translator::setLocale() - * @covers \Engelsystem\Helpers\Translator::setLocales() - * @covers \Engelsystem\Helpers\Translator::getLocale() - * @covers \Engelsystem\Helpers\Translator::getLocales() - * @covers \Engelsystem\Helpers\Translator::hasLocale() + * @covers \Engelsystem\Helpers\Translator::__construct + * @covers \Engelsystem\Helpers\Translator::setLocale + * @covers \Engelsystem\Helpers\Translator::setLocales + * @covers \Engelsystem\Helpers\Translator::getLocale + * @covers \Engelsystem\Helpers\Translator::getLocales + * @covers \Engelsystem\Helpers\Translator::hasLocale */ public function testInit() { @@ -47,7 +47,8 @@ class TranslatorTest extends ServiceProviderTest } /** - * @covers \Engelsystem\Helpers\Translator::translate() + * @covers \Engelsystem\Helpers\Translator::translate + * @covers \Engelsystem\Helpers\Translator::replaceText */ public function testTranslate() { @@ -56,14 +57,36 @@ class TranslatorTest extends ServiceProviderTest ->setConstructorArgs(['de_DE.UTF-8', ['de_DE.UTF-8' => 'Deutsch']]) ->setMethods(['translateGettext']) ->getMock(); - $translator->expects($this->once()) + $translator->expects($this->exactly(2)) ->method('translateGettext') - ->with('My favourite number is %u!') - ->willReturn('Meine Lieblingszahl ist die %u!'); + ->withConsecutive(['Hello!'], ['My favourite number is %u!']) + ->willReturnOnConsecutiveCalls('Hallo!', 'Meine Lieblingszahl ist die %u!'); + + $return = $translator->translate('Hello!'); + $this->assertEquals('Hallo!', $return); $return = $translator->translate('My favourite number is %u!', [3]); $this->assertEquals('Meine Lieblingszahl ist die 3!', $return); } + + /** + * @covers \Engelsystem\Helpers\Translator::translatePlural + */ + public function testTranslatePlural() + { + /** @var Translator|MockObject $translator */ + $translator = $this->getMockBuilder(Translator::class) + ->setConstructorArgs(['de_DE.UTF-8', ['de_DE.UTF-8' => 'Deutsch']]) + ->setMethods(['translateGettextPlural']) + ->getMock(); + $translator->expects($this->once()) + ->method('translateGettextPlural') + ->with('%s apple', '%s apples', 2) + ->willReturn('2 Äpfel'); + + $return = $translator->translatePlural('%s apple', '%s apples', 2, [2]); + $this->assertEquals('2 Äpfel', $return); + } } diff --git a/tests/Unit/HelpersTest.php b/tests/Unit/HelpersTest.php index b9cedd30..b36abc64 100644 --- a/tests/Unit/HelpersTest.php +++ b/tests/Unit/HelpersTest.php @@ -218,6 +218,26 @@ class HelpersTest extends TestCase $this->assertEquals('Lorem foo Ipsum', __('Lorem %s Ipsum', ['foo'])); } + /** + * @covers \_e + */ + public function testTranslatePlural() + { + /** @var Translator|MockObject $translator */ + $translator = $this->getMockBuilder(Translator::class) + ->disableOriginalConstructor() + ->getMock(); + + $this->getAppMock('translator', $translator); + + $translator->expects($this->once()) + ->method('translatePlural') + ->with('One: %u', 'Multiple: %u', 4, [4]) + ->willReturn('Multiple: 4'); + + $this->assertEquals('Multiple: 4', _e('One: %u', 'Multiple: %u', 4, [4])); + } + /** * @covers \url */ diff --git a/tests/Unit/Renderer/Twig/Extensions/TranslationTest.php b/tests/Unit/Renderer/Twig/Extensions/TranslationTest.php index f1548604..18705683 100644 --- a/tests/Unit/Renderer/Twig/Extensions/TranslationTest.php +++ b/tests/Unit/Renderer/Twig/Extensions/TranslationTest.php @@ -40,6 +40,7 @@ class TranslationTest extends ExtensionTest $functions = $extension->getFunctions(); $this->assertExtensionExists('__', [$translator, 'translate'], $functions); + $this->assertExtensionExists('_e', [$translator, 'translatePlural'], $functions); } /** -- cgit v1.2.3-54-g00ecf