104 lines
2.9 KiB
PHP
104 lines
2.9 KiB
PHP
<?php
|
|
namespace Aura\Intl;
|
|
|
|
use Yoast\PHPUnitPolyfills\TestCases\TestCase;
|
|
|
|
class TranslatorTest extends TestCase
|
|
{
|
|
protected $translator;
|
|
|
|
protected $factory;
|
|
|
|
protected $package;
|
|
|
|
protected $locale = 'en_US';
|
|
|
|
protected $messages = [
|
|
'TEXT_FOO' => 'Foo text',
|
|
'TEXT_BAR' => 'Bar text',
|
|
];
|
|
|
|
protected $formatter;
|
|
|
|
protected function newTranslator(TranslatorInterface $fallback = null)
|
|
{
|
|
return $this->factory->newInstance(
|
|
'en_US',
|
|
$this->package,
|
|
$this->formatter,
|
|
$fallback
|
|
);
|
|
}
|
|
|
|
protected function set_up()
|
|
{
|
|
$this->factory = new TranslatorFactory;
|
|
$this->formatter = new MockFormatter;
|
|
$this->package = new Package;
|
|
$this->package->setMessages($this->messages);
|
|
$this->translator = $this->newTranslator();
|
|
}
|
|
|
|
public function testTranslate()
|
|
{
|
|
// key exists
|
|
$expect = 'Foo text';
|
|
$actual = $this->translator->translate('TEXT_FOO');
|
|
$this->assertSame($expect, $actual);
|
|
|
|
// key exists, with tokens passed
|
|
$expect = 'Foo text';
|
|
$actual = $this->translator->translate('TEXT_FOO', ['foo' => 'bar']);
|
|
$this->assertSame($expect, $actual);
|
|
|
|
// key does not exist
|
|
$expect = 'TEXT_NONE';
|
|
$actual = $this->translator->translate('TEXT_NONE');
|
|
$this->assertSame($expect, $actual);
|
|
}
|
|
|
|
public function testTranslate_fallback()
|
|
{
|
|
$package = new Package;
|
|
$package->setMessages([
|
|
'TEXT_NONE' => 'Fallback text',
|
|
]);
|
|
// create fallback translator
|
|
$fallback = new Translator(
|
|
'en_US',
|
|
$package,
|
|
$this->formatter
|
|
);
|
|
|
|
// create primary translator with fallback
|
|
$translator = $this->newTranslator($fallback);
|
|
|
|
// key does not exist in primary, but exists in fallback
|
|
$expect = 'Fallback text';
|
|
$actual = $translator->translate('TEXT_NONE');
|
|
$this->assertSame($expect, $actual);
|
|
}
|
|
|
|
public function testTranslateMissingKey()
|
|
{
|
|
// using getMockBuilder so we can use with phpunit 4.8 or 5+ without warnings
|
|
$formatter = $this->getMockBuilder(get_class($this->formatter))
|
|
->disableOriginalConstructor()
|
|
->disableOriginalClone()
|
|
->disableArgumentCloning()
|
|
->getMock();
|
|
// create fallback translator
|
|
$translator = new Translator('en_US', new Package, $formatter);
|
|
|
|
$formatter->expects($this->once())
|
|
->method('format')
|
|
->with('en_US', 'TEXT', ['var' => 'SOME'])
|
|
->will($this->returnValue('FORMATTED'));
|
|
|
|
// key does not exist, with tokens passed
|
|
$expect = 'FORMATTED';
|
|
$actual = $translator->translate('TEXT', ['var' => 'SOME']);
|
|
$this->assertEquals($expect, $actual);
|
|
}
|
|
}
|