engelsystem/tests/Unit/Helpers/Translation/GettextTranslatorTest.php

65 lines
1.9 KiB
PHP

<?php
declare(strict_types=1);
namespace Engelsystem\Test\Unit\Helpers\Translation;
use Engelsystem\Helpers\Translation\GettextTranslator;
use Engelsystem\Helpers\Translation\TranslationNotFound;
use Engelsystem\Test\Unit\ServiceProviderTest;
use Gettext\Translation;
use Gettext\Translations;
class GettextTranslatorTest extends ServiceProviderTest
{
/**
* @covers \Engelsystem\Helpers\Translation\GettextTranslator::assertHasTranslation()
*/
public function testNoTranslation(): void
{
$translations = $this->getTranslations();
$translator = GettextTranslator::createFromTranslations($translations);
$this->assertEquals('Translation!', $translator->gettext('test.value'));
$this->expectException(TranslationNotFound::class);
$this->expectExceptionMessage('//foo.bar');
$translator->gettext('foo.bar');
}
/**
* @covers \Engelsystem\Helpers\Translation\GettextTranslator::translate()
*/
public function testTranslate(): void
{
$translations = $this->getTranslations();
$translator = GettextTranslator::createFromTranslations($translations);
$this->assertEquals('Translation!', $translator->gettext('test.value'));
}
/**
* @covers \Engelsystem\Helpers\Translation\GettextTranslator::translatePlural
*/
public function testTranslatePlural(): void
{
$translations = $this->getTranslations();
$translator = GettextTranslator::createFromTranslations($translations);
$this->assertEquals('Translations!', $translator->ngettext('test.value', 'test.value', 2));
}
protected function getTranslations(): Translations
{
$translation = Translation::create(null, 'test.value')
->translate('Translation!')
->translatePlural('Translations!');
$translations = Translations::create();
$translations->add($translation);
return $translations;
}
}