3 namespace Drupal\Tests\Core\StringTranslation;
5 use Drupal\Core\StringTranslation\PluralTranslatableMarkup;
6 use Drupal\Core\StringTranslation\TranslatableMarkup;
7 use Drupal\Core\StringTranslation\TranslationInterface;
8 use Drupal\Tests\UnitTestCase;
12 * @coversDefaultClass \Drupal\Core\StringTranslation\StringTranslationTrait
13 * @group StringTranslation
15 class StringTranslationTraitTest extends UnitTestCase {
18 * A reflection of self::$translation.
20 * @var \ReflectionClass
22 protected $reflection;
25 * The mock under test that uses StringTranslationTrait.
28 * @see PHPUnit_Framework_MockObject_Generator::getObjectForTrait()
30 protected $translation;
35 protected function setUp() {
36 $this->translation = $this->getObjectForTrait('\Drupal\Core\StringTranslation\StringTranslationTrait');
37 $mock = $this->prophesize(TranslationInterface::class);
38 $mock->translate(Argument::cetera())->shouldNotBeCalled();
39 $mock->formatPlural(Argument::cetera())->shouldNotBeCalled();
40 $mock->translateString(Argument::cetera())->will(function ($args) {
41 return $args[0]->getUntranslatedString();
43 $this->translation->setStringTranslation($mock->reveal());
44 $this->reflection = new \ReflectionClass(get_class($this->translation));
50 public function testT() {
51 $method = $this->reflection->getMethod('t');
52 $method->setAccessible(TRUE);
54 $result = $method->invoke($this->translation, 'something');
55 $this->assertInstanceOf(TranslatableMarkup::class, $result);
56 $this->assertEquals('something', $result);
60 * @covers ::formatPlural
62 public function testFormatPlural() {
63 $method = $this->reflection->getMethod('formatPlural');
64 $method->setAccessible(TRUE);
66 $result = $method->invoke($this->translation, 2, 'apple', 'apples');
67 $this->assertInstanceOf(PluralTranslatableMarkup::class, $result);
68 $this->assertEquals('apples', $result);