66 lines
1.9 KiB
PHP
66 lines
1.9 KiB
PHP
<?php
|
|
|
|
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()
|
|
{
|
|
$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()
|
|
{
|
|
$translations = $this->getTranslations();
|
|
$translator = GettextTranslator::createFromTranslations($translations);
|
|
|
|
$this->assertEquals('Translation!', $translator->gettext('test.value'));
|
|
}
|
|
|
|
/**
|
|
* @covers \Engelsystem\Helpers\Translation\GettextTranslator::translatePlural
|
|
*/
|
|
public function testTranslatePlural()
|
|
{
|
|
$translations = $this->getTranslations();
|
|
$translator = GettextTranslator::createFromTranslations($translations);
|
|
|
|
$this->assertEquals('Translations!', $translator->ngettext('test.value', 'test.value', 2));
|
|
}
|
|
|
|
/**
|
|
* @return Translations
|
|
*/
|
|
protected function getTranslations(): Translations
|
|
{
|
|
$translation = Translation::create(null, 'test.value')
|
|
->translate('Translation!')
|
|
->translatePlural('Translations!');
|
|
|
|
$translations = Translations::create();
|
|
$translations->add($translation);
|
|
|
|
return $translations;
|
|
}
|
|
}
|